Skip to content

Commit 8035735

Browse files
authored
Merge pull request #561 from DataIntegrationGroup/jir-ogc
jir-ogc
2 parents b830123 + 9274d83 commit 8035735

4 files changed

Lines changed: 92 additions & 69 deletions

File tree

.github/app.template.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
service: ${SERVICE_NAME}
2+
runtime: python313
3+
entrypoint: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
4+
instance_class: F4
5+
service_account: "${CLOUD_SQL_USER}.gserviceaccount.com"
6+
handlers:
7+
- url: /.*
8+
secure: always
9+
script: auto
10+
env_variables:
11+
MODE: "production"
12+
ENVIRONMENT: "${ENVIRONMENT}"
13+
DB_DRIVER: "cloudsql"
14+
CLOUD_SQL_INSTANCE_NAME: "${CLOUD_SQL_INSTANCE_NAME}"
15+
CLOUD_SQL_DATABASE: "${CLOUD_SQL_DATABASE}"
16+
CLOUD_SQL_USER: "${CLOUD_SQL_USER}"
17+
PYGEOAPI_POSTGRES_DB: "${PYGEOAPI_POSTGRES_DB}"
18+
PYGEOAPI_POSTGRES_USER: "${PYGEOAPI_POSTGRES_USER}"
19+
PYGEOAPI_POSTGRES_HOST: "${PYGEOAPI_POSTGRES_HOST}"
20+
PYGEOAPI_POSTGRES_PORT: "${PYGEOAPI_POSTGRES_PORT}"
21+
PYGEOAPI_POSTGRES_PASSWORD: "${PYGEOAPI_POSTGRES_PASSWORD}"
22+
PYGEOAPI_SERVER_URL: "${PYGEOAPI_SERVER_URL}"
23+
CLOUD_SQL_IAM_AUTH: "${CLOUD_SQL_IAM_AUTH}"
24+
GCS_SERVICE_ACCOUNT_KEY: "${GCS_SERVICE_ACCOUNT_KEY}"
25+
GCS_BUCKET_NAME: "${GCS_BUCKET_NAME}"
26+
AUTHENTIK_URL: "${AUTHENTIK_URL}"
27+
AUTHENTIK_CLIENT_ID: "${AUTHENTIK_CLIENT_ID}"
28+
AUTHENTIK_AUTHORIZE_URL: "${AUTHENTIK_AUTHORIZE_URL}"
29+
AUTHENTIK_TOKEN_URL: "${AUTHENTIK_TOKEN_URL}"
30+
SESSION_SECRET_KEY: "${SESSION_SECRET_KEY}"
31+
APITALLY_CLIENT_ID: "${APITALLY_CLIENT_ID}"

