From 7ac7f6d5022a4f3037a2685551bbcaf53b33402d Mon Sep 17 00:00:00 2001 From: Grigory Entin Date: Mon, 26 Jun 2023 03:24:11 +0200 Subject: [PATCH] Employed labels for dispatching. --- .github/workflows/main.yml | 49 +++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 82ca0f40..8b66f0f8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,7 +18,7 @@ on: branches: [main] pull_request: - types: [opened, synchronize, reopened, ready_for_review] + types: [opened, synchronize, reopened, ready_for_review, labeled] issue_comment: types: [created, edited, deleted] @@ -32,32 +32,47 @@ jobs: name: 'Paths Filter' uses: ./.github/workflows/paths-filter.yml - comments-filter: - name: 'Comments Filter' + labels-filter: + name: 'Labels Filter' runs-on: ubuntu-latest outputs: should-test: ${{ steps.filter.outputs.should-test }} should-build: ${{ steps.filter.outputs.should-build }} + steps: + - name: 'Filter labels' + id: filter + if: ${{ github.event_name == 'pull_request' && github.event.action == 'labeled' }} + run: | + if [[ "${{ github.event.label.name }}" =~ 'ci: test' ]]; then + echo "should-test=true" >> $GITHUB_OUTPUT + fi + if [[ "${{ github.event.label.name }}" =~ 'ci: build' ]]; then + echo "should-build=true" >> $GITHUB_OUTPUT + fi + comments-filter: + name: 'Comments filter' + runs-on: ubuntu-latest + permissions: + pull-requests: write steps: - name: 'Filter comments' - id: filter + if: ${{ github.event_name == 'issue_comment' }} run: | - echo "should-test=false" >> $GITHUB_OUTPUT - echo "should-build=false" >> $GITHUB_OUTPUT - if [[ "${{ github.event_name }}" == 'issue_comment' ]]; then - if [[ "${{ github.event.comment.body }}" =~ '@ci test this please' ]]; then - echo "should-test=true" >> $GITHUB_OUTPUT - fi - if [[ "${{ github.event.comment.body }}" =~ '@ci build this please' ]]; then - echo "should-build=true" >> $GITHUB_OUTPUT - fi + if [[ "${{ github.event.comment.body }}" =~ '@ci test this please' ]]; then + gh pr edit "$PR" --add-label 'ci: test' + fi + if [[ "${{ github.event.comment.body }}" =~ '@ci build this please' ]]; then + gh pr edit "$PR" --add-label 'ci: build' fi + env: + PR: ${{ github.event.issue.number }} + GH_TOKEN: ${{ github.token }} tests: name: 'Tests' - needs: [paths-filter, comments-filter] - if: ${{ !inputs.skip-tests && github.event.pull_request.draft != true && needs.paths-filter.outputs.should-test != 'false' && needs.comments-filter.outputs.should-test == 'true' }} + needs: [paths-filter, labels-filter] + if: ${{ !inputs.skip-tests && github.event.pull_request.draft != true && needs.paths-filter.outputs.should-test != 'false' && needs.labels-filter.outputs.should-test == 'true' }} uses: grigorye/ReusableWorkflows/.github/workflows/tests-generic.yml@v20 secrets: inherit with: @@ -68,8 +83,8 @@ jobs: build-app: name: 'App' - needs: [paths-filter, comments-filter] - if: ${{ !inputs.skip-build-app && github.event.pull_request.draft != true && needs.paths-filter.outputs.should-build != 'false' && needs.comments-filter.outputs.should-build == 'true' }} + needs: [paths-filter, labels-filter] + if: ${{ !inputs.skip-build-app && github.event.pull_request.draft != true && needs.paths-filter.outputs.should-build != 'false' && needs.labels-filter.outputs.should-build == 'true' }} uses: grigorye/ReusableWorkflows/.github/workflows/build-app-generic.yml@v20 with: macos-app-scheme: 'TMBuddy'