build #770
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: build | |
on: | |
# Run on PRs and pushes to the default branch. | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
schedule: | |
- cron: "0 0 * * 0" | |
# Declare default permissions as read only. | |
permissions: read-all | |
env: | |
# Keep for Dart SDK reporting | |
PUB_ENVIRONMENT: bot.github | |
# LTS | |
NODE_VERSION: '20' | |
# Tool location | |
BASE_DIR: ${{ github.workspace }} | |
TOOL_DIR: ${{ github.workspace }}/tool | |
jobs: | |
test: | |
name: Analyze and test code examples | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- sdk: beta | |
experimental: false | |
- sdk: stable | |
experimental: false | |
continue-on-error: ${{ matrix.experimental }} | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: recursive | |
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672 | |
with: | |
sdk: ${{ matrix.sdk }} | |
- name: Fetch Dart packages | |
run: dart pub get | |
- name: Check Dart code formatting | |
run: dart run dart_site format-dart --check | |
- name: Analyze Dart code | |
run: dart run dart_site analyze-dart | |
- name: Run Dart tests | |
run: dart run dart_site test-dart | |
excerpts: | |
name: Check if code excerpts are up to date | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: recursive | |
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672 | |
with: | |
sdk: stable | |
- name: Fetch Dart packages | |
run: dart pub get | |
- name: Check if excerpts are up to date | |
run: dart run dart_site refresh-excerpts --fail-on-update --dry-run | |
linkcheck: | |
name: Build site and check links | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: recursive | |
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672 | |
with: | |
sdk: stable | |
- name: Fetch Dart packages | |
run: dart pub get | |
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 | |
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'pnpm' | |
- name: Install node dependencies | |
run: pnpm install | |
- name: Build site | |
run: dart run dart_site build | |
- name: Translated (dart.cn) | |
run: bash tool/translator/build.sh | |
shell: bash | |
- name: Check for broken Markdown links | |
run: dart run dart_site check-link-references | |
- name: Check internal site links are functional | |
run: dart run dart_site check-links | |
site-variable-scanner: | |
name: Check if text can be replaced with site variables | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: recursive | |
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672 | |
with: | |
sdk: stable | |
- name: Fetch Dart packages | |
run: dart pub get | |
- name: Check if text can be replaced with site variables | |
run: dart run dart_site check-site-variable | |
firebase-validate: | |
name: Validate Firebase configuration | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: recursive | |
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672 | |
with: | |
sdk: stable | |
- name: Fetch Dart packages | |
run: dart pub get | |
- name: Validate the firebase.json file | |
run: dart run dart_site verify-firebase-json | |
deploy: | |
name: Deploy to production | |
permissions: | |
checks: write | |
pull-requests: write | |
if: ${{ github.event_name == 'push' && | |
github.ref == 'refs/heads/main' && | |
github.repository == 'cfug/dart.cn' }} | |
needs: [test, excerpts, linkcheck, site-variable-scanner, firebase-validate] | |
runs-on: ubuntu-latest | |
env: | |
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} | |
FIREBASE_PROJECT: default | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: recursive | |
- uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672 | |
with: | |
sdk: stable | |
- name: Fetch Dart packages | |
run: dart pub get | |
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 | |
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'pnpm' | |
- name: Install node dependencies | |
run: pnpm install | |
- name: Build site | |
run: dart run dart_site build | |
- name: Translated (dart.cn) | |
run: bash tool/translator/build.sh | |
shell: bash | |
- name: Deploy to production | |
run: bash tool/translator/deploy-cn.sh | |
shell: bash | |
env: | |
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }} |