From e360f986e935a9f601951df7fac2ebaf3da03141 Mon Sep 17 00:00:00 2001 From: Nathan Toups Date: Sun, 10 Aug 2025 14:32:21 -0600 Subject: [PATCH] chore: update deploy pipeline --- .github/workflows/deploy-fly.yaml | 38 -------------------- .github/workflows/{go.yaml => haystack.yaml} | 31 ++++++++++++---- examples/deployments/fly.io/deploy.sh | 10 ++++-- 3 files changed, 33 insertions(+), 46 deletions(-) delete mode 100644 .github/workflows/deploy-fly.yaml rename .github/workflows/{go.yaml => haystack.yaml} (78%) diff --git a/.github/workflows/deploy-fly.yaml b/.github/workflows/deploy-fly.yaml deleted file mode 100644 index e29b574..0000000 --- a/.github/workflows/deploy-fly.yaml +++ /dev/null @@ -1,38 +0,0 @@ -name: Deploy to Fly.io - -on: - workflow_run: - workflows: ["CI"] - types: - - completed - branches: ["main"] - workflow_dispatch: # Allow manual trigger - -jobs: - deploy: - name: Deploy to Fly.io - runs-on: ubuntu-latest - environment: - name: trunk - # Only deploy if: - # 1. CI workflow succeeded AND triggered by push to main (not from a PR) - # 2. OR manually triggered (workflow_dispatch) - # This prevents deployment from PRs even if someone modifies the workflow - if: | - (github.event.workflow_run.conclusion == 'success' && - github.event.workflow_run.event == 'push' && - github.event.workflow_run.head_branch == 'main') || - github.event_name == 'workflow_dispatch' - - steps: - - uses: actions/checkout@v4 - - - name: Setup Fly CLI - uses: superfly/flyctl-actions/setup-flyctl@master - - - name: Deploy to Fly.io - run: | - cd examples/deployments/fly.io - ./deploy.sh - env: - FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} diff --git a/.github/workflows/go.yaml b/.github/workflows/haystack.yaml similarity index 78% rename from .github/workflows/go.yaml rename to .github/workflows/haystack.yaml index 8eb0011..6c78f3e 100644 --- a/.github/workflows/go.yaml +++ b/.github/workflows/haystack.yaml @@ -22,7 +22,7 @@ jobs: - name: Check formatting run: | - go fmt ./... + make fmt if [ -n "$(git diff --name-only)" ]; then echo "Code is not properly formatted. Please run 'make fmt'" git diff @@ -64,24 +64,43 @@ jobs: runs-on: ubuntu-latest needs: [quality-checks, test] # Only build and push Docker images on main branch after tests pass - # Note: Fly.io deployment happens in a separate workflow (deploy-fly.yaml) if: github.event_name == 'push' && github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - + - name: Log in to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - + - name: Build info run: make docker-info - + - name: Build and push Docker image run: make docker-push env: DOCKER_PUSH: true + + deploy: + runs-on: ubuntu-latest + needs: docker-build + # Deploy to Fly.io after Docker image is built and pushed + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + environment: + name: trunk + steps: + - uses: actions/checkout@v4 + + - name: Setup Fly CLI + uses: superfly/flyctl-actions/setup-flyctl@master + + - name: Deploy to Fly.io + run: | + cd examples/deployments/fly.io + ./deploy.sh + env: + FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} diff --git a/examples/deployments/fly.io/deploy.sh b/examples/deployments/fly.io/deploy.sh index 5891cf2..bf425dc 100755 --- a/examples/deployments/fly.io/deploy.sh +++ b/examples/deployments/fly.io/deploy.sh @@ -70,14 +70,20 @@ main() { log_info "Deploying image: ${image_tag}" # Deploy to Fly.io - if fly deploy --config fly.toml.generated; then + # Use flyctl if available (GitHub Actions), otherwise fall back to fly + FLY_CMD="fly" + if command -v flyctl >/dev/null 2>&1; then + FLY_CMD="flyctl" + fi + + if $FLY_CMD deploy --config fly.toml.generated; then log_info "✓ Deployment successful!" # Clean up generated file rm -f fly.toml.generated # Show app info - fly status + $FLY_CMD status else log_error "Deployment failed!" rm -f fly.toml.generated