Skip to content

Commit 1aa5675

Browse files
committed
add new CI step: "setup upstream remote"
Signed-off-by: onur-ozkan <work@onurozkan.dev>
1 parent 33ac202 commit 1aa5675

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

.github/workflows/ci.yml

+3
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ jobs:
122122
# which then uses log commands to actually set them.
123123
EXTRA_VARIABLES: ${{ toJson(matrix.env) }}
124124

125+
- name: setup upstream remote
126+
run: src/ci/scripts/setup-upstream-remote.sh
127+
125128
- name: ensure the channel matches the target branch
126129
run: src/ci/scripts/verify-channel.sh
127130

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/bash
2+
# Prepares upstream master branch to allow bootstrap to accurately
3+
# track modified files in CI environments.
4+
5+
set -euo pipefail
6+
IFS=$'\n\t'
7+
8+
ci_dir=$(cd $(dirname $0) && pwd)/..
9+
source "$ci_dir/shared.sh"
10+
11+
git_repository=$(parse_stage0_file_by_key "git_repository")
12+
nightly_branch=$(parse_stage0_file_by_key "nightly_branch")
13+
14+
# Configure "rust-lang/rust" upstream remote only when it's not origin.
15+
if [ -z "$(git config remote.origin.url | grep $git_repository)" ]; then
16+
echo "Configuring https://github.com/$git_repository remote as upstream."
17+
git remote add upstream "https://github.com/$git_repository"
18+
REMOTE_NAME="upstream"
19+
else
20+
REMOTE_NAME="origin"
21+
fi
22+
23+
git fetch $REMOTE_NAME $nightly_branch

src/ci/shared.sh

+12
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,15 @@ function releaseChannel {
136136
echo $RUST_CI_OVERRIDE_RELEASE_CHANNEL
137137
fi
138138
}
139+
140+
# Parse values from src/stage0 file by key
141+
function parse_stage0_file_by_key {
142+
local key="$1"
143+
local file="$ci_dir/../stage0"
144+
local value=$(awk -F= '{a[$1]=$2} END {print(a["'$key'"])}' $file)
145+
if [ -z "$value" ]; then
146+
echo "ERROR: Key '$key' not found in '$file'."
147+
exit 1
148+
fi
149+
echo "$value"
150+
}

0 commit comments

Comments
 (0)