Skip to content

Test and Deploy

Test and Deploy #842

Workflow file for this run

name: Test and Deploy
on:
push:
branches: [main]
tags:
- "**"
pull_request:
branches: [main]
workflow_dispatch:
permissions:
id-token: write
contents: read
issues: write
pull-requests: write
jobs:
tests:
name: Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Get pip cache dir
id: pip-cache
run: |
python -m pip install pip --upgrade
echo "PIP_CACHE_DIR=$(python -m pip cache dir)" >> $GITHUB_ENV
- name: Cache pip
uses: actions/cache@v2
with:
path: ${{ env.PIP_CACHE_DIR }}
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-test.txt
python -m pip install -r requirements.txt
python -m pip install -r cerulean_cloud/cloud_run_offset_tiles/requirements.txt
python -m pip install -r cerulean_cloud/cloud_run_orchestrator/requirements.txt
python -m pip install -r cerulean_cloud/cloud_run_tipg/requirements.txt
python -m pip install -r cerulean_cloud/titiler_sentinel/requirements.txt
- name: Run pytest
run: python -m pytest --disable-pytest-warnings --deselect test/test_cerulean_cloud/test_database_client.py
# Run pre-commit
- name: run pre-commit
run: pre-commit run --all-files
preview-test:
name: Preview [TEST]
needs: [tests]
runs-on: ubuntu-latest
if: github.ref != 'refs/heads/main' && github.event_name != 'workflow_dispatch' && startsWith(github.event.ref, 'refs/tags') != true
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Configure GCP Credentials
uses: "google-github-actions/auth@v0"
with:
workload_identity_provider: "projects/734798842681/locations/global/workloadIdentityPools/my-pool/providers/gh-provider"
service_account: "[email protected]"
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: arn:aws:iam::162277344632:role/CeruleanCloudDeploy
aws-region: eu-central-1
- name: Configure docker
run: gcloud auth configure-docker -q
- run: pip install -r requirements.txt
- uses: pulumi/actions@v3
id: pulumi-images
env:
PULUMI_CONFIG_PASSPHRASE: "test"
with:
work-dir: images/
command: preview
stack-name: test
comment-on-pr: true
github-token: ${{ secrets.GITHUB_TOKEN }}
- uses: pulumi/actions@v3
env:
PULUMI_CONFIG_PASSPHRASE: "test"
MODEL: ${{ steps.pulumi-images.outputs.model }}
with:
command: preview
stack-name: test
comment-on-pr: true
github-token: ${{ secrets.GITHUB_TOKEN }}
deploy-test:
name: Deploy [TEST]
runs-on: ubuntu-latest
environment: test
needs: [tests]
if: github.event_name == 'workflow_dispatch'
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Get pip cache dir
id: pip-cache
run: |
python -m pip install pip --upgrade
echo "PIP_CACHE_DIR=$(python -m pip cache dir)" >> $GITHUB_ENV
- name: Cache pip
uses: actions/cache@v2
with:
path: ${{ env.PIP_CACHE_DIR }}
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Configure GCP Credentials
uses: "google-github-actions/auth@v0"
with:
workload_identity_provider: "projects/734798842681/locations/global/workloadIdentityPools/my-pool/providers/gh-provider"
service_account: "[email protected]"
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: arn:aws:iam::162277344632:role/CeruleanCloudDeploy
aws-region: eu-central-1
- name: Configure docker
run: gcloud auth configure-docker -q
- run: pip install -r requirements.txt
- uses: pulumi/actions@v3
id: pulumi-images
env:
PULUMI_CONFIG_PASSPHRASE: "test"
with:
work-dir: images/
command: up
stack-name: test
# Copy shared database_client.py files
- name: Copy Shared File
run: |
mkdir -p cerulean_cloud/cloud_function_ais_analysis/cerulean_cloud/
cp cerulean_cloud/database_client.py cerulean_cloud/cloud_function_ais_analysis/cerulean_cloud/database_client.py
cp cerulean_cloud/database_schema.py cerulean_cloud/cloud_function_ais_analysis/cerulean_cloud/database_schema.py
cp cerulean_cloud/__init__.py cerulean_cloud/cloud_function_ais_analysis/cerulean_cloud/__init__.py
- uses: pulumi/actions@v3
id: pulumi
env:
PULUMI_CONFIG_PASSPHRASE: "test"
MODEL: ${{ steps.pulumi-images.outputs.model }}
with:
command: up
stack-name: test
- uses: wagnerpereira/gce-cloudsql-proxy-action@v2
with:
instance: ${{ steps.pulumi.outputs.database_instance_name }}
- name: Run database migrations
env:
DB_URL: ${{ steps.pulumi.outputs.database_url_alembic }}
run: alembic upgrade head
deploy-staging:
name: Deploy [STAGING]
needs: [tests]
runs-on: ubuntu-latest
environment: staging
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Configure GCP Credentials
uses: "google-github-actions/auth@v0"
with:
workload_identity_provider: "projects/734798842681/locations/global/workloadIdentityPools/my-pool/providers/gh-provider"
service_account: "[email protected]"
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: arn:aws:iam::162277344632:role/CeruleanCloudDeploy
aws-region: eu-central-1
- name: Configure docker
run: gcloud auth configure-docker -q
- run: pip install -r requirements.txt
- uses: pulumi/actions@v3
id: pulumi-images
env:
PULUMI_CONFIG_PASSPHRASE: "staging"
with:
work-dir: images/
command: up
stack-name: staging
- uses: pulumi/actions@v3
id: pulumi
with:
command: up
stack-name: staging
env:
PULUMI_CONFIG_PASSPHRASE: "staging"
MODEL: ${{ steps.pulumi-images.outputs.model }}
- uses: wagnerpereira/gce-cloudsql-proxy-action@v2
with:
instance: ${{ steps.pulumi.outputs.database_instance_name }}
- name: Run database migrations
env:
DB_URL: ${{ steps.pulumi.outputs.database_url_alembic }}
run: alembic upgrade head
deploy-production:
name: Deploy [PRODUCTION]
needs: [tests]
runs-on: ubuntu-latest
environment: production
if: startsWith(github.event.ref, 'refs/tags')
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Configure GCP Credentials
uses: "google-github-actions/auth@v0"
with:
workload_identity_provider: "projects/734798842681/locations/global/workloadIdentityPools/my-pool/providers/gh-provider"
service_account: "[email protected]"
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: arn:aws:iam::162277344632:role/CeruleanCloudDeploy
aws-region: eu-central-1
- name: Configure docker
run: gcloud auth configure-docker -q
- run: pip install -r requirements.txt
- uses: pulumi/actions@v3
id: pulumi-images
env:
PULUMI_CONFIG_PASSPHRASE: "production"
with:
work-dir: images/
command: up
stack-name: production
- uses: pulumi/actions@v3
id: pulumi
with:
command: up
stack-name: production
env:
PULUMI_CONFIG_PASSPHRASE: "production"
MODEL: ${{ steps.pulumi-images.outputs.model }}
- uses: wagnerpereira/gce-cloudsql-proxy-action@v2
with:
instance: ${{ steps.pulumi.outputs.database_instance_name }}
- name: Run database migrations
env:
DB_URL: ${{ steps.pulumi.outputs.database_url_alembic }}
run: alembic upgrade head