From 4337c48d29c9eaae8bdbced7279f5beafe57ee05 Mon Sep 17 00:00:00 2001 From: hanshino Date: Fri, 1 Nov 2024 17:57:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=AA=A2=E6=9F=A5?= =?UTF-8?q?=E5=BE=8C=E7=AB=AF=E5=92=8C=E5=89=8D=E7=AB=AF=E8=AE=8A=E6=9B=B4?= =?UTF-8?q?=E7=9A=84=E5=B7=A5=E4=BD=9C=E6=B5=81=E7=A8=8B=EF=BC=8C=E5=84=AA?= =?UTF-8?q?=E5=8C=96=E9=83=A8=E7=BD=B2=E6=A2=9D=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/main.yml | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4af8dcc..b5e4049 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,8 +6,36 @@ on: - main jobs: + # Check for changes in backend and frontend + check-diff: + runs-on: ubuntu-latest + outputs: + backend_changed: ${{ steps.check_backend.outputs.changed }} + frontend_changed: ${{ steps.check_frontend.outputs.changed }} + steps: + - uses: actions/checkout@v4 + + - name: Check if backend has changes + id: check_backend + run: | + if git diff --quiet HEAD^ HEAD -- ./app; then + echo "changed=false" >> $GITHUB_OUTPUT + else + echo "changed=true" >> $GITHUB_OUTPUT + fi + + - name: Check if frontend has changes + id: check_frontend + run: | + if git diff --quiet HEAD^ HEAD -- ./frontend; then + echo "changed=false" >> $GITHUB_OUTPUT + else + echo "changed=true" >> $GITHUB_OUTPUT + fi + # Backend build and push job backend: + if: needs.check-diff.outputs.backend_changed == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -33,8 +61,9 @@ jobs: cache-from: type=registry,ref=hanshino/redive_backend:buildcache cache-to: type=registry,ref=hanshino/redive_backend:buildcache,mode=max - # Frontend build and push job, executed in parallel with backend + # Frontend build and push job frontend: + if: needs.check-diff.outputs.frontend_changed == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -62,10 +91,11 @@ jobs: build-args: | REACT_APP_GOOGLE_ANALYTICS_ID=${{ secrets.GOOGLE_ANALYTICS_ID }} - # Deployment job, dependent on both backend and frontend build completion + # Deployment job deploy: runs-on: ubuntu-latest needs: [backend, frontend] # Ensure that both backend and frontend jobs are finished before deploying + if: needs.backend.result == 'success' || needs.frontend.result == 'success' steps: - name: Deploy Redive linebot uses: appleboy/ssh-action@v1.1.0 @@ -83,4 +113,4 @@ jobs: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} uses: Ilshidur/action-discord@master with: - args: "{{ EVENT_PAYLOAD.repository.full_name }} 已完成部署" + args: "{{ github.repository }} deployment complete."