Sync channels #1579
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: Sync channels | |
on: | |
schedule: | |
# The nightly channel is usually updated at 01:00:00 UTC. | |
- cron: '0 2 * * *' # *-*-* 02:00:00 UTC | |
# The stable channel is usually updated before 17:00:00 UTC on Thursday. | |
# It seems there are some stable users eagerly want to use the latest stable and | |
# cannot afford a lengthy 24hrs delay. So poll once every hour here. ¯\_(ツ)_/¯ | |
# See: https://github.com/oxalica/rust-overlay/pull/166 | |
- cron: '0 14-20 * * THU' # Thu *-*-* 14..19:00:00 UTC | |
workflow_dispatch: | |
permissions: | |
contents: write | |
jobs: | |
sync-channels: | |
name: Sync channels and prefetch toolchains | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
ref: master | |
- name: Install Nix | |
uses: cachix/install-nix-action@v25 | |
with: | |
nix_path: nixpkgs=channel:nixpkgs-unstable | |
# Workaround for https://github.com/oxalica/rust-overlay/issues/54 | |
- name: Don't let ~/.cargo/bin mess things up | |
run: rm -rf ~/.cargo/bin | |
- name: Sync stable channel | |
timeout-minutes: 5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: ./scripts/fetch.py stable | |
- name: Sync beta channel | |
if: github.event.schedule != '0 14-20 * * THU' | |
timeout-minutes: 5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: ./scripts/fetch.py beta | |
- name: Sync nightly channel | |
if: github.event.schedule != '0 14-20 * * THU' | |
timeout-minutes: 5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: ./scripts/fetch.py nightly | |
- name: Check and commit changes | |
id: commit | |
continue-on-error: true | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "GitHub Action" | |
git add manifests | |
git commit -m "manifest: update" | |
- name: Validate nix files changed | |
if: steps.commit.outcome == 'success' | |
run: | | |
files=( $(git diff --name-only HEAD HEAD^ '*.nix') ) | |
echo "${#files[*]} nix files changed: ${files[*]}" | |
if [[ "${#files[*]}" -ne 0 ]]; then | |
nix-instantiate --parse "${files[@]}" >/dev/null | |
fi | |
- name: Test stable Rust | |
if: steps.commit.outcome == 'success' | |
run: | | |
cd examples/hello-world | |
set -o pipefail | |
nix-shell --pure --command "make run" | tee out | |
[[ "$(< out)" == *"Hello, world!"* ]] | |
- name: Push changes | |
if: steps.commit.outcome == 'success' | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
branch: master |