From 6f32f840a934449ea5c5064b581507730e0a7685 Mon Sep 17 00:00:00 2001 From: James Briggs <35938317+jamescalam@users.noreply.github.com> Date: Fri, 14 Mar 2025 12:07:31 +0400 Subject: [PATCH] feat: improved workflow selection --- .github/workflows/diff.yml | 45 ++++++++++++++++++++++++++++ .github/workflows/docs.yml | 5 ++-- .github/workflows/lint.yml | 2 +- .github/workflows/test.yml | 2 +- .github/workflows/triggers_merge.yml | 24 +++++++++++++++ .github/workflows/triggers_pr.yml | 30 +++++++++++++++++++ 6 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/diff.yml create mode 100644 .github/workflows/triggers_merge.yml create mode 100644 .github/workflows/triggers_pr.yml diff --git a/.github/workflows/diff.yml b/.github/workflows/diff.yml new file mode 100644 index 00000000..be3e3fc2 --- /dev/null +++ b/.github/workflows/diff.yml @@ -0,0 +1,45 @@ +name: Diff +on: + workflow_call: + inputs: + config: + type: string + required: true + description: 'YAML file containing modules to track' + outputs: + diff: + description: "diff" + value: "${{ jobs.diff.outputs.diff }}" + tags: + description: "tags" + value: "${{ jobs.diff.outputs.tags }}" + modules: + description: "modules" + value: "${{ jobs.diff.outputs.modules }}" + changed: + description: "changed" + value: "${{ jobs.diff.outputs.changed }}" + +jobs: + diff: + name: Compare + runs-on: ubuntu-latest + outputs: + diff: ${{ steps.run.outputs.diff }} + tags: ${{ steps.run.outputs.tags }} + modules: ${{ steps.run.outputs.modules }} + changed: ${{ steps.run.outputs.changed }} + steps: + + - name: Checkout + uses: actions/checkout@v4 + + - id: run + name: Diff action + uses: aurelio-labs/diff-action@0.2.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + config: ${{ inputs.config }} + + - name: Print output + run: echo '${{ toJSON(steps.run.outputs) }}' | jq . diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 88646ba1..b5d00c64 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,9 +1,8 @@ name: Release Docs on: - push: - branches: - - main + workflow_call: + jobs: build-docs: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3b2e2013..8d40b060 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,7 +1,7 @@ name: lint on: - pull_request: + workflow_call: jobs: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 17e6a6e7..ef872e12 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,7 +1,7 @@ name: Test on: - pull_request: + workflow_call: jobs: diff --git a/.github/workflows/triggers_merge.yml b/.github/workflows/triggers_merge.yml new file mode 100644 index 00000000..7f432228 --- /dev/null +++ b/.github/workflows/triggers_merge.yml @@ -0,0 +1,24 @@ +name: Merge Workflow + +permissions: + id-token: write + contents: read + +on: + merge: + branches: + - main + +jobs: + + diff: + name: "Diff" + uses: ./.github/workflows/diff.yaml + with: + config: diff-config.yaml + + docs: + needs: [ diff ] + name: "Docs" + if: ${{ fromJson(needs.diff.outputs.tags).docs.changed }} + uses: ./.github/workflows/docs.yml diff --git a/.github/workflows/triggers_pr.yml b/.github/workflows/triggers_pr.yml new file mode 100644 index 00000000..aadd8b02 --- /dev/null +++ b/.github/workflows/triggers_pr.yml @@ -0,0 +1,30 @@ +name: PR Workflow + +permissions: + id-token: write + contents: read + +on: + pull_request: + types: [ opened, synchronize, ready_for_review ] + branches: [ 'main' ] + +jobs: + + diff: + name: "Diff" + uses: ./.github/workflows/diff.yaml + with: + config: diff-config.yaml + + lint: + needs: [ diff ] + name: "Lint" + if: ${{ fromJson(needs.diff.outputs.tags).code.changed }} + uses: ./.github/workflows/lint.yml + + tests: + needs: [ diff ] + name: "Tests" + if: ${{ fromJson(needs.diff.outputs.tags).code.changed }} + uses: ./.github/workflows/test.yml -- GitLab