Skip to content

Commit

Permalink
Auto merge of rust-lang#133912 - MarcoIeni:test-codebuild-runner, r=<…
Browse files Browse the repository at this point in the history
…try>

[experiment] test code build runner

try-job: x86_64-gnu
  • Loading branch information
bors committed Dec 13, 2024
2 parents 4847d6a + 8f92115 commit 3d87ed6
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,10 @@ jobs:
- name: install awscli
run: src/ci/scripts/install-awscli.sh

- if: contains(matrix.os, 'codebuild-ubuntu')
name: Install sotftware for codebuild
run: chmod +x src/ci/scripts/ubuntu-codebuild.sh && ./src/ci/scripts/ubuntu-codebuild.sh

- name: install sccache
run: src/ci/scripts/install-sccache.sh

Expand Down Expand Up @@ -174,6 +178,8 @@ jobs:

- name: enable ipv6 on Docker
run: src/ci/scripts/enable-docker-ipv6.sh
# Don't run on codebuild because systemctl is not available
if: ${{ !contains(matrix.os, 'codebuild-ubuntu') }}

# Disable automatic line ending conversion (again). On Windows, when we're
# installing dependencies, something switches the git configuration directory or
Expand Down
6 changes: 5 additions & 1 deletion src/ci/docker/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -291,8 +291,12 @@ else
# LOCAL_USER_ID will map to a different subuid range on the host.
# The "keep-id" mode maps the current UID directly into the container.
args="$args --env NO_CHANGE_USER=1 --userns=keep-id"
else
elif [[ "$id" != 0 ]]; then
args="$args --env LOCAL_USER_ID=$id"
else
# If we're running as root, we don't want to run the container as root,
# so we set id `1001` instead of `0`.
args="$args --env LOCAL_USER_ID=1001"
fi
fi

Expand Down
17 changes: 17 additions & 0 deletions src/ci/github-actions/calculate-job-matrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,21 @@ def format_run_type(run_type: WorkflowRunType) -> str:
raise AssertionError()


# Add new function before main:
def substitute_github_vars(jobs: list) -> list:
"""Replace GitHub context variables with environment variables in job configs."""
for job in jobs:
if "os" in job:
job["os"] = job["os"].replace(
"${{ github.run_id }}",
os.environ["GITHUB_RUN_ID"]
).replace(
"${{ github.run_attempt }}",
os.environ["GITHUB_RUN_ATTEMPT"]
)
return jobs


if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)

Expand All @@ -199,6 +214,8 @@ def format_run_type(run_type: WorkflowRunType) -> str:
if run_type is not None:
jobs = calculate_jobs(run_type, data)
jobs = skip_jobs(jobs, channel)
jobs = substitute_github_vars(jobs)


if not jobs:
raise Exception("Scheduled job list is empty, this is an error")
Expand Down
6 changes: 5 additions & 1 deletion src/ci/github-actions/jobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ runners:
- &job-linux-8c-aarch64
os: ubuntu-22.04-arm64-8core-32gb

- &job-linux-8c-codebuild
os: codebuild-ubuntu-22-8c-${{ github.run_id }}-${{ github.run_attempt }}
<<: *base-job

envs:
env-x86_64-apple-tests: &env-x86_64-apple-tests
SCRIPT: ./x.py --stage 2 test --skip tests/ui --skip tests/rustdoc -- --exact
Expand Down Expand Up @@ -284,7 +288,7 @@ auto:
<<: *job-linux-4c

- image: x86_64-gnu
<<: *job-linux-4c
<<: *job-linux-8c-codebuild

# This job ensures commits landing on nightly still pass the full
# test suite on the stable channel. There are some UI tests that
Expand Down
5 changes: 5 additions & 0 deletions src/ci/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@

set -e

echo "Running inside src/ci/run.sh script"

if [ -n "$CI_JOB_NAME" ]; then
echo "[CI_JOB_NAME=$CI_JOB_NAME]"
fi

if [ "$NO_CHANGE_USER" = "" ]; then
if [ "$LOCAL_USER_ID" != "" ]; then
echo "Starting with UID: $LOCAL_USER_ID"
id -u user &>/dev/null || useradd --shell /bin/bash -u $LOCAL_USER_ID -o -c "" -m user
export HOME=/home/user
unset LOCAL_USER_ID
Expand All @@ -21,7 +24,9 @@ if [ "$NO_CHANGE_USER" = "" ]; then
# For NO_CHANGE_USER done in the small number of Dockerfiles affected.
echo -e '[safe]\n\tdirectory = *' > /home/user/.gitconfig

echo "Switching to user"
exec su --preserve-environment -c "env PATH=$PATH \"$0\"" user
echo "whoami: $(whoami)"
fi
fi

Expand Down
6 changes: 6 additions & 0 deletions src/ci/scripts/enable-docker-ipv6.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ IFS=$'\n\t'

source "$(cd "$(dirname "$0")" && pwd)/../shared.sh"

# Print docker version
docker --version
lsb_release -a
echo "is docker active"
systemctl is-active docker

if isLinux; then
sudo mkdir -p /etc/docker
echo '{"ipv6":true,"fixed-cidr-v6":"fd9a:8454:6789:13f7::/64"}' \
Expand Down
2 changes: 2 additions & 0 deletions src/ci/scripts/run-build-from-ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ echo "::add-matcher::src/ci/github-actions/problem_matchers.json"
# the environment
rustup self uninstall -y || true
if [ -z "${IMAGE+x}" ]; then
echo "Running ci/run.sh"
src/ci/run.sh
else
echo "Running docker/run.sh with image ${IMAGE}"
src/ci/docker/run.sh "${IMAGE}"
fi
4 changes: 4 additions & 0 deletions src/ci/scripts/ubuntu-codebuild.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

# apt-get update
# apt-get install -y docker-buildx

0 comments on commit 3d87ed6

Please sign in to comment.