From 175d53bb76f88c38ccaa4062f3203ccc484056f2 Mon Sep 17 00:00:00 2001 From: binary_ho Date: Thu, 15 Aug 2024 19:55:02 +0900 Subject: [PATCH] Fine-tune CI Workflows in PR (#964) Fine-tuned GitHub Action's CI to prevent unnecessary CI tests from running. Now each CI test only runs when there are changes related to the corresponding code. --- .github/workflows/ci.yml | 47 +++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f3759c51b..f4052f616 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,6 +8,7 @@ on: paths-ignore: - 'api/docs/**' - 'build/charts/**' + - 'design/**' - '**/*.md' - '**/*.txt' - '**/.gitignore' @@ -16,11 +17,39 @@ env: GO_VERSION: '1.21' jobs: + ci-target-check: + runs-on: ubuntu-latest + + outputs: + build: ${{ steps.ci-target-check.outputs.build }} + bench: ${{ steps.ci-target-check.outputs.bench }} + sharding-test: ${{ steps.ci-target-check.outputs.sharding-test }} + + steps: + - name: CI target check by path + uses: dorny/paths-filter@v3 + id: ci-target-check + with: + filters: | + build: '**' + bench: + - 'pkg/**' + - 'server/**' + - 'client/**' + - 'admin/**' + - 'api/converter/**' + + sharding-test: + - 'server/backend/database/**' + build: name: build runs-on: ubuntu-latest - steps: + needs: ci-target-check + if: ${{ needs.ci-target-check.outputs.build == 'true' }} + + steps: - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v4 with: @@ -58,11 +87,15 @@ jobs: file: ./coverage.txt env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - + bench: name: bench runs-on: ubuntu-latest permissions: write-all + + needs: ci-target-check + if: ${{ needs.ci-target-check.outputs.bench == 'true' }} + steps: - name: Set up Go ${{ env.GO_VERSION }} @@ -100,9 +133,13 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} comment-always: true - sharding_test: - name: sharding_test + sharding-test: + name: sharding-test runs-on: ubuntu-latest + + needs: ci-target-check + if: ${{ needs.ci-target-check.outputs.sharding-test == 'true' }} + steps: - name: Set up Go ${{ env.GO_VERSION }} @@ -127,7 +164,7 @@ jobs: - name: Initialize the Shard 1 run: docker compose -f build/docker/sharding/docker-compose.yml exec shard1-1 mongosh test /scripts/init-shard1-1.js - + - name: Initialize the Shard 2 run: docker compose -f build/docker/sharding/docker-compose.yml exec shard2-1 mongosh test /scripts/init-shard2-1.js