Skip to content

Commit 9102763

Browse files
committed
fix: Use official GCP action
1 parent 3bc2797 commit 9102763

3 files changed

Lines changed: 167 additions & 9 deletions

File tree

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
name: 'Deployment step 2: Deploy to Production'
2+
3+
on:
4+
# push:
5+
# branches:
6+
# - main
7+
pull_request:
8+
branches:
9+
- main
10+
11+
env:
12+
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
13+
PROJECT_ID: policyengine-household-api
14+
REGION: us-central1
15+
SERVICE_NAME: policyengine-household-api
16+
IMAGE_NAME: us-central1-docker.pkg.dev/policyengine-household-api/policyengine-household-api/policyengine-household-api
17+
PYTHON_VERSION: '3.12'
18+
IMAGE_VERSION: python312-latest # Cannot use . in Artifact Registry versions
19+
20+
jobs:
21+
lint-and-test:
22+
name: Lint and test
23+
runs-on: ubuntu-latest
24+
# if: |
25+
# (github.repository == 'PolicyEngine/policyengine-household-api')
26+
# && (github.event.head_commit.message == 'Update PolicyEngine Household API')
27+
steps:
28+
- name: Checkout code
29+
uses: actions/checkout@v4
30+
31+
- name: Set up Python
32+
uses: actions/setup-python@v4
33+
with:
34+
python-version: ${{ env.PYTHON_VERSION }}
35+
36+
- name: Set up Cloud SDK
37+
uses: google-github-actions/setup-gcloud@v0
38+
with:
39+
project_id: policyengine-household-api
40+
service_account_key: ${{ secrets.GCP_SA_KEY }}
41+
export_default_credentials: true
42+
43+
- name: Install dependencies
44+
run: make install
45+
46+
- name: Run linter
47+
run: make format
48+
49+
- name: Run tests
50+
run: make test
51+
env:
52+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
53+
AUTH0_ADDRESS_NO_DOMAIN: ${{ secrets.AUTH0_ADDRESS_NO_DOMAIN }}
54+
AUTH0_AUDIENCE_NO_DOMAIN: ${{ secrets.AUTH0_AUDIENCE_NO_DOMAIN }}
55+
AUTH0_TEST_TOKEN_NO_DOMAIN: ${{ secrets.AUTH0_TEST_TOKEN_NO_DOMAIN }}
56+
USER_ANALYTICS_DB_USERNAME: ${{ secrets.USER_ANALYTICS_DB_USERNAME }}
57+
USER_ANALYTICS_DB_PASSWORD: ${{ secrets.USER_ANALYTICS_DB_PASSWORD }}
58+
USER_ANALYTICS_DB_CONNECTION_NAME: ${{ secrets.USER_ANALYTICS_DB_CONNECTION_NAME }}
59+
60+
build-docker:
61+
name: Build Docker image
62+
runs-on: ubuntu-latest
63+
# if: |
64+
# (github.repository == 'PolicyEngine/policyengine-household-api')
65+
# && (github.event.head_commit.message == 'Update PolicyEngine Household API')
66+
# needs: [lint-and-test]
67+
steps:
68+
- name: Checkout code
69+
uses: actions/checkout@v4
70+
71+
- name: Authenticate to Google Cloud
72+
uses: google-github-actions/auth@v2
73+
with:
74+
credentials_json: ${{ secrets.GCP_SA_KEY }}
75+
76+
- name: Set up Cloud SDK
77+
uses: google-github-actions/setup-gcloud@v0
78+
with:
79+
project_id: ${{ env.PROJECT_ID }}
80+
service_account_key: ${{ secrets.GCP_SA_KEY }}
81+
export_default_credentials: true
82+
83+
- name: Log in to Google Artifact Registry
84+
uses: docker/login-action@v2
85+
with:
86+
registry: us-central1-docker.pkg.dev
87+
username: _json_key
88+
password: ${{ secrets.GCP_SA_KEY }}
89+
90+
- name: Set up Docker Buildx
91+
uses: docker/setup-buildx-action@v3
92+
93+
- name: Extract metadata
94+
id: meta
95+
uses: docker/metadata-action@v5
96+
with:
97+
images: ${{ env.IMAGE_NAME }}
98+
tags: |
99+
type=sha,prefix=,suffix=
100+
type=raw,value=latest,enable={{is_default_branch}}
101+
type=raw,value=${{ env.IMAGE_VERSION }},enable={{is_default_branch}}
102+
103+
- name: Build and push Docker image
104+
uses: docker/build-push-action@v5
105+
with:
106+
context: .
107+
file: ./gcp/policyengine_household_api/Dockerfile.production
108+
push: true
109+
tags: ${{ steps.meta.outputs.tags }}
110+
labels: ${{ steps.meta.outputs.labels }}
111+
cache-from: type=gha
112+
cache-to: type=gha,mode=max
113+
114+
- name: Make script executable
115+
run: chmod +x .github/scripts/verify-image-push.sh
116+
117+
- name: Verify image was pushed
118+
env:
119+
GENERATED_TAGS: ${{ steps.meta.outputs.tags }}
120+
run: .github/scripts/verify-image-push.sh
121+
122+
# Deploy to App Engine using pre-built Docker image from Google Artifact Registry
123+
deploy:
124+
name: Deploy to App Engine
125+
runs-on: ubuntu-latest
126+
# if: |
127+
# (github.repository == 'PolicyEngine/policyengine-household-api')
128+
# && (github.event.head_commit.message == 'Update PolicyEngine Household API')
129+
# needs: [lint-and-test, build-docker]
130+
needs: [build-docker]
131+
steps:
132+
- name: Checkout code
133+
uses: actions/checkout@v4
134+
135+
- name: Authenticate to Google Cloud
136+
uses: google-github-actions/auth@v2
137+
with:
138+
credentials_json: ${{ secrets.GCP_SA_KEY }}
139+
140+
- name: Deploy to App Engine
141+
uses: google-github-actions/deploy-appengine@v2
142+
with:
143+
deliverables: "./gcp/policyengine_household_api/app.yaml"
144+
image_url: ${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION }}
145+
version: ${{ env.IMAGE_VERSION }}
146+
promote: false # Equivalent to --no-promote
147+
flags: "--quiet"
148+
env_vars: |
149+
AUTH0_ADDRESS_NO_DOMAIN=${{ secrets.AUTH0_ADDRESS_NO_DOMAIN }}
150+
AUTH0_AUDIENCE_NO_DOMAIN=${{ secrets.AUTH0_AUDIENCE_NO_DOMAIN }}
151+
USER_ANALYTICS_DB_USERNAME=${{ secrets.USER_ANALYTICS_DB_USERNAME }}
152+
USER_ANALYTICS_DB_PASSWORD=${{ secrets.USER_ANALYTICS_DB_PASSWORD }}
153+
USER_ANALYTICS_DB_CONNECTION_NAME=${{ secrets.USER_ANALYTICS_DB_CONNECTION_NAME }}
154+
ANTHROPIC_API_KEY=${{ secrets.ANTHROPIC_API_KEY }}
155+
156+
# - name: Set traffic to new version
157+
# env:
158+
# SERVICE_NAME: ${{ env.SERVICE_NAME }}
159+
# VERSION: ${{ env.IMAGE_VERSION }}
160+
# run: .github/scripts/set-traffic.sh
161+
162+
- name: Verify deployment
163+
env:
164+
SERVICE_NAME: ${{ env.SERVICE_NAME }}
165+
run: .github/scripts/verify-deployment.sh

