diff --git a/.github/workflows/diff.yml b/.github/workflows/diff.yml new file mode 100644 index 0000000000000000000000000000000000000000..be3e3fc23e398e8809e90e16797fa385e8daaff7 --- /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 88646ba144e4d62dfe130048285c0c213def80b2..b5d00c64365b6e8e74b47c840e7f9e4d6cb111d6 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 3b2e2013d811466090fde14111f9632b96d0120d..8d40b060a356dba5979855c08abc206c0f779da8 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 17e6a6e74c0127df68375c815cb39994efe10114..ef872e12a47f502dac54e064ccb089d4bb7ee318 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 0000000000000000000000000000000000000000..7f4322287d087770c61abc2f9470596fd0def092 --- /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 0000000000000000000000000000000000000000..aadd8b0225aa41823e39b2013c26a021a426a1ec --- /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