From e972f99dcc9bcb525989ccb9244383580fddc731 Mon Sep 17 00:00:00 2001 From: Bryan Date: Mon, 22 Sep 2025 17:59:33 +0800 Subject: [PATCH] Add .gitea/workflows/cicd.yml --- .gitea/workflows/cicd.yml | 70 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .gitea/workflows/cicd.yml diff --git a/.gitea/workflows/cicd.yml b/.gitea/workflows/cicd.yml new file mode 100644 index 0000000..a1b22c3 --- /dev/null +++ b/.gitea/workflows/cicd.yml @@ -0,0 +1,70 @@ +name: Vue CI/CD Pipeline + +on: + push: + branches: + - prod + - test + workflow_dispatch: + +env: + REGISTRY_URL: mf-image.tencentcloudcr.com + ENV_TAG: ${{ github.ref_name == 'prod' && 'prod' || 'test' }} + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Set Dynamic Image Name + run: | + PROJECT_NAME_RAW=$(echo "${{ github.repository }}" | cut -d'/' -f2) + echo PROJECT_NAME=$(echo "$PROJECT_NAME_RAW" | tr '_' '-') >> $GITHUB_ENV + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '18' + + - name: Install Dependencies + run: npm install -g pnpm && pnpm install + + - name: Build Vue App + run: npm run build + + - name: Login Docker Registry + run: | + echo "${{ secrets.DOCKER_PASSWORD }}" | docker login $REGISTRY_URL -u ${{ secrets.DOCKER_USERNAME }} --password-stdin + + - name: Build Docker Image + run: | + ls -l + docker build -t $REGISTRY_URL/$ENV_TAG/${{ env.PROJECT_NAME }}:${{ github.sha }} . + + - name: Push Docker Image + run: | + docker push $REGISTRY_URL/$ENV_TAG/${{ env.PROJECT_NAME }}:${{ github.sha }} + + deploy: + runs-on: ubuntu-latest + needs: build + steps: + - name: Set up kubectl + uses: azure/setup-kubectl@v3 + + - name: Set Dynamic Image Name + run: | + PROJECT_NAME_RAW=$(echo "${{ github.repository }}" | cut -d'/' -f2) + echo PROJECT_NAME=$(echo "$PROJECT_NAME_RAW" | tr '_' '-') >> $GITHUB_ENV + + - name: Set up Kubeconfig + run: | + mkdir -p ~/.kube + echo '${{ secrets.KUBE_CONFIG }}' > ~/.kube/config + + - name: Deploy to Kubernetes + run: | + kubectl -n $ENV_TAG set image deployment/${{ env.PROJECT_NAME }} \ + ${{ env.PROJECT_NAME }}=$REGISTRY_URL/$ENV_TAG/${{ env.PROJECT_NAME }}:${{ github.sha }}