name: CI/CD on: push: branches: - main - master concurrency: group: deploy-${{ gitea.ref }} cancel-in-progress: true jobs: deploy: name: Deploy runs-on: aliyun steps: - name: Checkout uses: actions/checkout@v4 # -- Backend: vet + test -- - name: Install Go run: | sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories apk add --no-cache go - name: Vet working-directory: backend run: go vet ./... - name: Test working-directory: backend run: go test -race -count=1 ./... # -- Frontend: install + build -- - name: Install Node run: apk add --no-cache nodejs npm - name: Build Frontend working-directory: frontend run: | npm ci npm run build # -- Deploy -- - name: Deploy run: | cp docker-compose.prod.yml /opt/vloop/ cp -r backend /opt/vloop/ cp -r frontend /opt/vloop/ cd /opt/vloop docker compose -f docker-compose.prod.yml up -d --build --remove-orphans docker image prune -f