gcp/policyengine_household_api/app.yaml

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ automatic_scaling:
1111
cpu_utilization:
1212
target_utilization: 0.8
1313
readiness_check:
14-
app_start_timeout_sec: 1800 # Maximum allowed (30 minutes)
14+
app_start_timeout_sec: 1800
1515
check_interval_sec: 30
1616
timeout_sec: 10
1717
failure_threshold: 5
@@ -21,11 +21,4 @@ liveness_check:
2121
check_interval_sec: 30
2222
timeout_sec: 10
2323
failure_threshold: 5
24-
success_threshold: 1
25-
env_variables:
26-
AUTH0_ADDRESS_NO_DOMAIN: ${AUTH0_ADDRESS_NO_DOMAIN}
27-
AUTH0_AUDIENCE_NO_DOMAIN: ${AUTH0_AUDIENCE_NO_DOMAIN}
28-
USER_ANALYTICS_DB_USERNAME: ${USER_ANALYTICS_DB_USERNAME}
29-
USER_ANALYTICS_DB_PASSWORD: ${USER_ANALYTICS_DB_PASSWORD}
30-
USER_ANALYTICS_DB_CONNECTION_NAME: ${USER_ANALYTICS_DB_CONNECTION_NAME}
31-
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
24+
success_threshold: 1

0 commit comments

Comments
 (0)