Skip to content

Test and Deploy

Test and Deploy #1340

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@v4
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: 3.9
- 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@v4
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@v4
- uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Configure GCP Credentials
uses: google-github-actions/auth@v2
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@v4
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@v5
id: pulumi-images
env:
PULUMI_CONFIG_PASSPHRASE: "test"
with:
pulumi-version: '3.113.3'
work-dir: images/
command: preview
stack-name: test
comment-on-pr: true
github-token: ${{ secrets.GITHUB_TOKEN }}
- uses: pulumi/actions@v5
env:
PULUMI_CONFIG_PASSPHRASE: "test"
MODEL: ${{ steps.pulumi-images.outputs.model }}
with:
pulumi-version: '3.113.3'
command: preview
stack-name: test
comment-on-pr: true
github-token: ${{ secrets.GITHUB_TOKEN }}
deploy-test:
name: Deploy [TEST]
runs-on: ubuntu-20.04
environment: test
needs: [tests]
if: github.event_name == 'workflow_dispatch'
steps:
- name: Checkout repository
uses: actions/checkout@v4
- id: configure-docker
name: Configure Docker
uses: ./.github/actions/configure-docker
- id: deploy-infrastructure-test
name: Deploy Infrastructure
uses: ./.github/actions/deploy_infrastructure
with:
environment: test
pulumi-version: 3.121.0
pulumi-stack-passphrase: test
deploy-staging:
name: Deploy [STAGING]
runs-on: ubuntu-20.04
environment: staging
needs: [tests]
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout repository
uses: actions/checkout@v4
- id: configure-docker
name: Configure Docker
uses: ./.github/actions/configure-docker
- id: deploy-infrastructure-staging
name: Deploy Infrastructure
uses: ./.github/actions/deploy_infrastructure
with:
environment: staging
pulumi-version: 3.121.0
pulumi-stack-passphrase: staging
deploy-production:
name: Deploy [PRODUCTION]
runs-on: ubuntu-20.04
environment: production
needs: [tests]
if: startsWith(github.event.ref, 'refs/tags')
steps:
- name: Checkout repository
uses: actions/checkout@v4
- id: configure-docker
name: Configure Docker
uses: ./.github/actions/configure-docker
- id: deploy-infrastructure-production
name: Deploy Infrastructure
uses: ./.github/actions/deploy_infrastructure
with:
environment: production
pulumi-version: 3.121.0
pulumi-stack-passphrase: production