Skip to content

[t-spec] Move t-spec people to alumni status #4226

[t-spec] Move t-spec people to alumni status

[t-spec] Move t-spec people to alumni status #4226

Workflow file for this run

name: CI
on:
pull_request:
merge_group:
workflow_dispatch:
schedule:
# Run every four hours to make sure that all changes are up-to-date
- cron: 0 */4 * * *
concurrency:
# We want to make sure that parallel executions (merge queue, cron, manual) of this workflow
# do not perform the `deploy` job in parallel.
# At the same time, we want to avoid this workflow running in parallel for multiple PRs
# (where it only runs tests, without deploy).
# If we're in a PR, `head_ref` is set, so we allow parallel runs for different PR HEAD refs.
# If we're elsewhere, we use a constant string to use the same concurrency group.
group: ${{ github.workflow }}-${{ github.head_ref || 'deploy' }}
cancel-in-progress: false
jobs:
test:
name: Test
runs-on: ubuntu-latest
if: github.repository == 'rust-lang/team'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 50
- name: Install Rust Stable
run: |
rustc -vV
rustup toolchain install 1.85.0
rustup default 1.85.0
rustup component add rustfmt
rustc -vV
- uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6
- name: Build the team binary
run: RUSTFLAGS="--deny warnings" cargo build
- name: Validate the repository contents
run: cargo run -- check --strict
env:
GITHUB_TOKEN: ${{ secrets.github_token }}
- name: Run rustfmt
run: cargo fmt -- --check
- name: Run tests
run: cargo test --workspace --all-features
- name: Check CODEOWNERS
run: cargo run ci check-codeowners
- name: Build the contents of the static API
run: |
cargo run -- static-api build
echo "team-api.infra.rust-lang.org" > build/CNAME
- name: Write PR number into the uploaded archive
if: ${{ github.event_name == 'pull_request' }}
run: echo "${{ github.event.pull_request.number }}" > build/pr.txt
- name: Upload the built JSON as a GitHub artifact
uses: actions/upload-artifact@v4
with:
name: team-api-output
path: build
deploy:
name: Deploy
needs: [ test ]
runs-on: ubuntu-latest
environment: deploy
permissions:
id-token: write
pages: write
if: github.event_name != 'pull_request'
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Download built JSON API and sync-team
uses: actions/download-artifact@v4
with:
name: team-api-output
path: build
- name: Sync changes
env:
GITHUB_TOKEN: ${{ secrets.WRITE_GITHUB_TOKEN }}
MAILGUN_API_TOKEN: ${{ secrets.MAILGUN_API_TOKEN }}
EMAIL_ENCRYPTION_KEY: ${{ secrets.EMAIL_ENCRYPTION_KEY }}
ZULIP_API_TOKEN: ${{ secrets.ZULIP_API_TOKEN }}
ZULIP_USERNAME: ${{ secrets.ZULIP_USERNAME }}
run: |
cargo run sync apply --src build
- name: Disable Jekyll
run: touch build/.nojekyll
- name: Upload GitHub pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: build
# Upload the pages only if the sync succeeded, to always keep the
# most up-to-date state in the web endpoint.
- name: Deploy to GitHub Pages
uses: actions/deploy-pages@v4
# Summary job for the merge queue.
# ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
CI:
needs: [ test, deploy ]
# We need to ensure this job does *not* get skipped if its dependencies fail,
# because a skipped job is considered a success by GitHub. So we have to
# overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
# when the workflow is canceled manually.
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
steps:
# Manually check the status of all dependencies. `if: failure()` does not work.
- name: Conclusion
run: |
# Print the dependent jobs to see them in the CI log
jq -C <<< '${{ toJson(needs) }}'
# Check if all jobs that we depend on (in the needs array) were successful.
jq --exit-status 'all(.result == "success" or .result == "skipped")' <<< '${{ toJson(needs) }}'