CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | name: Fly Deploy
on:
push:
branches:
- main
- claude/build-status-update-3MXsf
workflow_dispatch: {}
concurrency:
group: fly-deploy-${{ github.ref }}
cancel-in-progress: false
jobs:
deploy:
name: Deploy to Fly.io
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up flyctl
uses: superfly/flyctl-actions/setup-flyctl@master
- name: Ensure app exists
run: |
if ! flyctl apps list --json 2>/dev/null | grep -q '"Name":\s*"gluecron"'; then
echo "Creating Fly app 'gluecron'..."
flyctl apps create gluecron --org personal
else
echo "App 'gluecron' already exists."
fi
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
- name: Ensure volume exists
run: |
if ! flyctl volumes list -a gluecron --json 2>/dev/null | grep -q '"Name":\s*"gluecron_repos"'; then
echo "Creating volume 'gluecron_repos' in iad..."
flyctl volumes create gluecron_repos --app gluecron --size 3 --region iad --yes
else
echo "Volume 'gluecron_repos' already exists."
fi
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
- name: Sync application secrets to Fly
run: |
flyctl secrets set --app gluecron --stage \
DATABASE_URL="$DATABASE_URL" \
APP_BASE_URL="$APP_BASE_URL" \
DEMO_SEED_ON_BOOT="$DEMO_SEED_ON_BOOT" \
EMAIL_PROVIDER="$EMAIL_PROVIDER"
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
APP_BASE_URL: ${{ vars.APP_BASE_URL || 'https://gluecron.fly.dev' }}
DEMO_SEED_ON_BOOT: ${{ vars.DEMO_SEED_ON_BOOT || '1' }}
EMAIL_PROVIDER: ${{ vars.EMAIL_PROVIDER || 'log' }}
- name: Deploy
run: flyctl deploy --remote-only --app gluecron
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
- name: Smoke test
run: |
sleep 10
for i in 1 2 3 4 5; do
code=$(curl -s -o /dev/null -w "%{http_code}" https://gluecron.fly.dev/healthz || echo "000")
echo "Attempt $i: /healthz returned $code"
if [ "$code" = "200" ]; then
echo "Site is live."
exit 0
fi
sleep 10
done
echo "Site did not respond with 200 after 50s. Check 'fly logs -a gluecron'."
exit 1
|