diff --git a/.github/workflows/build-cpp.yml b/.github/workflows/build-cpp.yml index 6c5e75839..e144c1262 100644 --- a/.github/workflows/build-cpp.yml +++ b/.github/workflows/build-cpp.yml @@ -1,14 +1,8 @@ name: Build C++ SDK on: - push: - branches: - - main - - rc - - hotfix-rc - - pull_request: workflow_dispatch: + workflow_call: permissions: contents: read diff --git a/.github/workflows/build-dotnet.yml b/.github/workflows/build-dotnet.yml index 8a7128ffe..5df6281b0 100644 --- a/.github/workflows/build-dotnet.yml +++ b/.github/workflows/build-dotnet.yml @@ -1,13 +1,8 @@ name: Build .NET SDK on: - push: - branches: - - main - - rc - - hotfix-rc - pull_request: workflow_dispatch: + workflow_call: permissions: contents: read diff --git a/.github/workflows/build-java.yml b/.github/workflows/build-java.yml index 98db2cc90..f09bb6161 100644 --- a/.github/workflows/build-java.yml +++ b/.github/workflows/build-java.yml @@ -1,11 +1,8 @@ name: Build Java SDK on: - push: - branches: - - main - pull_request: workflow_dispatch: + workflow_call: permissions: contents: read diff --git a/.github/workflows/build-napi.yml b/.github/workflows/build-napi.yml index 6886ce0b2..560595efc 100644 --- a/.github/workflows/build-napi.yml +++ b/.github/workflows/build-napi.yml @@ -1,13 +1,8 @@ name: Build @bitwarden/sdk-napi on: - pull_request: - push: - branches: - - "main" - - "rc" - - "hotfix-rc" workflow_dispatch: + workflow_call: defaults: run: diff --git a/.github/workflows/build-python-wheels.yml b/.github/workflows/build-python-wheels.yml index ca2f71d0d..f8bc74a3a 100644 --- a/.github/workflows/build-python-wheels.yml +++ b/.github/workflows/build-python-wheels.yml @@ -1,12 +1,6 @@ name: Build Python Wheels on: - pull_request: - push: - branches: - - "main" - - "rc" - - "hotfix-rc" workflow_dispatch: inputs: dev_version: diff --git a/.github/workflows/build-ruby.yml b/.github/workflows/build-ruby.yml index 6be0bbf89..52da5b067 100644 --- a/.github/workflows/build-ruby.yml +++ b/.github/workflows/build-ruby.yml @@ -1,15 +1,16 @@ name: Build Ruby on: - pull_request: - push: - branches: - - "main" workflow_dispatch: + workflow_call: permissions: contents: read +concurrency: + group: build-ruby-${{ github.ref }} + cancel-in-progress: true + jobs: build: name: Build Ruby diff --git a/.github/workflows/build-rust-cross-platform.yml b/.github/workflows/build-rust-cross-platform.yml index 71186652c..293d03987 100644 --- a/.github/workflows/build-rust-cross-platform.yml +++ b/.github/workflows/build-rust-cross-platform.yml @@ -3,12 +3,6 @@ name: Build Rust Cross Platform on: workflow_call: workflow_dispatch: - push: - branches: - - main - - rc - - hotfix-rc - pull_request: permissions: contents: read diff --git a/.github/workflows/build-wasm.yml b/.github/workflows/build-wasm.yml index 807748035..4cfbc7f8b 100644 --- a/.github/workflows/build-wasm.yml +++ b/.github/workflows/build-wasm.yml @@ -1,13 +1,8 @@ name: Build @bitwarden/sdk-wasm on: - pull_request: - push: - branches: - - "main" - - "rc" - - "hotfix-rc" workflow_dispatch: + workflow_call: defaults: run: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..050f8a90b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,95 @@ +name: Build All SDKs + +on: + pull_request: + push: + branches: + - "main" + - "rc" + - "hotfix-rc" + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: build-all-${{ github.ref }} + cancel-in-progress: true + +jobs: + # Tier 0: Base workflows with no dependencies + generate-schemas: + name: Generate Schemas + uses: ./.github/workflows/generate_schemas.yml + permissions: + contents: read + + build-rust-cross-platform: + name: Build Rust Cross-Platform + uses: ./.github/workflows/build-rust-cross-platform.yml + permissions: + contents: read + + build-wasm: + name: Build WebAssembly + uses: ./.github/workflows/build-wasm.yml + permissions: + contents: read + packages: write + + # Tier 1: Depends on schemas only + build-napi: + name: Build NAPI (Node.js) + needs: + - generate-schemas + uses: ./.github/workflows/build-napi.yml + permissions: + contents: read + + # Tier 2: Depends on both schemas and rust cross-platform + build-cpp: + name: Build C++ + needs: + - generate-schemas + - build-rust-cross-platform + uses: ./.github/workflows/build-cpp.yml + permissions: + contents: read + + build-dotnet: + name: Build .NET + needs: + - generate-schemas + - build-rust-cross-platform + uses: ./.github/workflows/build-dotnet.yml + permissions: + contents: read + + build-java: + name: Build Java + needs: + - generate-schemas + - build-rust-cross-platform + uses: ./.github/workflows/build-java.yml + permissions: + contents: read + + build-python-wheels: + name: Build Python + needs: + - generate-schemas + - build-rust-cross-platform + uses: ./.github/workflows/build-python-wheels.yml + permissions: + contents: read + with: + dev_version: false + + build-ruby: + name: Build Ruby + needs: + - generate-schemas + - build-rust-cross-platform + uses: ./.github/workflows/build-ruby.yml + permissions: + contents: read diff --git a/.github/workflows/generate_schemas.yml b/.github/workflows/generate_schemas.yml index 57cb6ac9c..83c93c7de 100644 --- a/.github/workflows/generate_schemas.yml +++ b/.github/workflows/generate_schemas.yml @@ -3,11 +3,6 @@ name: Generate schemas on: workflow_call: workflow_dispatch: - push: - branches: - - main - - rc - - hotfix-rc env: CARGO_TERM_COLOR: always