logging is consistent with the new group-specific preference management #5427
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: deploy-to-preview-environment | |
on: | |
pull_request: | |
branches: | |
- staging | |
env: | |
REGISTRY_URL: eu.gcr.io | |
PROJECT_ID: airqo-250220 | |
jobs: | |
branch-name: | |
name: Format branch name string | |
runs-on: ubuntu-latest | |
outputs: | |
lowercase: ${{ steps.string.outputs.lowercase }} # lowercase version | |
steps: | |
- id: string | |
uses: ASzc/change-string-case-action@v5 | |
with: | |
string: ${{ github.head_ref || github.ref_name }} | |
check: | |
name: check changed microservice(s) | |
outputs: | |
run_auth_service: ${{ steps.check_files.outputs.run_auth_service }} # auth service | |
run_device_registry: ${{ steps.check_files.outputs.run_device_registry }} # device registry | |
run_device_monitoring: ${{ steps.check_files.outputs.run_device_monitoring }} # device monitoring | |
run_data_mgt: ${{ steps.check_files.outputs.run_data_mgt }} # data mgt | |
run_data_proxy: ${{ steps.check_files.outputs.run_data_proxy }} # data proxy | |
run_analytics: ${{ steps.check_files.outputs.run_analytics }} # analytics | |
run_locate: ${{ steps.check_files.outputs.run_locate }} # locate | |
run_predict: ${{ steps.check_files.outputs.run_predict }} # predict | |
run_meta_data: ${{ steps.check_files.outputs.run_meta_data }} # metadata | |
run_view: ${{ steps.check_files.outputs.run_view }} # view | |
run_calibrate: ${{ steps.check_files.outputs.run_calibrate }} # calibrate | |
run_incentives: ${{ steps.check_files.outputs.run_incentives }} # incentives | |
run_spatial: ${{ steps.check_files.outputs.run_spatial }} # spatial | |
run_website: ${{ steps.check_files.outputs.run_website }} # website | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout code | |
uses: actions/checkout@v3.5.3 | |
with: | |
fetch-depth: 2 | |
#### all microservices ###### | |
- name: check modified microserivce | |
id: check_files | |
run: | | |
echo "=============== list modified files ===============" | |
git diff --name-only HEAD^ HEAD | |
echo "========== check paths of modified files ==========" | |
git diff --name-only HEAD^ HEAD > files.txt | |
echo "run_auth_service=false" >>$GITHUB_OUTPUT | |
echo "run_device_registry=false" >>$GITHUB_OUTPUT | |
echo "run_device_monitoring=false" >>$GITHUB_OUTPUT | |
echo "run_data_mgt=false" >>$GITHUB_OUTPUT | |
echo "run_data_proxy=false" >>$GITHUB_OUTPUT | |
echo "run_analytics=false" >>$GITHUB_OUTPUT | |
echo "run_locate=false" >>$GITHUB_OUTPUT | |
echo "run_predict=false" >>$GITHUB_OUTPUT | |
echo "run_meta_data=false" >>$GITHUB_OUTPUT | |
echo "run_view=false" >>$GITHUB_OUTPUT | |
echo "run_calibrate=false" >>$GITHUB_OUTPUT | |
echo "run_incentives=false" >>$GITHUB_OUTPUT | |
echo "run_spatial=false" >>$GITHUB_OUTPUT | |
echo "run_website=false" >>$GITHUB_OUTPUT | |
while IFS= read -r file | |
do | |
echo $file | |
if [[ $file == src/auth-service/* ]]; then | |
echo "run_auth_service=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/device-registry/* ]]; then | |
echo "run_device_registry=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/device-monitoring/* ]]; then | |
echo "run_device_monitoring=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/data-mgt/* ]]; then | |
echo "run_data_mgt=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/data-proxy/* ]]; then | |
echo "run_data_proxy=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/analytics/* ]]; then | |
echo "run_analytics=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/locate/* ]]; then | |
echo "run_locate=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/predict/* ]]; then | |
echo "run_predict=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/meta-data/* ]]; then | |
echo "run_meta_data=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/view/* ]]; then | |
echo "run_view=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/calibrate/* ]]; then | |
echo "run_calibrate=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/incentives/* ]]; then | |
echo "run_incentives=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/spatial/* ]]; then | |
echo "run_spatial=true" >>$GITHUB_OUTPUT | |
fi | |
if [[ $file == src/website/* ]]; then | |
echo "run_website=true" >>$GITHUB_OUTPUT | |
fi | |
done < files.txt | |
### auth_service ### | |
auth-service: | |
name: build-push-deploy-auth-service | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_auth_service == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/auth-service/ | |
docker build --target=staging --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/auth-service-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/auth-service-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-auth-service-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/auth-service-pr-previews:${{ github.sha }} \ | |
--port=3000 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-auth-service:latest,/etc/config/firebase_admin_sdk.json=sta-key-auth-service-firebase-admin-sdk:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /usr/src/app/.env; npm run stage-mac" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-auth-service-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
auth-service-pr-comment: | |
name: auth-service-preview-link-comment | |
if: needs.check.outputs.run_auth_service == 'true' | |
needs: [auth-service] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Auth-service changes in this PR available for preview [here](${{ needs.auth-service.outputs.url }})' | |
}) | |
### device registry ### | |
device-registry: | |
name: build-push-deploy-device-registry | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_device_registry == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/device-registry/ | |
docker build --target=staging --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/device-registry-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/device-registry-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-device-registry-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/device-registry-pr-previews:${{ github.sha }} \ | |
--port=3000 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-device-registry:latest,/etc/config/google_application_credentials.json=sta-key-device-registry-service-account:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /usr/src/app/.env; npm run stage-mac" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-device-registry-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
device-registry-pr-comment: | |
name: device-registry-preview-link-comment | |
if: needs.check.outputs.run_device_registry == 'true' | |
needs: [device-registry] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Device registry changes in this PR available for preview [here](${{ needs.device-registry.outputs.url }})' | |
}) | |
### device monitoring ### | |
device-monitoring: | |
name: build-push-deploy-device-monitoring | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_device_monitoring == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/device-monitoring/ | |
docker build --target=staging --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/device-monitoring-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/device-monitoring-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-device-monitoring-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/device-monitoring-pr-previews:${{ github.sha }} \ | |
--port=4001 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-device-monitoring:latest,/etc/config/google_application_credentials.json=sta-key-device-monitoring-service-account:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /app/.env; flask run --host=0.0.0.0" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-device-monitoring-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
device-monitoring-pr-comment: | |
name: device-monitoring-preview-link-comment | |
if: needs.check.outputs.run_device_monitoring == 'true' | |
needs: [device-monitoring] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Device monitoring changes in this PR available for preview [here](${{ needs.device-monitoring.outputs.url }})' | |
}) | |
### run data mgt ### | |
data-mgt: | |
name: build-push-deploy-data-mgt | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_data_mgt == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/data-mgt/ | |
docker build --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/data-mgt-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/data-mgt-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-data-mgt-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/data-mgt-pr-previews:${{ github.sha }} \ | |
--port=3000 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-data-mgt-nodejs:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /usr/src/app/.env; npm run stage" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-data-mgt-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
data-mgt-pr-comment: | |
name: data-mgt-preview-link-comment | |
if: needs.check.outputs.run_data_mgt == 'true' | |
needs: [data-mgt] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Data management changes in this PR available for preview [here](${{ needs.data-mgt.outputs.url }})' | |
}) | |
### run data proxy ### | |
data-proxy: | |
name: build-push-deploy-data-proxy | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_data_proxy == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/data-proxy/ | |
docker build --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/data-proxy-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/data-proxy-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-data-proxy-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/data-proxy-pr-previews:${{ github.sha }} \ | |
--port=3000 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-data-proxy:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /usr/src/app/.env; npm run stage" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-data-proxy-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
data-proxy-pr-comment: | |
name: data-proxy-preview-link-comment | |
if: needs.check.outputs.run_data_proxy == 'true' | |
needs: [data-proxy] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Data Proxy changes in this PR available for preview [here](${{ needs.data-proxy.outputs.url }})' | |
}) | |
### analytics ### | |
analytics: | |
name: build-push-deploy-analytics | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_analytics == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/analytics/ | |
docker build --target=staging --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/analytics-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/analytics-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-analytics-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/analytics-pr-previews:${{ github.sha }} \ | |
--port=5000 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-analytics:latest,/etc/config/google_application_credentials.json=sta-key-analytics-service-account:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /app/.env; flask run --host=0.0.0.0" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-analytics-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
analytics-pr-comment: | |
name: analytics-preview-link-comment | |
if: needs.check.outputs.run_analytics == 'true' | |
needs: [analytics] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Analytics changes in this PR available for preview [here](${{ needs.analytics.outputs.url }})' | |
}) | |
### locate ### | |
locate: | |
name: build-push-deploy-locate | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_locate == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/locate/ | |
docker build --target=staging --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/locate-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/locate-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-locate-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/locate-pr-previews:${{ github.sha }} \ | |
--port=4001 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-locate:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /app/.env; flask run --host=0.0.0.0" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-locate-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
locate-pr-comment: | |
name: locate-preview-link-comment | |
if: needs.check.outputs.run_locate == 'true' | |
needs: [locate] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Locate API changes in this PR available for preview [here](${{ needs.locate.outputs.url }})' | |
}) | |
### predict service ### | |
predict-service: | |
name: build-push-deploy-predict-service-preview | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_predict == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/predict/api/ | |
docker build --target=staging --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/predict-service-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/predict-service-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-predict-service-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/predict-service-pr-previews:${{ github.sha }} \ | |
--port=5000 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-predict:latest,/etc/config/google_application_credentials.json=sta-key-predict-service-account:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /app/.env; flask run --host=0.0.0.0" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-predict-service-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
predict-pr-comment: | |
name: predict-service-preview-link-comment | |
if: needs.check.outputs.run_predict == 'true' | |
needs: [predict-service] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Predict service changes in this PR available for preview [here](${{ needs.predict-service.outputs.url }})' | |
}) | |
### meta-data ### | |
meta-data: | |
name: build-push-deploy-meta-data | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_meta_data == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/meta-data/ | |
docker build --target=api --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/meta-data-pr-previews:${{ github.sha }} . | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/meta-data-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-meta-data-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/meta-data-pr-previews:${{ github.sha }} \ | |
--port=4001 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-metadata:latest,/etc/config/google_application_credentials.json=sta-key-metadata-service-account:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /app-dir/.env; gunicorn --bind=0.0.0.0:4001 app:app" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-meta-data-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
meta-data-pr-comment: | |
name: meta-data-preview-link-comment | |
if: needs.check.outputs.run_meta_data == 'true' | |
needs: [meta-data] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Meta-data changes in this PR available for preview [here](${{ needs.meta-data.outputs.url }})' | |
}) | |
### view ### | |
view: | |
name: build-push-deploy-view-api | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_view == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/view/ | |
docker build --target=api --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/view-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/view-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-view-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/view-pr-previews:${{ github.sha }} \ | |
--port=8080 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-view-api:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /app/.env; java -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=api -jar /view.jar" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-view-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
view-pr-comment: | |
name: view-preview-link-comment | |
if: needs.check.outputs.run_view == 'true' | |
needs: [view] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'View API changes in this PR available for preview [here](${{ needs.view.outputs.url }})' | |
}) | |
### calibrate ### | |
calibrate: | |
name: build-push-deploy-calibrate | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_calibrate == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/calibrate/ | |
docker build --target=staging --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/calibrate-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/calibrate-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-calibrate-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/calibrate-pr-previews:${{ github.sha }} \ | |
--port=4001 \ | |
--cpu=2000m \ | |
--memory=1024Mi \ | |
--update-secrets=/etc/env/.env=sta-env-calibrate:latest,/etc/config/google_application_credentials.json=sta-key-calibrate-service-account:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /app/.env; gunicorn --bind=0.0.0.0:4001 app:app" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-calibrate-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
calibrate-pr-comment: | |
name: calibrate-preview-link-comment | |
if: needs.check.outputs.run_calibrate == 'true' | |
needs: [calibrate] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Calibrate changes in this PR available for preview [here](${{ needs.calibrate.outputs.url }})' | |
}) | |
### incentives ### | |
incentives: | |
name: build-push-deploy-incentives | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_incentives == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/incentives/ | |
docker build --target=staging --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/incentives-pr-previews:${{ github.sha }} . | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/incentives-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-incentives-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/incentives-pr-previews:${{ github.sha }} \ | |
--port=3000 \ | |
--cpu=1000m \ | |
--memory=256Mi \ | |
--update-secrets=/etc/env/.env=sta-env-incentives:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /app/.env; npm run stage" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-incentives-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
incentives-pr-comment: | |
name: incentives-preview-link-comment | |
if: needs.check.outputs.run_incentives == 'true' | |
needs: [incentives] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Incentives API changes in this PR available for preview [here](${{ needs.incentives.outputs.url }})' | |
}) | |
### spatial ### | |
spatial: | |
name: build-push-deploy-spatial | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_spatial == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/spatial/ | |
docker build --target=staging --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/spatial-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/spatial-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-spatial-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/spatial-pr-previews:${{ github.sha }} \ | |
--port=5000 \ | |
--cpu=1000m \ | |
--memory=1024Mi \ | |
--update-secrets=/etc/env/.env=sta-env-spatial:latest,/etc/config/google_application_credentials.json=sta-key-analytics-service-account:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /app/.env; flask run --host=0.0.0.0" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-spatial-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
spatial-pr-comment: | |
name: spatial-preview-link-comment | |
if: needs.check.outputs.run_spatial == 'true' | |
needs: [spatial] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'Spatial changes in this PR available for preview [here](${{ needs.spatial.outputs.url }})' | |
}) | |
### website ### | |
website: | |
name: build-push-deploy-website | |
needs: [check, branch-name] | |
if: needs.check.outputs.run_website == 'true' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
outputs: | |
url: ${{ steps.preview-url.outputs.url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.3 | |
- name: Google Auth | |
id: auth | |
uses: google-github-actions/auth@v1.1.1 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Setup Cloud SDK | |
uses: google-github-actions/setup-gcloud@v1.1.1 | |
- name: Docker Auth | |
id: docker-auth | |
uses: docker/login-action@v2.2.0 | |
with: | |
registry: ${{ env.REGISTRY_URL }} | |
username: _json_key | |
password: ${{ secrets.GCP_SA_CREDENTIALS }} | |
- name: Build and Push Container | |
run: | | |
cd src/website/ | |
docker build --tag ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/website-pr-previews:${{ github.sha }} ./ | |
docker push ${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/website-pr-previews:${{ github.sha }} | |
- name: Deploy to Cloud Run | |
run: |- | |
gcloud run deploy ${{ needs.branch-name.outputs.lowercase }}-website-preview \ | |
--region=${{ secrets.REGION }} \ | |
--max-instances=10 \ | |
--timeout=60 \ | |
--concurrency=10 \ | |
--image=${{ env.REGISTRY_URL }}/${{ env.PROJECT_ID }}/pr-previews/website-pr-previews:${{ github.sha }} \ | |
--port=8000 \ | |
--cpu=1000m \ | |
--memory=1024Mi \ | |
--update-secrets=/etc/env/.env=sta-env-website-backend:latest,/etc/config/google_application_credentials.json=sta-key-analytics-service-account:latest \ | |
--command="/bin/sh","-c","cat /etc/env/.env >> /app/.env; /app/entrypoint.sh" \ | |
--allow-unauthenticated | |
- name: Get preview service url | |
id: preview-url | |
run: | | |
read service_url < <(gcloud run services describe ${{ needs.branch-name.outputs.lowercase }}-website-preview \ | |
--format='value(status.url)' \ | |
--platform managed \ | |
--region ${{ secrets.REGION }}) | |
echo "url=${service_url}" >>$GITHUB_OUTPUT | |
website-pr-comment: | |
name: website-preview-link-comment | |
if: needs.check.outputs.run_website == 'true' | |
needs: [website] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'website changes in this PR available for preview [here](${{ needs.website.outputs.url }})' | |
}) |