.github/workflows/CD_production.yml

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -47,41 +47,37 @@ jobs:
4747
run: |
4848
uv run alembic upgrade head
4949
50-
- name: Create app.yaml
50+
- name: Ensure envsubst is available
5151
run: |
52-
cat <<EOF > app.yaml
53-
service: ocotillo-api
54-
runtime: python313
55-
entrypoint: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
56-
instance_class: F4
57-
service_account: "${{ secrets.CLOUD_SQL_USER }}.gserviceaccount.com"
58-
handlers:
59-
- url: /.*
60-
secure: always
61-
script: auto
62-
env_variables:
63-
MODE: "production"
64-
ENVIRONMENT: "production"
65-
DB_DRIVER: "cloudsql"
66-
CLOUD_SQL_INSTANCE_NAME: "${{ secrets.CLOUD_SQL_INSTANCE_NAME }}"
67-
CLOUD_SQL_DATABASE: "${{ vars.CLOUD_SQL_DATABASE }}"
68-
CLOUD_SQL_USER: "${{ secrets.CLOUD_SQL_USER }}"
69-
PYGEOAPI_POSTGRES_DB: "${{ vars.CLOUD_SQL_DATABASE }}"
70-
PYGEOAPI_POSTGRES_USER: "${{ secrets.PYGEOAPI_POSTGRES_USER }}"
71-
PYGEOAPI_POSTGRES_HOST: "${{ vars.PYGEOAPI_POSTGRES_HOST || '127.0.0.1' }}"
72-
PYGEOAPI_POSTGRES_PORT: "${{ vars.PYGEOAPI_POSTGRES_PORT || '5432' }}"
73-
PYGEOAPI_POSTGRES_PASSWORD: "${{ secrets.PYGEOAPI_POSTGRES_PASSWORD }}"
74-
PYGEOAPI_SERVER_URL: "${{ vars.PYGEOAPI_SERVER_URL }}"
75-
CLOUD_SQL_IAM_AUTH: true
76-
GCS_SERVICE_ACCOUNT_KEY: "${{ secrets.GCS_SERVICE_ACCOUNT_KEY }}"
77-
GCS_BUCKET_NAME: "${{ vars.GCS_BUCKET_NAME }}"
78-
AUTHENTIK_URL: "${{ vars.AUTHENTIK_URL }}"
79-
AUTHENTIK_CLIENT_ID: "${{ vars.AUTHENTIK_CLIENT_ID }}"
80-
AUTHENTIK_AUTHORIZE_URL: "${{ vars.AUTHENTIK_AUTHORIZE_URL }}"
81-
AUTHENTIK_TOKEN_URL: "${{ vars.AUTHENTIK_TOKEN_URL }}"
82-
SESSION_SECRET_KEY: "${{ secrets.SESSION_SECRET_KEY }}"
83-
APITALLY_CLIENT_ID: "${{ vars.APITALLY_CLIENT_ID }}"
84-
EOF
52+
if ! command -v envsubst >/dev/null 2>&1; then
53+
sudo apt-get update
54+
sudo apt-get install -y gettext-base
55+
fi
56+
57+
- name: Render app.yaml
58+
env:
59+
SERVICE_NAME: "ocotillo-api"
60+
ENVIRONMENT: "production"
61+
CLOUD_SQL_INSTANCE_NAME: "${{ secrets.CLOUD_SQL_INSTANCE_NAME }}"
62+
CLOUD_SQL_DATABASE: "${{ vars.CLOUD_SQL_DATABASE }}"
63+
CLOUD_SQL_USER: "${{ secrets.CLOUD_SQL_USER }}"
64+
PYGEOAPI_POSTGRES_DB: "${{ vars.CLOUD_SQL_DATABASE }}"
65+
PYGEOAPI_POSTGRES_USER: "${{ secrets.PYGEOAPI_POSTGRES_USER }}"
66+
PYGEOAPI_POSTGRES_HOST: "${{ vars.PYGEOAPI_POSTGRES_HOST || '127.0.0.1' }}"
67+
PYGEOAPI_POSTGRES_PORT: "${{ vars.PYGEOAPI_POSTGRES_PORT || '5432' }}"
68+
PYGEOAPI_POSTGRES_PASSWORD: "${{ secrets.PYGEOAPI_POSTGRES_PASSWORD }}"
69+
PYGEOAPI_SERVER_URL: "${{ vars.PYGEOAPI_SERVER_URL }}"
70+
CLOUD_SQL_IAM_AUTH: "true"
71+
GCS_SERVICE_ACCOUNT_KEY: "${{ secrets.GCS_SERVICE_ACCOUNT_KEY }}"
72+
GCS_BUCKET_NAME: "${{ vars.GCS_BUCKET_NAME }}"
73+
AUTHENTIK_URL: "${{ vars.AUTHENTIK_URL }}"
74+
AUTHENTIK_CLIENT_ID: "${{ vars.AUTHENTIK_CLIENT_ID }}"
75+
AUTHENTIK_AUTHORIZE_URL: "${{ vars.AUTHENTIK_AUTHORIZE_URL }}"
76+
AUTHENTIK_TOKEN_URL: "${{ vars.AUTHENTIK_TOKEN_URL }}"
77+
SESSION_SECRET_KEY: "${{ secrets.SESSION_SECRET_KEY }}"
78+
APITALLY_CLIENT_ID: "${{ vars.APITALLY_CLIENT_ID }}"
79+
run: |
80+
envsubst < .github/app.template.yaml > app.yaml
8581
8682
- name: Deploy to Google Cloud
8783
run: |

.github/workflows/CD_staging.yml

