diff --git a/.github/scripts/deploy-app-engine.sh b/.github/scripts/deploy-app-engine.sh deleted file mode 100755 index f3733dec..00000000 --- a/.github/scripts/deploy-app-engine.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -# Deploy to Google Cloud App Engine using pre-built Docker image -set -e - -# Get required environment variables -IMAGE_NAME="${IMAGE_NAME}" -IMAGE_TAG="${IMAGE_TAG}" -SERVICE_ACCOUNT="${SERVICE_ACCOUNT}" -APP_YAML_PATH="${APP_YAML_PATH}" - -if [ -z "$IMAGE_NAME" ] || [ -z "$IMAGE_TAG" ] || [ -z "$SERVICE_ACCOUNT" ] || [ -z "$APP_YAML_PATH" ]; then - echo "Error: Required environment variables not set" - echo "IMAGE_NAME: $IMAGE_NAME" - echo "IMAGE_TAG: $IMAGE_TAG" - echo "SERVICE_ACCOUNT: $SERVICE_ACCOUNT" - echo "APP_YAML_PATH: $APP_YAML_PATH" - exit 1 -fi - -echo "Deploying pre-built Docker image from Google Artifact Registry to App Engine..." -echo "Image: $IMAGE_NAME:$IMAGE_TAG" -echo "Version: $IMAGE_TAG" -echo "Service Account: $SERVICE_ACCOUNT" -echo "App YAML: $APP_YAML_PATH" - -# Check that Auth0 environment variables are set -if [ -z "$AUTH0_ADDRESS_NO_DOMAIN" ] || [ -z "$AUTH0_AUDIENCE_NO_DOMAIN" ]; then - echo "Error: Auth0 environment variables not set" - exit 1 -fi - -echo "Substituting environment variables in app.yaml..." -TEMP_APP_YAML=$(mktemp) -envsubst < "$APP_YAML_PATH" > "$TEMP_APP_YAML" - -# Deploy to App Engine using the substituted app.yaml -gcloud app deploy "$TEMP_APP_YAML" \ - --image-url="$IMAGE_NAME:$IMAGE_TAG" \ - --version="$IMAGE_TAG" \ - --service-account="$SERVICE_ACCOUNT" \ - --quiet - -# Clean up -rm "$TEMP_APP_YAML" - -echo "App Engine deployment completed successfully" \ No newline at end of file diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml index d83ff77a..a2f7c1c5 100644 --- a/.github/workflows/deploy-production.yml +++ b/.github/workflows/deploy-production.yml @@ -1,4 +1,4 @@ -name: 'Deployment step 2: Deploy to Production' +name: 'Deployment step 2: Deploy to Production test' on: push: @@ -9,7 +9,7 @@ env: ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true PROJECT_ID: policyengine-household-api REGION: us-central1 - SERVICE_NAME: policyengine-household-api + SERVICE_NAME: default IMAGE_NAME: us-central1-docker.pkg.dev/policyengine-household-api/policyengine-household-api/policyengine-household-api PYTHON_VERSION: '3.12' IMAGE_VERSION: python312-latest # Cannot use . in Artifact Registry versions @@ -133,34 +133,24 @@ jobs: with: credentials_json: ${{ secrets.GCP_SA_KEY }} - - name: Log in to Google Artifact Registry for image verification - uses: docker/login-action@v2 + - id: deploy + name: Deploy to App Engine + uses: google-github-actions/deploy-appengine@v2 with: - registry: us-central1-docker.pkg.dev - username: _json_key - password: ${{ secrets.GCP_SA_KEY }} - - - name: Deploy to App Engine - env: - IMAGE_NAME: ${{ env.IMAGE_NAME }} - IMAGE_TAG: ${{ env.IMAGE_VERSION }} - SERVICE_ACCOUNT: github-deployment@policyengine-household-api.iam.gserviceaccount.com - APP_YAML_PATH: ./gcp/policyengine_household_api/app.yaml - AUTH0_ADDRESS_NO_DOMAIN: ${{ secrets.AUTH0_ADDRESS_NO_DOMAIN }} - AUTH0_AUDIENCE_NO_DOMAIN: ${{ secrets.AUTH0_AUDIENCE_NO_DOMAIN }} - USER_ANALYTICS_DB_USERNAME: ${{ secrets.USER_ANALYTICS_DB_USERNAME }} - USER_ANALYTICS_DB_PASSWORD: ${{ secrets.USER_ANALYTICS_DB_PASSWORD }} - USER_ANALYTICS_DB_CONNECTION_NAME: ${{ secrets.USER_ANALYTICS_DB_CONNECTION_NAME }} - ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} - run: .github/scripts/deploy-app-engine.sh + deliverables: "./gcp/policyengine_household_api/app.yaml" + image_url: ${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION }} + promote: false # Don't move traffic over until full successful deploy + flags: "--quiet" + env_vars: |- + AUTH0_ADDRESS_NO_DOMAIN=${{ secrets.AUTH0_ADDRESS_NO_DOMAIN }} + AUTH0_AUDIENCE_NO_DOMAIN=${{ secrets.AUTH0_AUDIENCE_NO_DOMAIN }} + USER_ANALYTICS_DB_USERNAME=${{ secrets.USER_ANALYTICS_DB_USERNAME }} + USER_ANALYTICS_DB_PASSWORD=${{ secrets.USER_ANALYTICS_DB_PASSWORD }} + USER_ANALYTICS_DB_CONNECTION_NAME=${{ secrets.USER_ANALYTICS_DB_CONNECTION_NAME }} + ANTHROPIC_API_KEY=${{ secrets.ANTHROPIC_API_KEY }} - name: Set traffic to new version env: SERVICE_NAME: ${{ env.SERVICE_NAME }} - VERSION: ${{ env.IMAGE_VERSION }} + VERSION: ${{ steps.deploy.outputs.version }} run: .github/scripts/set-traffic.sh - - - name: Verify deployment - env: - SERVICE_NAME: ${{ env.SERVICE_NAME }} - run: .github/scripts/verify-deployment.sh diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29b..d215e4b5 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,5 @@ +- bump: patch + changes: + changed: + - Replaced custom GCP deploy script with official Google action. + - Re-enabled itemized deductions to prevent UK service outage. \ No newline at end of file diff --git a/gcp/policyengine_household_api/app.yaml b/gcp/policyengine_household_api/app.yaml index 763ba6c2..ba8a2f74 100644 --- a/gcp/policyengine_household_api/app.yaml +++ b/gcp/policyengine_household_api/app.yaml @@ -11,7 +11,7 @@ automatic_scaling: cpu_utilization: target_utilization: 0.8 readiness_check: - app_start_timeout_sec: 1800 # Maximum allowed (30 minutes) + app_start_timeout_sec: 1800 check_interval_sec: 30 timeout_sec: 10 failure_threshold: 5 @@ -21,11 +21,4 @@ liveness_check: check_interval_sec: 30 timeout_sec: 10 failure_threshold: 5 - success_threshold: 1 -env_variables: - AUTH0_ADDRESS_NO_DOMAIN: ${AUTH0_ADDRESS_NO_DOMAIN} - AUTH0_AUDIENCE_NO_DOMAIN: ${AUTH0_AUDIENCE_NO_DOMAIN} - USER_ANALYTICS_DB_USERNAME: ${USER_ANALYTICS_DB_USERNAME} - USER_ANALYTICS_DB_PASSWORD: ${USER_ANALYTICS_DB_PASSWORD} - USER_ANALYTICS_DB_CONNECTION_NAME: ${USER_ANALYTICS_DB_CONNECTION_NAME} - ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} + success_threshold: 1 \ No newline at end of file diff --git a/policyengine_household_api/country.py b/policyengine_household_api/country.py index ccf43866..062ad7d3 100644 --- a/policyengine_household_api/country.py +++ b/policyengine_household_api/country.py @@ -335,10 +335,6 @@ def calculate( situation=household, ) - simulation.tax_benefit_system.parameters.gov.simulation.branch_to_determine_itemization.update( - start=2020, value=False - ) - household = json.loads(json.dumps(household)) # Run tracer on household