crate-updates #57
This file contains hidden or 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: crate-updates | |
| on: | |
| schedule: | |
| - cron: '0 0 * * 0' # Runs on main by default every Sunday | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| bump-crate-versions: | |
| runs-on: ubuntu-24.04 | |
| if: github.repository == 'verus-lang/verus' | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| token: ${{ secrets.CRATES_UPDATE_TOKEN }} | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: 1.97.1 | |
| - name: Configure git | |
| run: | | |
| git config --global user.name 'Version Bumper Bot' | |
| git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com' | |
| BRANCH="bot/crate-updates-$(date +%Y%m%d)-${{ github.run_number }}" | |
| echo "BRANCH=$BRANCH" >> $GITHUB_ENV | |
| git checkout -b $BRANCH | |
| - name: Update crate versions, if needed | |
| run: | | |
| cargo run --manifest-path source/tools/bump_crate_versions/Cargo.toml update | |
| - name: Commit version updates | |
| run: | | |
| if ! git diff-index --quiet HEAD; then | |
| git commit -am "Update crate version numbers" | |
| echo "CHANGED=true" >> $GITHUB_ENV | |
| else | |
| echo "No version updates needed" | |
| fi | |
| - name: Publish updated crates to crates.io | |
| env: | |
| CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
| run: | | |
| cargo run --manifest-path source/tools/bump_crate_versions/Cargo.toml publish | |
| - name: Update Cargo.lock, if needed | |
| run: | | |
| pushd source; cargo update verus_builtin verus_builtin_macros verus_prettyplease verus_state_machines_macros verus_syn; popd | |
| - name: Commit updated lock file | |
| run: | | |
| if ! git diff-index --quiet HEAD; then | |
| git commit -am "Update Cargo.lock" | |
| echo "CHANGED=true" >> $GITHUB_ENV | |
| else | |
| echo "No Cargo.lock update needed" | |
| fi | |
| - name: Push branch and open PR | |
| if: env.CHANGED == 'true' | |
| env: | |
| GH_TOKEN: ${{ secrets.CRATES_UPDATE_TOKEN }} | |
| run: | | |
| git push origin $BRANCH | |
| gh pr create \ | |
| --title "Update crate version numbers" \ | |
| --body "Automated weekly crate version and Cargo.lock updates." \ | |
| --base main | |
| gh pr merge --auto --merge |