--- name: QA Deploy on: workflow_dispatch: inputs: migrateDb: required: true default: "true" resetDb: required: true default: "false" jobs: reset-db: name: Reset Database if: ${{ github.event.inputs.resetDb == 'true' }} runs-on: ubuntu-20.04 steps: - name: Reset Test Data - Stub run: | echo "placeholder for cleaning DB" echo "placeholder for loading test dataset" update-db: name: Update Database if: ${{ github.event.inputs.migrateDb == 'true' }} runs-on: ubuntu-20.04 steps: - name: Checkout repo uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - name: Login to Azure uses: Azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a with: creds: ${{ secrets.AZURE_QA_KV_CREDENTIALS }} - name: Retrieve secrets id: retrieve-secrets uses: Azure/get-keyvault-secrets@80ccd3fafe5662407cc2e55f202ee34bfff8c403 with: keyvault: "bitwarden-qa-kv" secrets: "mssql-server-host, mssql-admin-login, mssql-admin-login-password" - name: Migrate database env: MSSQL_HOST: ${{ steps.retrieve-secrets.outputs.mssql-server-host }} MSSQL_USER: ${{ steps.retrieve-secrets.outputs.mssql-admin-login }} MSSQL_PASS: ${{ steps.retrieve-secrets.outputs.mssql-admin-login-password }} working-directory: ./util/Migrator/DbScripts run: | echo "Running database migrations..." for f in `ls -v ./*.sql`; do echo "Executing file: ${f}..." sqlcmd -S $MSSQL_HOST -d vault -U $MSSQL_USER -P $MSSQL_PASS -I -i $f done; deploy: name: Deploy runs-on: ubuntu-20.04 if: always() needs: - reset-db - update-db strategy: fail-fast: false matrix: include: - name: Api - name: Admin - name: Billing - name: Events - name: Sso - name: Identity steps: - name: Setup id: setup run: | NAME_LOWER=$(echo "${{ matrix.name }}" | awk '{print tolower($0)}') echo "Matrix name: ${{ matrix.name }}" echo "NAME_LOWER: $NAME_LOWER" echo "::set-output name=name_lower::$NAME_LOWER" BRANCH_NAME=$(echo "$GITHUB_REF" | sed "s#refs/heads/##g") echo "GITHUB_REF: $GITHUB_REF" echo "BRANCH_NAME: $BRANCH_NAME" echo "::set-output name=branch_name::$BRANCH_NAME" mkdir publish - name: Download latest ${{ matrix.name }} asset from ${{ env.branch_name }} uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 env: branch_name: ${{ steps.setup.outputs.branch_name }} with: workflow: build.yml workflow_conclusion: success branch: ${{ env.branch_name }} artifacts: ${{ matrix.name }}.zip - name: Login to Azure uses: Azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a with: creds: ${{ secrets.AZURE_QA_KV_CREDENTIALS }} - name: Retrieve secrets id: retrieve-secrets env: VAULT_NAME: "bitwarden-qa-kv" run: | webapp_name=$( az keyvault secret show --vault-name $VAULT_NAME \ --name appservices-${{ steps.setup.outputs.name_lower }}-webapp-name \ --query value --output tsv ) echo "::add-mask::$webapp_name" echo "::set-output name=webapp-name::$webapp_name" - name: Stop App Service env: AZURE_RESOURCE_GROUP: "bw-qa-env" run: | az webapp stop --name ${{ steps.retrieve-secrets.outputs.webapp-name }} \ --resource-group $AZURE_RESOURCE_GROUP - name: Deploy App uses: azure/webapps-deploy@798e43877120eda6a2a690a4f212c545e586ae31 with: app-name: ${{ steps.retrieve-secrets.outputs.webapp-name }} package: ./${{ matrix.name }}.zip - name: Start App Service env: AZURE_RESOURCE_GROUP: "bw-qa-env" run: | az webapp start --name ${{ steps.retrieve-secrets.outputs.webapp-name }} \ --resource-group $AZURE_RESOURCE_GROUP