From 058a301e3ba28d537efe64af3c5c0e9010e7c9e2 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Thu, 6 Feb 2025 10:47:41 +0100 Subject: [PATCH] Refactor actions to reuse shared steps --- .github/actions/build-frontend/action.yml | 20 +++++++ .github/actions/build-policies/action.yml | 15 +++++ .github/workflows/build.yaml | 23 +------- .github/workflows/ci.yaml | 60 +++++--------------- .github/workflows/coverage.yaml | 45 +++------------ .github/workflows/docs.yaml | 6 +- .github/workflows/release-branch.yaml | 6 +- .github/workflows/release-bump.yaml | 4 +- .github/workflows/tag.yaml | 4 +- .github/workflows/translations-download.yaml | 2 +- .github/workflows/translations-upload.yaml | 2 +- 11 files changed, 67 insertions(+), 120 deletions(-) create mode 100644 .github/actions/build-frontend/action.yml create mode 100644 .github/actions/build-policies/action.yml diff --git a/.github/actions/build-frontend/action.yml b/.github/actions/build-frontend/action.yml new file mode 100644 index 000000000..a7a1fe2c5 --- /dev/null +++ b/.github/actions/build-frontend/action.yml @@ -0,0 +1,20 @@ +name: Build the frontend assets +description: Installs Node.js and builds the frontend assets from the frontend directory + +runs: + using: composite + steps: + - name: Install Node + uses: actions/setup-node@v4.2.0 + with: + node-version: '22' + + - name: Install dependencies + run: npm ci + working-directory: ./frontend + shell: sh + + - name: Build the frontend assets + run: npm run build + working-directory: ./frontend + shell: sh diff --git a/.github/actions/build-policies/action.yml b/.github/actions/build-policies/action.yml new file mode 100644 index 000000000..dfe78917d --- /dev/null +++ b/.github/actions/build-policies/action.yml @@ -0,0 +1,15 @@ +name: Build the Open Policy Agent policies +description: Installs OPA and builds the policies + +runs: + using: composite + steps: + - name: Install Open Policy Agent + uses: open-policy-agent/setup-opa@v2.2.0 + with: + version: 0.70.0 + + - name: Build the policies + run: make + working-directory: ./policies + shell: sh diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 9ed4d39b9..d35b30e33 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -59,27 +59,8 @@ jobs: - name: Checkout the code uses: actions/checkout@v4.2.2 - - name: Setup OPA - uses: open-policy-agent/setup-opa@v2.2.0 - with: - version: 0.64.1 - - - name: Install frontend Node - uses: actions/setup-node@v4.2.0 - with: - node-version: 20 - - - name: Install frontend Node dependencies - working-directory: ./frontend - run: npm ci - - - name: Build frontend - working-directory: ./frontend - run: npm run build - - - name: Build policies - working-directory: ./policies - run: make + - uses: ./.github/actions/build-frontend + - uses: ./.github/actions/build-policies - name: Prepare assets artifact run: | diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e2e956d49..2e1aee21b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -63,7 +63,7 @@ jobs: - name: Install Node uses: actions/setup-node@v4.2.0 with: - node-version: 20 + node-version: 22 - name: Install Node dependencies working-directory: ./frontend @@ -88,7 +88,7 @@ jobs: - name: Install Node uses: actions/setup-node@v4.2.0 with: - node-version: 20 + node-version: 22 - name: Install Node dependencies working-directory: ./frontend @@ -135,11 +135,10 @@ jobs: - name: Checkout the code uses: actions/checkout@v4.2.2 - - name: Install toolchain - run: | - rustup toolchain install nightly - rustup default nightly - rustup component add rustfmt + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@nightly + with: + components: rustfmt - name: Check style run: cargo fmt --all -- --check @@ -183,14 +182,7 @@ jobs: - name: Setup sccache uses: mozilla-actions/sccache-action@v0.0.7 - - name: Install Node - uses: actions/setup-node@v4.2.0 - with: - node-version: 20 - - - name: Install Node dependencies - working-directory: ./frontend - run: npm ci + - uses: ./.github/actions/build-frontend - name: Update the schemas run: sh ./misc/update.sh @@ -224,11 +216,10 @@ jobs: - name: Checkout the code uses: actions/checkout@v4.2.2 - - name: Install toolchain - run: | - rustup toolchain install 1.84.0 - rustup default 1.84.0 - rustup component add clippy + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@1.84.0 + with: + components: clippy - name: Setup OPA uses: open-policy-agent/setup-opa@v2.2.0 @@ -258,10 +249,8 @@ jobs: - name: Checkout uses: actions/checkout@v4.2.2 - - name: Install toolchain - run: | - rustup toolchain install stable - rustup default stable + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable - name: Install nextest uses: taiki-e/install-action@v2 @@ -320,27 +309,8 @@ jobs: with: tool: cargo-nextest - - name: Install Node - uses: actions/setup-node@v4.2.0 - with: - node-version: 20 - - - name: Install Node dependencies - working-directory: ./frontend - run: npm ci - - - name: Build the frontend - working-directory: ./frontend - run: npm run build - - - name: Setup OPA - uses: open-policy-agent/setup-opa@v2.2.0 - with: - version: 0.64.1 - - - name: Compile OPA policies - working-directory: ./policies - run: make + - uses: ./.github/actions/build-frontend + - uses: ./.github/actions/build-policies - name: Download archive uses: actions/download-artifact@v4 diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml index 180295e99..a099dc887 100644 --- a/.github/workflows/coverage.yaml +++ b/.github/workflows/coverage.yaml @@ -54,18 +54,7 @@ jobs: - name: Checkout the code uses: actions/checkout@v4.2.2 - - name: Install Node - uses: actions/setup-node@v4.2.0 - with: - node-version: 20 - - - name: Install Node dependencies - working-directory: ./frontend - run: npm ci - - - name: Build the frontend - working-directory: ./frontend - run: npm run build + - uses: ./.github/actions/build-frontend env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} @@ -110,33 +99,10 @@ jobs: - name: Checkout the code uses: actions/checkout@v4.2.2 - - name: Install toolchain - run: | - rustup toolchain install stable - rustup default stable - rustup component add llvm-tools-preview - - - name: Install Node - uses: actions/setup-node@v4.2.0 + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable with: - node-version: 20 - - - name: Install Node dependencies - working-directory: ./frontend - run: npm ci - - - name: Build the frontend - working-directory: ./frontend - run: npm run build - - - name: Setup OPA - uses: open-policy-agent/setup-opa@v2.2.0 - with: - version: 0.64.1 - - - name: Compile OPA policies - working-directory: ./policies - run: make + components: llvm-tools-preview - name: Setup sccache uses: mozilla-actions/sccache-action@v0.0.7 @@ -146,6 +112,9 @@ jobs: with: tool: grcov + - uses: ./.github/actions/build-frontend + - uses: ./.github/actions/build-policies + - name: Run test suite with profiling enabled run: | cargo test --no-fail-fast --workspace diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 1ff7ee3da..3a5bc8d9c 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -23,9 +23,7 @@ jobs: uses: actions/checkout@v4.2.2 - name: Install Rust toolchain - run: | - rustup toolchain install stable - rustup default stable + uses: dtolnay/rust-toolchain@stable - name: Setup sccache uses: mozilla-actions/sccache-action@v0.0.7 @@ -38,7 +36,7 @@ jobs: - name: Install Node uses: actions/setup-node@v4.2.0 with: - node-version: 20 + node-version: 22 - name: Build the documentation run: sh misc/build-docs.sh diff --git a/.github/workflows/release-branch.yaml b/.github/workflows/release-branch.yaml index 5d9bdfe96..5b56dcc29 100644 --- a/.github/workflows/release-branch.yaml +++ b/.github/workflows/release-branch.yaml @@ -23,9 +23,7 @@ jobs: uses: actions/checkout@v4.2.2 - name: Install Rust toolchain - run: | - rustup toolchain install stable - rustup default stable + uses: dtolnay/rust-toolchain@stable - name: Compute the new minor RC id: next @@ -52,7 +50,7 @@ jobs: - name: Install Node uses: actions/setup-node@v4.2.0 with: - node-version: 20 + node-version: 22 - name: Install Localazy CLI run: npm install -g @localazy/cli diff --git a/.github/workflows/release-bump.yaml b/.github/workflows/release-bump.yaml index 6280c9182..898033182 100644 --- a/.github/workflows/release-bump.yaml +++ b/.github/workflows/release-bump.yaml @@ -31,9 +31,7 @@ jobs: uses: actions/checkout@v4.2.2 - name: Install Rust toolchain - run: | - rustup toolchain install stable - rustup default stable + uses: dtolnay/rust-toolchain@stable - name: Extract the current version id: current diff --git a/.github/workflows/tag.yaml b/.github/workflows/tag.yaml index 5a86c5164..68aeedc4b 100644 --- a/.github/workflows/tag.yaml +++ b/.github/workflows/tag.yaml @@ -28,9 +28,7 @@ jobs: uses: actions/checkout@v4.2.2 - name: Install Rust toolchain - run: | - rustup toolchain install stable - rustup default stable + uses: dtolnay/rust-toolchain@stable - name: Set the crates version env: diff --git a/.github/workflows/translations-download.yaml b/.github/workflows/translations-download.yaml index eb70afc14..474f3f69b 100644 --- a/.github/workflows/translations-download.yaml +++ b/.github/workflows/translations-download.yaml @@ -19,7 +19,7 @@ jobs: - name: Install Node uses: actions/setup-node@v4.2.0 with: - node-version: 20 + node-version: 22 - name: Install Localazy CLI run: npm install -g @localazy/cli diff --git a/.github/workflows/translations-upload.yaml b/.github/workflows/translations-upload.yaml index 986dc5f0e..c92b1fef9 100644 --- a/.github/workflows/translations-upload.yaml +++ b/.github/workflows/translations-upload.yaml @@ -18,7 +18,7 @@ jobs: - name: Install Node uses: actions/setup-node@v4.2.0 with: - node-version: 20 + node-version: 22 - name: Install Localazy CLI run: npm install -g @localazy/cli