name: Build (Dev) on: push: branches: [dev] pull_request: branches: [dev] workflow_dispatch: env: GO_VERSION: "1.23" NODE_VERSION: "22" BINARY_NAME: server jobs: build-go-backend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} - name: Test Go backend working-directory: go-backend run: go test ./... - name: Build Go binary working-directory: go-backend run: | CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \ go build -ldflags="-s -w -X main.version=${GITHUB_SHA:0:8}" \ -o ${{ env.BINARY_NAME }} ./cmd/server - name: Upload Go binary uses: actions/upload-artifact@v4 with: name: go-backend-binary path: go-backend/${{ env.BINARY_NAME }} retention-days: 3 build-frontend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - name: Install and build frontend working-directory: frontend run: | npm ci npm run build - name: Upload frontend dist uses: actions/upload-artifact@v4 with: name: frontend-dist path: frontend/dist/ retention-days: 3 trigger-deploy: if: github.event_name == 'push' needs: [build-go-backend, build-frontend] runs-on: ubuntu-latest steps: - name: Trigger deploy workflow uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | await github.rest.repos.createDispatchEvent({ owner: context.repo.owner, repo: context.repo.repo, event_type: 'dev-build-success', client_payload: { sha: context.sha, ref: context.ref } })