add new CI step: "setup upstream remote"
Signed-off-by: onur-ozkan <work@onurozkan.dev>
This commit is contained in:
parent
33ac202904
commit
4454fa998c
3
.github/workflows/ci.yml
vendored
3
.github/workflows/ci.yml
vendored
@ -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
|
||||||
|
|
||||||
|
24
src/ci/scripts/setup-upstream-remote.sh
Executable file
24
src/ci/scripts/setup-upstream-remote.sh
Executable 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
|
@ -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"
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user