Schedule Daily #81
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Schedule Daily | |
on: | |
schedule: | |
- cron: "0 1 * * *" | |
workflow_dispatch: | |
env: | |
AWS_SHARED_CREDENTIALS_CONTENT: ${{ secrets.AWS_SHARED_CREDENTIALS_FILE }} | |
BAZEL_STARTUP_ARGS: "--output_base=/var/tmp/bazel-output/" | |
CI_COMMIT_SHA: ${{ github.sha }} | |
CI_COMMIT_REF_PROTECTED: ${{ github.ref_protected }} | |
CI_JOB_NAME: ${{ github.job }} | |
CI_JOB_ID: ${{ github.job }} # github does not expose this variable https://github.com/orgs/community/discussions/8945 | |
CI_JOB_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
CI_PIPELINE_SOURCE: ${{ github.event_name }} | |
CI_PROJECT_DIR: ${{ github.workspace }} | |
CI_MERGE_REQUEST_TARGET_BRANCH_NAME: ${{ github.event.pull_request.base.ref }} | |
ROOT_PIPELINE_ID: ${{ github.run_id }} | |
DOCKER_HUB_USER: ${{ secrets.DOCKER_HUB_USER }} | |
DOCKER_HUB_PASSWORD_RO: ${{ secrets.DOCKER_HUB_PASSWORD_RO }} | |
BUILDEVENT_APIKEY: ${{ secrets.HONEYCOMB_API_TOKEN }} | |
BUILDEVENT_DATASET: "github-ci-dfinity" | |
jobs: | |
cut-release-candidate: | |
name: Cut RC | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master') | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
token: ${{ secrets.IDX_PUSH_TO_PR }} | |
- name: Cut Release Candidate | |
shell: bash | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "IDX GitLab Automation" | |
RC_BRANCH_NAME="rc--$(date '+%Y-%m-%d_%H-%M')--github" | |
git switch --force-create "$RC_BRANCH_NAME" HEAD | |
git push --force --set-upstream origin "$RC_BRANCH_NAME" | |
rust-benchmarks: | |
name: Bazel Run Rust Benchmarks | |
runs-on: | |
group: dind-large | |
container: | |
image: ghcr.io/dfinity/ic-build@sha256:5bd0f059ad6e21966e9c644516b6ecd52d5ed44f1b18a76b91b59740a9d639a2 | |
timeout-minutes: 720 # 12 hours | |
# TODO: disable in GitLab before enabling here | |
if: ${{ vars.RUN_CI == 'true' && false }} | |
strategy: | |
matrix: | |
targets: ["//rs/crypto/...", "//rs/state_manager/..."] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Before script | |
id: before-script | |
shell: bash | |
run: ./gitlab-ci/src/ci-scripts/before-script.sh | |
- name: Run Rust Benchmarks | |
id: rust-benchmarks | |
shell: bash | |
run: | | |
./gitlab-ci/src/ci-scripts/rust-benchmarks.sh | |
env: | |
BAZEL_CI_CONFIG: "--config=ci --repository_cache=/cache/bazel" | |
BAZEL_COMMAND: "run" | |
BAZEL_STARTUP_ARGS: "--output_base=/var/tmp/bazel-output/" | |
RUSTFLAGS: "--remap-path-prefix=${CI_PROJECT_DIR}=/ic" | |
RUST_BACKTRACE: "full" | |
TARGETS: ${{ matrix.targets }} | |
bazel-test-bare-metal: | |
name: Bazel Test Bare Metal | |
runs-on: | |
group: dind-large | |
container: | |
image: ghcr.io/dfinity/ic-build@sha256:5bd0f059ad6e21966e9c644516b6ecd52d5ed44f1b18a76b91b59740a9d639a2 | |
timeout-minutes: 120 | |
# TODO: enable when zh1 is active again | |
if: ${{ vars.RUN_CI == 'true' && false }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Before script | |
id: before-script | |
shell: bash | |
run: ./gitlab-ci/src/ci-scripts/before-script.sh | |
- name: Run Bazel Launch Bare Metal | |
shell: bash | |
run: | | |
echo "$ZH2_DLL01_CSV_SECRETS" > file1 | |
echo "$ZH2_FILE_SHARE_KEY" > file2 && chmod 400 file2 | |
# shellcheck disable=SC2046,SC2086 | |
bazel ${BAZEL_STARTUP_ARGS} run ${BAZEL_CI_CONFIG} \ | |
//ic-os/setupos/envs/dev:launch_bare_metal -- \ | |
--config_path "$(realpath ./ic-os/dev-tools/bare_metal_deployment/zh2-dll01.yaml)" \ | |
--csv_filename "$(realpath file1)" \ | |
--file_share_ssh_key "$(realpath file2)" \ | |
--file_share_username ci_interim \ | |
--ci_mode | |
bazel clean | |
env: | |
BAZEL_STARTUP_ARGS: "--output_base=/var/tmp/bazel-output/" | |
BAZEL_CI_CONFIG: "--config=ci --repository_cache=/cache/bazel" | |
ZH2_DLL01_CSV_SECRETS: "${{ secrets.ZH2_DLL01_CSV_SECRETS }}" | |
ZH2_FILE_SHARE_KEY: "${{ secrets.ZH2_FILE_SHARE_KEY }}" | |
nns-tests-nightly: | |
name: Bazel Test NNS Nightly | |
runs-on: | |
group: dind-large | |
container: | |
image: ghcr.io/dfinity/ic-build@sha256:5bd0f059ad6e21966e9c644516b6ecd52d5ed44f1b18a76b91b59740a9d639a2 | |
timeout-minutes: 20 | |
if: ${{ vars.RUN_CI == 'true' }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Before script | |
id: before-script | |
shell: bash | |
run: ./gitlab-ci/src/ci-scripts/before-script.sh | |
- name: Run NNS Tests Nightly | |
id: bazel-test-all | |
uses: ./.github/actions/bazel-test-all/ | |
with: | |
BAZEL_COMMAND: "test" | |
BAZEL_TARGETS: "//rs/nns/..." | |
BAZEL_CI_CONFIG: "--config=ci --repository_cache=/cache/bazel" | |
BAZEL_EXTRA_ARGS: "--keep_going --test_tag_filters=nns_tests_nightly --test_env=SSH_AUTH_SOCK --test_env=NNS_CANISTER_UPGRADE_SEQUENCE=all" | |
HONEYCOMB_API_TOKEN: ${{ secrets.HONEYCOMB_API_TOKEN }} | |
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} | |
system-tests-benchmarks-nightly: | |
name: Bazel System Test Benchmarks | |
runs-on: | |
group: dind-large | |
container: | |
image: ghcr.io/dfinity/ic-build@sha256:5bd0f059ad6e21966e9c644516b6ecd52d5ed44f1b18a76b91b59740a9d639a2 | |
timeout-minutes: 480 | |
if: ${{ vars.RUN_CI == 'true' }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Before script | |
id: before-script | |
shell: bash | |
run: ./gitlab-ci/src/ci-scripts/before-script.sh | |
- name: Set Benchmark Targets | |
shell: bash | |
run: | | |
set -xeuo pipefail | |
echo "BENCHMARK_TARGETS=$(bazel query 'attr(tags, system_test_benchmark, //rs/...)')" >> $GITHUB_ENV | |
- name: Test System Test Benchmarks | |
id: bazel-system-test-benchmarks | |
uses: ./.github/actions/bazel-test-all/ | |
with: | |
BAZEL_COMMAND: "test" | |
BAZEL_TARGETS: ${{ env.BENCHMARK_TARGETS }} | |
BAZEL_CI_CONFIG: "--config=ci --repository_cache=/cache/bazel" | |
# note: there's just one performance cluster, so the job can't be parallelized | |
BAZEL_EXTRA_ARGS: "--//bazel:enable_upload_perf_systest_results=True --keep_going --jobs 1" | |
HONEYCOMB_API_TOKEN: ${{ secrets.HONEYCOMB_API_TOKEN }} |