Refactor GitHub Actions workflow for staging deployment

- Introduced a new job for database deployment, including steps to install Rust, cache dependencies, and run Diesel migrations.
- Updated the existing porter-deploy job to include AWS credentials configuration and SSL certificate retrieval from S3.
- Enhanced the overall structure and organization of the workflow for improved clarity and maintainability.
This commit is contained in:
dal 2025-01-03 15:56:44 -07:00
parent fb4efe1610
commit 03f522dddb
1 changed files with 58 additions and 23 deletions

View File

@ -4,26 +4,61 @@
- staging
name: Deploy to staging
jobs:
porter-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set Github tag
id: vars
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Setup porter
uses: porter-dev/setup-porter@v0.1.0
- name: Deploy stack
timeout-minutes: 30
run: exec porter apply
env:
PORTER_APP_NAME: staging
PORTER_CLUSTER: "3155"
PORTER_DEPLOYMENT_TARGET_ID: 7f44813f-4b0c-4be7-add0-94ebb61256bf
PORTER_HOST: https://dashboard.porter.run
PORTER_PR_NUMBER: ${{ github.event.number }}
PORTER_PROJECT: "9309"
PORTER_REPO_NAME: ${{ github.event.repository.name }}
PORTER_TAG: ${{ steps.vars.outputs.sha_short }}
PORTER_TOKEN: ${{ secrets.PORTER_APP_9309_3155 }}
database-deploy:
runs-on: blacksmith-16vcpu-ubuntu-2204
environment: staging
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
- name: Install Diesel CLI
run: cargo install diesel_cli --no-default-features --features postgres
- name: Run migrations
run: diesel migration run
env:
DATABASE_URL: ${{ secrets.DB_URL }}
porter-deploy:
runs-on: ubuntu-latest
environment: staging
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Download SSL certificate from S3
run: |
aws s3 cp ${{ secrets.CERT_S3_URL }} ./cert.pem
- name: Set Github tag
id: vars
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Setup porter
uses: porter-dev/setup-porter@v0.1.0
- name: Deploy stack
timeout-minutes: 30
run: exec porter apply
env:
PORTER_APP_NAME: staging
PORTER_CLUSTER: "3155"
PORTER_DEPLOYMENT_TARGET_ID: 7f44813f-4b0c-4be7-add0-94ebb61256bf
PORTER_HOST: https://dashboard.porter.run
PORTER_PR_NUMBER: ${{ github.event.number }}
PORTER_PROJECT: "9309"
PORTER_REPO_NAME: ${{ github.event.repository.name }}
PORTER_TAG: ${{ steps.vars.outputs.sha_short }}
PORTER_TOKEN: ${{ secrets.PORTER_APP_9309_3155 }}