add new CI step: "setup upstream remote"

Signed-off-by: onur-ozkan <work@onurozkan.dev>
This commit is contained in:
onur-ozkan 2024-10-12 07:41:39 +03:00
parent 33ac202904
commit 4454fa998c
3 changed files with 39 additions and 0 deletions

View File

@ -122,6 +122,9 @@ jobs:
# which then uses log commands to actually set them. # which then uses log commands to actually set them.
EXTRA_VARIABLES: ${{ toJson(matrix.env) }} EXTRA_VARIABLES: ${{ toJson(matrix.env) }}
- name: setup upstream remote
run: src/ci/scripts/setup-upstream-remote.sh
- name: ensure the channel matches the target branch - name: ensure the channel matches the target branch
run: src/ci/scripts/verify-channel.sh run: src/ci/scripts/verify-channel.sh

View File

@ -0,0 +1,24 @@
#!/bin/bash
# In CI environments, bootstrap is forced to use the remote upstream based
# on "git_repository" and "nightly_branch" values from src/stage0 file.
# This script configures the remote as it may not exist by default.
set -euo pipefail
IFS=$'\n\t'
ci_dir=$(cd $(dirname $0) && pwd)/..
source "$ci_dir/shared.sh"
git_repository=$(parse_stage0_file_by_key "git_repository")
nightly_branch=$(parse_stage0_file_by_key "nightly_branch")
# Configure "rust-lang/rust" upstream remote only when it's not origin.
if [ -z "$(git config remote.origin.url | grep $git_repository)" ]; then
echo "Configuring https://github.com/$git_repository remote as upstream."
git remote add upstream "https://github.com/$git_repository"
REMOTE_NAME="upstream"
else
REMOTE_NAME="origin"
fi
git fetch $REMOTE_NAME $nightly_branch

View File

@ -136,3 +136,15 @@ function releaseChannel {
echo $RUST_CI_OVERRIDE_RELEASE_CHANNEL echo $RUST_CI_OVERRIDE_RELEASE_CHANNEL
fi fi
} }
# Parse values from src/stage0 file by key
function parse_stage0_file_by_key {
local key="$1"
local file="$ci_dir/../stage0"
local value=$(awk -F= '{a[$1]=$2} END {print(a["'$key'"])}' $file)
if [ -z "$value" ]; then
echo "ERROR: Key '$key' not found in '$file'."
exit 1
fi
echo "$value"
}