diff --git a/.github/workflows/fly-deploy.yml b/.github/workflows/fly-deploy.yml index ace56fb..4f4b922 100644 --- a/.github/workflows/fly-deploy.yml +++ b/.github/workflows/fly-deploy.yml @@ -25,6 +25,9 @@ jobs: env: FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} FLY_APP_NAME: ${{ vars.FLY_APP_NAME }} + FLY_PRIMARY_REGION: ${{ vars.FLY_PRIMARY_REGION }} + FLY_VOLUME_NAME: ${{ vars.FLY_VOLUME_NAME }} + FLY_VOLUME_SIZE_GB: ${{ vars.FLY_VOLUME_SIZE_GB }} steps: - name: Checkout uses: actions/checkout@v4 @@ -40,7 +43,40 @@ jobs: exit 1 fi - APP_NAME="${FLY_APP_NAME:-yappybara-api}" + APP_FROM_CONFIG="$(sed -n 's/^app = \"\\(.*\\)\"/\\1/p' fly.toml | head -n1)" + APP_NAME="${FLY_APP_NAME:-${APP_FROM_CONFIG}}" + PRIMARY_REGION="${FLY_PRIMARY_REGION:-ord}" + VOLUME_NAME="${FLY_VOLUME_NAME:-yappybara_data}" + VOLUME_SIZE_GB="${FLY_VOLUME_SIZE_GB:-1}" + + if [ -z "${APP_NAME}" ]; then + echo "Unable to determine Fly app name." + echo "Set repository variable FLY_APP_NAME or app = \"...\" in fly.toml." + exit 1 + fi + + # Recover from stale repo variable values by falling back to fly.toml app. + if ! flyctl apps info --app "${APP_NAME}" > /dev/null 2>&1 \ + && [ -n "${APP_FROM_CONFIG}" ] \ + && [ "${APP_FROM_CONFIG}" != "${APP_NAME}" ] \ + && flyctl apps info --app "${APP_FROM_CONFIG}" > /dev/null 2>&1; then + echo "Configured FLY_APP_NAME '${APP_NAME}' not found; using fly.toml app '${APP_FROM_CONFIG}'." + APP_NAME="${APP_FROM_CONFIG}" + fi + + if ! flyctl apps info --app "${APP_NAME}" > /dev/null 2>&1; then + echo "Fly app ${APP_NAME} does not exist yet. Creating it now..." + flyctl apps create "${APP_NAME}" + fi + + if ! flyctl volumes list --app "${APP_NAME}" | grep -q "${VOLUME_NAME}"; then + echo "Fly volume ${VOLUME_NAME} does not exist yet. Creating it now..." + flyctl volumes create "${VOLUME_NAME}" \ + --app "${APP_NAME}" \ + --region "${PRIMARY_REGION}" \ + --size "${VOLUME_SIZE_GB}" + fi + echo "Deploying to Fly app: ${APP_NAME}" flyctl deploy \ --remote-only \ diff --git a/fly.toml b/fly.toml index 99ef505..e781625 100644 --- a/fly.toml +++ b/fly.toml @@ -1,4 +1,4 @@ -app = "yappybara-api" +app = "yappybara" primary_region = "ord" [build]