| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- name: Update Rust Version
- on:
- schedule:
- # Run weekly on Monday at 9 AM UTC
- - cron: '0 9 * * 1'
- workflow_dispatch: # Allow manual triggering
- permissions: {}
- jobs:
- check-rust-version:
- name: Check and update Rust version
- runs-on: ubuntu-latest
- permissions:
- issues: write
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- - name: Get latest stable Rust version
- id: latest-rust
- run: |
- # Fetch the latest stable Rust version from GitHub releases API
- LATEST_VERSION=$(curl -s https://api.github.com/repos/rust-lang/rust/releases | jq -r '[.[] | select(.prerelease == false and .draft == false)][0].tag_name')
- echo "version=$LATEST_VERSION" >> $GITHUB_OUTPUT
- echo "Latest stable Rust version: $LATEST_VERSION"
- - name: Get current Rust version
- id: current-rust
- run: |
- # Extract current version from rust-toolchain.toml
- CURRENT_VERSION=$(grep '^channel=' rust-toolchain.toml | sed 's/channel="\(.*\)"/\1/')
- echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
- echo "Current Rust version: $CURRENT_VERSION"
- - name: Compare versions
- id: compare
- run: |
- if [ "${{ steps.latest-rust.outputs.version }}" != "${{ steps.current-rust.outputs.version }}" ]; then
- echo "needs_update=true" >> $GITHUB_OUTPUT
- echo "Rust version needs update: ${{ steps.current-rust.outputs.version }} -> ${{ steps.latest-rust.outputs.version }}"
- else
- echo "needs_update=false" >> $GITHUB_OUTPUT
- echo "Rust version is up to date"
- fi
- - name: Create Issue
- if: steps.compare.outputs.needs_update == 'true'
- env:
- GH_TOKEN: ${{ github.token }}
- run: |
- gh issue create \
- --title "Update Rust to ${{ steps.latest-rust.outputs.version }}" \
- --label "rust-version" \
- --assignee thesimplekid \
- --body "$(cat <<'EOF'
- New Rust version **${{ steps.latest-rust.outputs.version }}** is available (currently on **${{ steps.current-rust.outputs.version }}**).
- ## Files to update
- - \`rust-toolchain.toml\` - Update channel to \`${{ steps.latest-rust.outputs.version }}\`
- - \`flake.nix\` - Update stable_toolchain to \`pkgs.rust-bin.stable."${{ steps.latest-rust.outputs.version }}".default\`
- - Run \`nix flake update rust-overlay\` to update \`flake.lock\`
- ## Release Notes
- Check the [Rust release notes](https://github.com/rust-lang/rust/blob/master/RELEASES.md) for details on what's new in this version.
- ---
- 🤖 Automated issue created by update-rust-version workflow
- EOF
- )"
- - name: No update needed
- if: steps.compare.outputs.needs_update == 'false'
- run: |
- echo "✓ Rust version is already up to date (${{ steps.current-rust.outputs.version }})"
|