Skip to content

Commit

Permalink
Automatic toolchain upgrade improvements (model-checking#2722)
Browse files Browse the repository at this point in the history
1. Build and run regression tests, and create a labelled PR (Z-BenchCI) when these pass.
2. File an issue instead of creating a PR when either of the checks fail.
  • Loading branch information
tautschnig committed Sep 2, 2023
1 parent edd5751 commit 4b829ab
Showing 1 changed file with 46 additions and 5 deletions.
51 changes: 46 additions & 5 deletions .github/workflows/toolchain-upgrade.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,35 @@ on:
- cron: "30 2 * * *" # Run this every day at 02:30 UTC
workflow_dispatch: # Allow manual dispatching for a custom branch / tag.

permissions:
contents: read
issues: write

jobs:
create-toolchain-pr:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: Checkout Kani
uses: actions/checkout@v3

- name: Setup Kani Dependencies
uses: ./.github/actions/setup
with:
os: ubuntu-22.04

- name: Update toolchain config
run: |
current_toolchain_date=$(grep ^channel rust-toolchain.toml | sed 's/.*nightly-\(.*\)"/\1/')
echo "current_toolchain_date=$current_toolchain_date" >> $GITHUB_ENV
current_toolchain_epoch=$(date --date $current_toolchain_date +%s)
next_toolchain_date=$(date --date "@$(($current_toolchain_epoch + 86400))" +%Y-%m-%d)
echo "next_toolchain_date=$next_toolchain_date" >> $GITHUB_ENV
if ! git ls-remote --exit-code origin toolchain-$next_toolchain_date ; then
echo "branch_exists=false" >> $GITHUB_ENV
if gh issue list -S \
"Toolchain upgrade to nightly-$next_toolchain_date failed" \
--json number,title | grep title ; then
echo "next_step=none" >> $GITHUB_ENV
elif ! git ls-remote --exit-code origin toolchain-$next_toolchain_date ; then
echo "next_step=create_pr" >> $GITHUB_ENV
sed -i "/^channel/ s/$current_toolchain_date/$next_toolchain_date/" rust-toolchain.toml
git diff
git clone --filter=tree:0 https://github.com/rust-lang/rust rust.git
Expand All @@ -39,17 +52,25 @@ jobs:
echo "$EOF" >> $GITHUB_ENV
cd ..
rm -rf rust.git
if ! cargo build-dev ; then
echo "next_step=create_issue" >> $GITHUB_ENV
else
if ! ./scripts/kani-regression.sh ; then
echo "next_step=create_issue" >> $GITHUB_ENV
fi
fi
else
echo "branch_exists=true" >> $GITHUB_ENV
echo "next_step=none" >> $GITHUB_ENV
fi
- name: Create Pull Request
if: ${{ env.branch_exists == 'false' }}
if: ${{ env.next_step == 'create_pr' }}
uses: peter-evans/create-pull-request@v5
with:
commit-message: Upgrade Rust toolchain to nightly-${{ env.next_toolchain_date }}
branch: toolchain-${{ env.next_toolchain_date }}
delete-branch: true
title: 'Automatic toolchain upgrade to nightly-${{ env.next_toolchain_date }}'
labels: Z-BenchCI
body: >
Update Rust toolchain from nightly-${{ env.current_toolchain_date }} to
nightly-${{ env.next_toolchain_date }} without any other source changes.
Expand All @@ -61,4 +82,24 @@ jobs:
https://github.com/rust-lang/rust/commit/${{ env.next_toolchain_hash }}. The log
for this commit range is:
${{ env.git_log }}
- name: Create Issue
if: ${{ env.next_step == 'create_issue' }}
uses: dacbd/create-issue-action@main
with:
token: ${{ github.token }}
title: 'Toolchain upgrade to nightly-${{ env.next_toolchain_date }} failed'
body: >
Updating Rust toolchain from nightly-${{ env.current_toolchain_date }} to
nightly-${{ env.next_toolchain_date }} requires source changes.
The failed automated run
[can be found here.](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
Please review the changes at
https://github.com/rust-lang/rust from
https://github.com/rust-lang/rust/commit/${{ env.current_toolchain_hash }} up to
https://github.com/rust-lang/rust/commit/${{ env.next_toolchain_hash }}. The log
for this commit range is:
${{ env.git_log }}

0 comments on commit 4b829ab

Please sign in to comment.