133d722a9Sopenharmony_ciname: CI 233d722a9Sopenharmony_ci 333d722a9Sopenharmony_cion: 433d722a9Sopenharmony_ci push: 533d722a9Sopenharmony_ci pull_request: 633d722a9Sopenharmony_ci workflow_dispatch: 733d722a9Sopenharmony_ci schedule: [cron: "40 1 * * *"] 833d722a9Sopenharmony_ci 933d722a9Sopenharmony_cipermissions: 1033d722a9Sopenharmony_ci contents: read 1133d722a9Sopenharmony_ci 1233d722a9Sopenharmony_cijobs: 1333d722a9Sopenharmony_ci pre_ci: 1433d722a9Sopenharmony_ci uses: dtolnay/.github/.github/workflows/pre_ci.yml@master 1533d722a9Sopenharmony_ci 1633d722a9Sopenharmony_ci test: 1733d722a9Sopenharmony_ci name: ${{matrix.name || format('Rust {0}', matrix.rust)}} 1833d722a9Sopenharmony_ci needs: pre_ci 1933d722a9Sopenharmony_ci if: needs.pre_ci.outputs.continue 2033d722a9Sopenharmony_ci runs-on: ${{matrix.os || 'ubuntu'}}-latest 2133d722a9Sopenharmony_ci strategy: 2233d722a9Sopenharmony_ci fail-fast: false 2333d722a9Sopenharmony_ci matrix: 2433d722a9Sopenharmony_ci include: 2533d722a9Sopenharmony_ci - rust: nightly 2633d722a9Sopenharmony_ci - rust: beta 2733d722a9Sopenharmony_ci - rust: stable 2833d722a9Sopenharmony_ci - rust: 1.60.0 2933d722a9Sopenharmony_ci - rust: 1.64.0 3033d722a9Sopenharmony_ci - name: Cargo on macOS 3133d722a9Sopenharmony_ci rust: nightly 3233d722a9Sopenharmony_ci os: macos 3333d722a9Sopenharmony_ci - name: Cargo on Windows (msvc) 3433d722a9Sopenharmony_ci rust: nightly-x86_64-pc-windows-msvc 3533d722a9Sopenharmony_ci os: windows 3633d722a9Sopenharmony_ci flags: /EHsc 3733d722a9Sopenharmony_ci env: 3833d722a9Sopenharmony_ci CXXFLAGS: ${{matrix.flags}} 3933d722a9Sopenharmony_ci RUSTFLAGS: --cfg deny_warnings -Dwarnings 4033d722a9Sopenharmony_ci timeout-minutes: 45 4133d722a9Sopenharmony_ci steps: 4233d722a9Sopenharmony_ci - name: Enable symlinks (windows) 4333d722a9Sopenharmony_ci if: matrix.os == 'windows' 4433d722a9Sopenharmony_ci run: git config --global core.symlinks true 4533d722a9Sopenharmony_ci - uses: actions/checkout@v3 4633d722a9Sopenharmony_ci - uses: dtolnay/rust-toolchain@master 4733d722a9Sopenharmony_ci with: 4833d722a9Sopenharmony_ci toolchain: ${{matrix.rust}} 4933d722a9Sopenharmony_ci components: rust-src 5033d722a9Sopenharmony_ci - name: Determine test suite subset 5133d722a9Sopenharmony_ci # Our Windows and macOS jobs are the longest running, so exclude the 5233d722a9Sopenharmony_ci # relatively slow compiletest from them to speed up end-to-end CI time, 5333d722a9Sopenharmony_ci # except during cron builds when no human is presumably waiting on the 5433d722a9Sopenharmony_ci # build. The extra coverage is not particularly valuable and we can 5533d722a9Sopenharmony_ci # still ensure the test is kept passing on the basis of the scheduled 5633d722a9Sopenharmony_ci # builds. 5733d722a9Sopenharmony_ci run: | 5833d722a9Sopenharmony_ci echo RUSTFLAGS=$RUSTFLAGS >> $GITHUB_ENV 5933d722a9Sopenharmony_ci echo exclude=--exclude cxx-test-suite ${{matrix.rust == '1.60.0' && '--exclude cxxbridge-cmd' || ''}} >> $GITHUB_OUTPUT 6033d722a9Sopenharmony_ci env: 6133d722a9Sopenharmony_ci RUSTFLAGS: ${{env.RUSTFLAGS}} ${{matrix.os && github.event_name != 'schedule' && '--cfg skip_ui_tests' || ''}} 6233d722a9Sopenharmony_ci id: testsuite 6333d722a9Sopenharmony_ci shell: bash 6433d722a9Sopenharmony_ci - run: cargo run --manifest-path demo/Cargo.toml 6533d722a9Sopenharmony_ci - run: cargo test --workspace ${{steps.testsuite.outputs.exclude}} 6633d722a9Sopenharmony_ci - run: cargo check --no-default-features --features alloc 6733d722a9Sopenharmony_ci env: 6833d722a9Sopenharmony_ci RUSTFLAGS: --cfg compile_error_if_std ${{env.RUSTFLAGS}} 6933d722a9Sopenharmony_ci - run: cargo check --no-default-features 7033d722a9Sopenharmony_ci env: 7133d722a9Sopenharmony_ci RUSTFLAGS: --cfg compile_error_if_alloc --cfg cxx_experimental_no_alloc ${{env.RUSTFLAGS}} 7233d722a9Sopenharmony_ci 7333d722a9Sopenharmony_ci buck: 7433d722a9Sopenharmony_ci name: Buck2 on ${{matrix.os == 'ubuntu' && 'Linux' || matrix.os == 'macos' && 'macOS' || matrix.os == 'windows' && 'Windows' || '???'}} 7533d722a9Sopenharmony_ci runs-on: ${{matrix.os}}-latest 7633d722a9Sopenharmony_ci if: github.event_name != 'pull_request' 7733d722a9Sopenharmony_ci strategy: 7833d722a9Sopenharmony_ci fail-fast: false 7933d722a9Sopenharmony_ci matrix: 8033d722a9Sopenharmony_ci os: [ubuntu, macos, windows] 8133d722a9Sopenharmony_ci timeout-minutes: 45 8233d722a9Sopenharmony_ci steps: 8333d722a9Sopenharmony_ci - uses: actions/checkout@v3 8433d722a9Sopenharmony_ci with: 8533d722a9Sopenharmony_ci submodules: true 8633d722a9Sopenharmony_ci - uses: dtolnay/rust-toolchain@stable 8733d722a9Sopenharmony_ci with: 8833d722a9Sopenharmony_ci components: rust-src 8933d722a9Sopenharmony_ci - uses: dtolnay/install-buck2@latest 9033d722a9Sopenharmony_ci - name: Install lld 9133d722a9Sopenharmony_ci run: sudo apt-get install lld 9233d722a9Sopenharmony_ci if: matrix.os == 'ubuntu' 9333d722a9Sopenharmony_ci - run: buck2 run demo 9433d722a9Sopenharmony_ci - run: buck2 build ... 9533d722a9Sopenharmony_ci - run: buck2 test ... 9633d722a9Sopenharmony_ci - uses: dtolnay/install@reindeer 9733d722a9Sopenharmony_ci if: matrix.os == 'ubuntu' 9833d722a9Sopenharmony_ci - run: reindeer buckify 9933d722a9Sopenharmony_ci if: matrix.os == 'ubuntu' 10033d722a9Sopenharmony_ci working-directory: third-party 10133d722a9Sopenharmony_ci - name: Check reindeer-generated BUCK file up to date 10233d722a9Sopenharmony_ci run: git diff --exit-code 10333d722a9Sopenharmony_ci if: matrix.os == 'ubuntu' 10433d722a9Sopenharmony_ci 10533d722a9Sopenharmony_ci bazel: 10633d722a9Sopenharmony_ci name: Bazel on Linux 10733d722a9Sopenharmony_ci runs-on: ubuntu-latest 10833d722a9Sopenharmony_ci if: github.event_name != 'pull_request' 10933d722a9Sopenharmony_ci timeout-minutes: 45 11033d722a9Sopenharmony_ci steps: 11133d722a9Sopenharmony_ci - uses: actions/checkout@v3 11233d722a9Sopenharmony_ci - name: Install Bazel 11333d722a9Sopenharmony_ci run: | 11433d722a9Sopenharmony_ci wget -q -O install.sh https://github.com/bazelbuild/bazel/releases/download/6.0.0/bazel-6.0.0-installer-linux-x86_64.sh 11533d722a9Sopenharmony_ci chmod +x install.sh 11633d722a9Sopenharmony_ci ./install.sh --user 11733d722a9Sopenharmony_ci echo $HOME/bin >> $GITHUB_PATH 11833d722a9Sopenharmony_ci - name: Install lld 11933d722a9Sopenharmony_ci run: sudo apt-get install lld 12033d722a9Sopenharmony_ci - run: bazel run demo --verbose_failures --noshow_progress 12133d722a9Sopenharmony_ci - run: bazel test ... --verbose_failures --noshow_progress 12233d722a9Sopenharmony_ci 12333d722a9Sopenharmony_ci clippy: 12433d722a9Sopenharmony_ci name: Clippy 12533d722a9Sopenharmony_ci runs-on: ubuntu-latest 12633d722a9Sopenharmony_ci if: github.event_name != 'pull_request' 12733d722a9Sopenharmony_ci timeout-minutes: 45 12833d722a9Sopenharmony_ci steps: 12933d722a9Sopenharmony_ci - uses: actions/checkout@v3 13033d722a9Sopenharmony_ci - uses: dtolnay/rust-toolchain@nightly 13133d722a9Sopenharmony_ci with: 13233d722a9Sopenharmony_ci components: clippy, rust-src 13333d722a9Sopenharmony_ci - run: cargo clippy --workspace --tests -- -Dclippy::all 13433d722a9Sopenharmony_ci 13533d722a9Sopenharmony_ci clang-tidy: 13633d722a9Sopenharmony_ci name: Clang Tidy 13733d722a9Sopenharmony_ci runs-on: ubuntu-latest 13833d722a9Sopenharmony_ci if: github.event_name != 'pull_request' 13933d722a9Sopenharmony_ci timeout-minutes: 45 14033d722a9Sopenharmony_ci steps: 14133d722a9Sopenharmony_ci - uses: actions/checkout@v3 14233d722a9Sopenharmony_ci - name: Install clang-tidy 14333d722a9Sopenharmony_ci run: sudo apt-get install clang-tidy-11 14433d722a9Sopenharmony_ci - name: Run clang-tidy 14533d722a9Sopenharmony_ci run: clang-tidy-11 src/cxx.cc --warnings-as-errors=* 14633d722a9Sopenharmony_ci 14733d722a9Sopenharmony_ci outdated: 14833d722a9Sopenharmony_ci name: Outdated 14933d722a9Sopenharmony_ci runs-on: ubuntu-latest 15033d722a9Sopenharmony_ci if: github.event_name != 'pull_request' 15133d722a9Sopenharmony_ci timeout-minutes: 45 15233d722a9Sopenharmony_ci steps: 15333d722a9Sopenharmony_ci - uses: actions/checkout@v3 15433d722a9Sopenharmony_ci - uses: dtolnay/install@cargo-outdated 15533d722a9Sopenharmony_ci - run: cargo outdated --workspace --exit-code 1 156