name: Docker Build & Push on: push: branches: [main] tags: ['v*'] pull_request: branches: [main] env: REGISTRY: registry.gobha.me:5000 IMAGE_NAME: xcaliber/chat-switchboard jobs: build-backend: name: Build Backend Image runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: '1.22' cache: false - name: Tidy Go dependencies working-directory: ./server run: go mod tidy - name: Build backend image (PR - no push) if: github.event_name == 'pull_request' run: | docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:test -f ./server/Dockerfile ./server - name: Build and push backend (main branch) if: github.event_name != 'pull_request' run: | docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} -f ./server/Dockerfile ./server docker tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest build-frontend: name: Build Frontend Image runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Build frontend image (PR - no push) if: github.event_name == 'pull_request' run: | docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-frontend:test -f ./Dockerfile.frontend . - name: Build and push frontend (main branch) if: github.event_name != 'pull_request' run: | docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-frontend:${{ github.sha }} -f ./Dockerfile.frontend . docker tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-frontend:${{ github.sha }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-frontend:latest docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-frontend:${{ github.sha }} docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-frontend:latest