From 56356a4e2b992bbf100e88375796e349411224ba Mon Sep 17 00:00:00 2001 From: Joshua Liebow-Feeser Date: Thu, 21 Sep 2023 08:14:36 -0700 Subject: [PATCH] [ci] Roll pinned nightly toolchain automatically Closes #348 --- .../roll-pinned-toolchain-versions.yml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/roll-pinned-toolchain-versions.yml diff --git a/.github/workflows/roll-pinned-toolchain-versions.yml b/.github/workflows/roll-pinned-toolchain-versions.yml new file mode 100644 index 0000000000..ec9e64d593 --- /dev/null +++ b/.github/workflows/roll-pinned-toolchain-versions.yml @@ -0,0 +1,54 @@ +name: Roll pinned toolchain versions +on: + schedule: + - cron: '29 15 * * *' + # TODO: Remove this before merging!!! + pull_request: + +# TODO: Once we confirm this works, try changing this to `read-all` to see if +# the job still works. +permissions: write-all + +jobs: + roll: + name: Roll pinned toolchain versions + runs-on: ubuntu-latest + steps: + - name: "Checkout code" + uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + # TODO: Once we confirm this works, try uncommenting this to see if the + # job still works. + # with: + # persist-credentials: false + - name: "Calculate target version" + # Use yesterday's date (`-d '-1 day'`) so we're sure the nightly for that + # date has actually been published yet. This allows us to not worry + # about what time of day this job runs. + run: echo "ZC_TARGET_NIGHTLY='nightly-$(date -d '-1 day' +%Y-%m-%d)'" >> $GITHUB_ENV + - name: Install Rust with ${{ env.ZC_TARGET_NIGHTLY }} toolchain + uses: dtolnay/rust-toolchain@00b49be78f40fba4e87296b2ead62868750bdd83 # stable + with: + toolchain: ${{ env.ZC_TARGET_NIGHTLY }} + - name: "Update files" + run: | + set -eo pipefail + + # Confirm that `Cargo.toml` lists the pinned nightly version in the + # expected format. This is a prerequisite for the subsequent `sed` + # command. If this fails, the preceding `set -eo pipefail` will cause + # the script to exit with an error. + REGEX='^pinned-nightly = "[a-z0-9-]*"$' + grep "$REGEX" Cargo.toml >/dev/null + sed -i '' -e "s/$REGEX/pinned-nightly = \"$ZC_TARGET_NIGHTLY\"/" Cargo.toml + + # Confirm that the update didn't bork `Cargo.toml`. + grep "$REGEX" Cargo.toml >/dev/null + + # Update `.stderr` files as needed for the new nightly version. + TRYBUILD=overwrite ./cargo.sh +nightly test --all-features --package zerocopy + TRYBUILD=overwrite ./cargo.sh +nightly test --all-features --package zerocopy-derive + + - name: "Submit PR" + uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v5.0.2 + with: + commit-message: "[ci] Roll pinned nightly toolchain"