From 213d2baffcf421a99eabd1d8128e179f04cb24a2 Mon Sep 17 00:00:00 2001 From: Pablo Castellano Date: Wed, 13 Mar 2024 12:24:12 +0100 Subject: [PATCH] ci: deploy to production using tags --- .github/workflows/ci.yml | 21 ++------ .github/workflows/deploy-production.yml | 72 +++++++++++++++++++++++++ .github/workflows/deploy-staging.yml | 23 ++++++++ 3 files changed, 99 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/deploy-production.yml create mode 100644 .github/workflows/deploy-staging.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c115546..b94d0f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,10 +1,12 @@ name: Continuous Integration (build, test, docker, deploy) on: - push: - branches: ["master"] pull_request: branches: ["master"] + push: + branches: ["master"] + tags: + - 'v*' env: CARGO_TERM_COLOR: always @@ -77,18 +79,3 @@ jobs: push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - - deploy_staging: - if: github.ref_name == 'master' - name: Deploy blobscan api (staging) - runs-on: ubuntu-latest - environment: staging - needs: docker - steps: - - uses: appleboy/ssh-action@v0.0.7 - with: - host: ${{ secrets.SSH_HOST }} - username: deploy - port: ${{ secrets.SSH_PORT }} - key: ${{ secrets.SSH_KEY }} - script: ./deploy-blobscan-indexer.rs.sh diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml new file mode 100644 index 0000000..93c5b7e --- /dev/null +++ b/.github/workflows/deploy-production.yml @@ -0,0 +1,72 @@ +name: Deploy production + +on: + workflow_run: + workflows: ["CI"] + types: + - completed + +jobs: + deploy_sepolia: + if: > + github.event.workflow_run.conclusion == 'success' && + startsWith(github.event.workflow_run.head_branch, 'refs/tags/') + name: Deploy Blobscan indexer (sepolia) + runs-on: ubuntu-latest + environment: sepolia + steps: + - uses: appleboy/ssh-action@v0.0.7 + with: + host: ${{ secrets.SSH_HOST }} + username: deploy + port: ${{ secrets.SSH_PORT }} + key: ${{ secrets.SSH_KEY }} + script: ./deploy-blobscan-indexer.rs.sh + + deploy_holesky: + if: > + github.event.workflow_run.conclusion == 'success' && + startsWith(github.event.workflow_run.head_branch, 'refs/tags/') + name: Deploy Blobscan indexer (holesky) + runs-on: ubuntu-latest + environment: holesky + steps: + - uses: appleboy/ssh-action@v0.0.7 + with: + host: ${{ secrets.SSH_HOST }} + username: deploy + port: ${{ secrets.SSH_PORT }} + key: ${{ secrets.SSH_KEY }} + script: ./deploy-blobscan-indexer.rs.sh + + deploy_gnosis: + if: > + github.event.workflow_run.conclusion == 'success' && + startsWith(github.event.workflow_run.head_branch, 'refs/tags/') + name: Deploy Blobscan indexer (gnosis) + runs-on: ubuntu-latest + environment: gnosis + steps: + - uses: appleboy/ssh-action@v0.0.7 + with: + host: ${{ secrets.SSH_HOST }} + username: deploy + port: ${{ secrets.SSH_PORT }} + key: ${{ secrets.SSH_KEY }} + script: ./deploy-blobscan-indexer.rs.sh + + deploy_mainnet: + if: > + github.event.workflow_run.conclusion == 'success' && + startsWith(github.event.workflow_run.head_branch, 'refs/tags/') + name: Deploy Blobscan indexer (mainnet) + runs-on: ubuntu-latest + environment: mainnet + steps: + - uses: appleboy/ssh-action@v0.0.7 + with: + host: ${{ secrets.SSH_HOST }} + username: deploy + port: ${{ secrets.SSH_PORT }} + key: ${{ secrets.SSH_KEY }} + script: ./deploy-blobscan-indexer.rs.sh diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml new file mode 100644 index 0000000..d2ab6fe --- /dev/null +++ b/.github/workflows/deploy-staging.yml @@ -0,0 +1,23 @@ +name: Deploy staging + +on: + workflow_run: + workflows: ["CI"] + branches: ["master"] + types: + - completed + +jobs: + deploy_staging: + if: ${{ github.event.workflow_run.conclusion == 'success' }} + name: Deploy Blobscan indexer (staging) + runs-on: ubuntu-latest + environment: staging + steps: + - uses: appleboy/ssh-action@v0.0.7 + with: + host: ${{ secrets.SSH_HOST }} + username: deploy + port: ${{ secrets.SSH_PORT }} + key: ${{ secrets.SSH_KEY }} + script: ./deploy-blobscan-indexer.rs.sh