Database Backup #316
This file contains hidden or 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: Database Backup | ||
| permissions: | ||
| contents: read | ||
| on: | ||
| workflow_call: | ||
| secrets: | ||
| CF_USER: | ||
| required: true | ||
| CF_PASSWORD: | ||
| required: true | ||
| CF_ORG: | ||
| required: true | ||
| PROJECT: | ||
| required: true | ||
| DATABASE_BACKUP_BASTION_NAME: | ||
| required: true | ||
| schedule: | ||
| - cron: "0 6 * * *" | ||
| jobs: | ||
| startBastion: | ||
| name: Start Bastion | ||
| runs-on: ubuntu-latest | ||
| if: github.ref_protected == true | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
| - name: Set env | ||
| run: | | ||
| BRANCH=main | ||
| CF_SPACE="prod" | ||
| echo "BRANCH=${BRANCH}" | tee -a $GITHUB_ENV | ||
| echo "CF_SPACE=${CF_SPACE}" | tee -a $GITHUB_ENV | ||
| - name: Install basic dependencies | ||
| run: ./scripts/pipeline/deb-basic-deps.sh | ||
| - name: Install Cloudfoundry CLI | ||
| run: ./scripts/pipeline/deb-cf-install.sh | ||
| - name: Cloud.gov login | ||
| env: | ||
| CF_USER: "${{ secrets.CF_USER }}" | ||
| CF_PASSWORD: "${{ secrets.CF_PASSWORD }}" | ||
| CF_ORG: "${{ secrets.CF_ORG }}" | ||
| PROJECT: "${{ secrets.PROJECT }}" | ||
| run: | | ||
| source ./scripts/pipeline/cloud-gov-login.sh | ||
| - name: Start Bastion | ||
| env: | ||
| PROJECT: "${{ secrets.PROJECT }}" | ||
| DATABASE_BACKUP_BASTION_NAME: "${{ secrets.DATABASE_BACKUP_BASTION_NAME }}" | ||
| run: | | ||
| cf start "${PROJECT}-${DATABASE_BACKUP_BASTION_NAME}-${CF_SPACE}" >/dev/null 2>&1 | ||
| ./scripts/pipeline/cloud-gov-wait-for-app-start.sh "${PROJECT}-${DATABASE_BACKUP_BASTION_NAME}-${CF_SPACE}" | ||
| backup-database: | ||
| runs-on: ubuntu-latest | ||
| continue-on-error: true | ||
| needs: startBastion | ||
| if: github.ref_protected == true | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
| - name: Set env | ||
| run: | | ||
| BRANCH=main | ||
| CF_SPACE="prod" | ||
| echo "BRANCH=${BRANCH}" | tee -a $GITHUB_ENV | ||
| echo "CF_SPACE=${CF_SPACE}" | tee -a $GITHUB_ENV | ||
| - name: Install basic dependencies | ||
| run: ./scripts/pipeline/deb-basic-deps.sh | ||
| - name: Install AWSCLI | ||
| run: ./scripts/pipeline/deb-awscli.sh | ||
| - name: Install MySQL Client | ||
| run: ./scripts/pipeline/deb-mysql-client-install.sh | ||
| - name: Install Cloudfoundry CLI | ||
| run: ./scripts/pipeline/deb-cf-install.sh | ||
| - name: Cloud.gov login | ||
| env: | ||
| CF_USER: "${{ secrets.CF_USER }}" | ||
| CF_PASSWORD: "${{ secrets.CF_PASSWORD }}" | ||
| CF_ORG: "${{ secrets.CF_ORG }}" | ||
| PROJECT: "${{ secrets.PROJECT }}" | ||
| run: | | ||
| source ./scripts/pipeline/cloud-gov-login.sh | ||
| - name: Backup Database | ||
| id: backup | ||
| shell: bash | ||
| env: | ||
| CF_USER: "${{ secrets.CF_USER }}" | ||
| CF_PASSWORD: "${{ secrets.CF_PASSWORD }}" | ||
| CF_ORG: "${{ secrets.CF_ORG }}" | ||
| PROJECT: "${{ secrets.PROJECT }}" | ||
| DATABASE_BACKUP_BASTION_NAME: "${{ secrets.DATABASE_BACKUP_BASTION_NAME }}" | ||
| run: | | ||
| export TIMESTAMP=$(date --utc +%FT%TZ | tr ':', '-') | ||
| source ./scripts/pipeline/database-backup.sh | ||
| stopBastion: | ||
| name: Stop Bastion | ||
| runs-on: ubuntu-latest | ||
| needs: backup-database | ||
| if: github.ref_protected == true && ${{ always() }} | ||
|
Check warning on line 105 in .github/workflows/database-backup.yml
|
||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
| - name: Set env | ||
| run: | | ||
| BRANCH=main | ||
| CF_SPACE="prod" | ||
| echo "BRANCH=${BRANCH}" | tee -a $GITHUB_ENV | ||
| echo "CF_SPACE=${CF_SPACE}" | tee -a $GITHUB_ENV | ||
| - name: Install basic dependencies | ||
| run: ./scripts/pipeline/deb-basic-deps.sh | ||
| - name: Install Cloudfoundry CLI | ||
| run: ./scripts/pipeline/deb-cf-install.sh | ||
| - name: Cloud.gov login | ||
| env: | ||
| CF_USER: "${{ secrets.CF_USER }}" | ||
| CF_PASSWORD: "${{ secrets.CF_PASSWORD }}" | ||
| CF_ORG: "${{ secrets.CF_ORG }}" | ||
| PROJECT: "${{ secrets.PROJECT }}" | ||
| run: | | ||
| source ./scripts/pipeline/cloud-gov-login.sh | ||
| - name: Stop Bastion | ||
| env: | ||
| PROJECT: "${{ secrets.PROJECT }}" | ||
| DATABASE_BACKUP_BASTION_NAME: "${{ secrets.DATABASE_BACKUP_BASTION_NAME }}" | ||
| run: | | ||
| cf stop "${PROJECT}-${DATABASE_BACKUP_BASTION_NAME}-${CF_SPACE}" >/dev/null 2>&1 | ||