Lines changed: 30 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -47,42 +47,37 @@ jobs:
4747
run: |
4848
uv run alembic upgrade head
4949
50-
# Uses Google Cloud Secret Manager to store secret credentials
51-
- name: Create app.yaml
50+
- name: Ensure envsubst is available
5251
run: |
53-
cat <<EOF > app.yaml
54-
service: ocotillo-api-staging
55-
runtime: python313
56-
entrypoint: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
57-
service_account: "${{ secrets.CLOUD_SQL_USER }}.gserviceaccount.com"
58-
instance_class: F4
59-
handlers:
60-
- url: /.*
61-
secure: always
62-
script: auto
63-
env_variables:
64-
MODE: "production"
65-
ENVIRONMENT: "staging"
66-
DB_DRIVER: "cloudsql"
67-
CLOUD_SQL_INSTANCE_NAME: "${{ secrets.CLOUD_SQL_INSTANCE_NAME }}"
68-
CLOUD_SQL_DATABASE: "${{ vars.CLOUD_SQL_DATABASE }}"
69-
CLOUD_SQL_USER: "${{ secrets.CLOUD_SQL_USER }}"
70-
PYGEOAPI_POSTGRES_DB: "${{ vars.CLOUD_SQL_DATABASE }}"
71-
PYGEOAPI_POSTGRES_USER: "${{ secrets.PYGEOAPI_POSTGRES_USER }}"
72-
PYGEOAPI_POSTGRES_HOST: "${{ vars.PYGEOAPI_POSTGRES_HOST || '127.0.0.1' }}"
73-
PYGEOAPI_POSTGRES_PORT: "${{ vars.PYGEOAPI_POSTGRES_PORT || '5432' }}"
74-
PYGEOAPI_POSTGRES_PASSWORD: "${{ secrets.PYGEOAPI_POSTGRES_PASSWORD }}"
75-
PYGEOAPI_SERVER_URL: "${{ vars.PYGEOAPI_SERVER_URL }}"
76-
CLOUD_SQL_IAM_AUTH: true
77-
GCS_SERVICE_ACCOUNT_KEY: "${{ secrets.GCS_SERVICE_ACCOUNT_KEY }}"
78-
GCS_BUCKET_NAME: "${{ vars.GCS_BUCKET_NAME }}"
79-
AUTHENTIK_URL: "${{ vars.AUTHENTIK_URL }}"
80-
AUTHENTIK_CLIENT_ID: "${{ vars.AUTHENTIK_CLIENT_ID }}"
81-
AUTHENTIK_AUTHORIZE_URL: "${{ vars.AUTHENTIK_AUTHORIZE_URL }}"
82-
AUTHENTIK_TOKEN_URL: "${{ vars.AUTHENTIK_TOKEN_URL }}"
83-
SESSION_SECRET_KEY: "${{ secrets.SESSION_SECRET_KEY }}"
84-
APITALLY_CLIENT_ID: "${{ vars.APITALLY_CLIENT_ID }}"
85-
EOF
52+
if ! command -v envsubst >/dev/null 2>&1; then
53+
sudo apt-get update
54+
sudo apt-get install -y gettext-base
55+
fi
56+
57+
- name: Render app.yaml
58+
env:
59+
SERVICE_NAME: "ocotillo-api-staging"
60+
ENVIRONMENT: "staging"
61+
CLOUD_SQL_INSTANCE_NAME: "${{ secrets.CLOUD_SQL_INSTANCE_NAME }}"
62+
CLOUD_SQL_DATABASE: "${{ vars.CLOUD_SQL_DATABASE }}"
63+
CLOUD_SQL_USER: "${{ secrets.CLOUD_SQL_USER }}"
64+
PYGEOAPI_POSTGRES_DB: "${{ vars.CLOUD_SQL_DATABASE }}"
65+
PYGEOAPI_POSTGRES_USER: "${{ secrets.PYGEOAPI_POSTGRES_USER }}"
66+
PYGEOAPI_POSTGRES_HOST: "${{ vars.PYGEOAPI_POSTGRES_HOST || '127.0.0.1' }}"
67+
PYGEOAPI_POSTGRES_PORT: "${{ vars.PYGEOAPI_POSTGRES_PORT || '5432' }}"
68+
PYGEOAPI_POSTGRES_PASSWORD: "${{ secrets.PYGEOAPI_POSTGRES_PASSWORD }}"
69+
PYGEOAPI_SERVER_URL: "${{ vars.PYGEOAPI_SERVER_URL }}"
70+
CLOUD_SQL_IAM_AUTH: "true"
71+
GCS_SERVICE_ACCOUNT_KEY: "${{ secrets.GCS_SERVICE_ACCOUNT_KEY }}"
72+
GCS_BUCKET_NAME: "${{ vars.GCS_BUCKET_NAME }}"
73+
AUTHENTIK_URL: "${{ vars.AUTHENTIK_URL }}"
74+
AUTHENTIK_CLIENT_ID: "${{ vars.AUTHENTIK_CLIENT_ID }}"
75+
AUTHENTIK_AUTHORIZE_URL: "${{ vars.AUTHENTIK_AUTHORIZE_URL }}"
76+
AUTHENTIK_TOKEN_URL: "${{ vars.AUTHENTIK_TOKEN_URL }}"
77+
SESSION_SECRET_KEY: "${{ secrets.SESSION_SECRET_KEY }}"
78+
APITALLY_CLIENT_ID: "${{ vars.APITALLY_CLIENT_ID }}"
79+
run: |
80+
envsubst < .github/app.template.yaml > app.yaml
8681
8782
- name: Deploy to Google Cloud
8883
run: |

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,4 @@ cli/logs
4949
.pygeoapi/
5050
# deployment files
5151
app.yaml
52+
docs/

0 commit comments

Comments
 (0)