name: QA Deploy on: push: branches: - 'rc' workflow_dispatch: inputs: migrateDb: required: true default: "true" resetDb: required: true default: "false" jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - name: Api base_path: . - name: Admin base_path: . gulp: true - name: Billing base_path: . - name: Events base_path: . - name: Notifications base_path: . - name: Sso base_path: ./bitwarden_license gulp: true - name: Portal base_path: ./bitwarden_license gulp: true - name: Identity base_path: . steps: - name: Checkout repo uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - name: Set up Node uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea with: node-version: '14' - name: Print Environment run: | dotnet --info node --version npm --version gulp --version - name: load env vars run: | echo "Base Path: ${BASE_PATH}" echo "Name: ${NAME}" env: BASE_PATH: ${{ matrix.base_path }} NAME: ${{ matrix.name }} - name: Build Service run: | work_dir=$(pwd) dir=$BASE_PATH/src/$SERVICE_NAME cd $dir echo "Restore" dotnet restore $SERVICE_NAME.csproj echo "Clean" dotnet clean $SERVICE_NAME.csproj -c "Release" -o obj/build-output/publish if [ "$GULP" == "true" ]; then npm install npm install gulp gulp --gulpfile gulpfile.js build fi echo "Publish" dotnet publish $SERVICE_NAME.csproj -c "Release" -o obj/build-output/publish cd obj/build-output/publish zip -r $SERVICE_NAME.zip . mv $SERVICE_NAME.zip ../../../ env: SERVICE_NAME: ${{ matrix.name }} BASE_PATH: ${{ matrix.base_path }} GULP: ${{ matrix.gulp }} - name: Upload build artifact uses: actions/upload-artifact@ee69f02b3dfdecd58bb31b4d133da38ba6fe3700 with: name: ${{ env.SERVICE_NAME }}.zip path: ${{ env.BASE_PATH }}/src/${{ env.SERVICE_NAME }}/${{ env.SERVICE_NAME }}.zip env: BASE_PATH: ${{ matrix.base_path }} SERVICE_NAME: ${{ matrix.name }} - name: Test build dir run: ls $BASE_PATH/src/$SERVICE_NAME env: SERVICE_NAME: ${{ matrix.name }} BASE_PATH: ${{ matrix.base_path }} reset-db: runs-on: ubuntu-latest needs: build steps: - name: Reset Test Data - Stub if: ${{ github.events.inputs.resetDb }} == "true" run: | echo "placeholder for cleaning DB" echo "placeholder for loading test dataset" update-db: if: ${{ github.events.inputs.migrateDb }} == "true" runs-on: ubuntu-latest needs: build steps: - name: migrate db if: ${{ github.events.inputs.resetDb }} == "true" run: | echo "placeholder for updateing DB" deploy-identity: runs-on: ubuntu-latest needs: - reset-db - update-db steps: - name: Download aritifacts uses: actions/download-artifact@v158ca71f7c614ae705e79f25522ef4658df18253 with: name: Identity.zip - 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: "appservices-identity-webapp-name, appservices-identity-webapp-publish-profile" - name: Deploy Identity uses: azure/webapps-deploy@798e43877120eda6a2a690a4f212c545e586ae31 with: app-name: ${{ steps.retrieve-secrets.outputs.appservices-identity-webapp-name }} slot-name: "staging" publish-profile: ${{ steps.retrieve-secrets.outputs.appservices-identity-webapp-publish-profile }} package: ./Identity.zip deploy-api: runs-on: ubuntu-latest needs: - reset-db - update-db steps: - name: Download aritifacts uses: actions/download-artifact@v158ca71f7c614ae705e79f25522ef4658df18253 with: name: Api.zip - 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: "appservices-api-webapp-name, appservices-api-webapp-publish-profile" - name: Deploy Api uses: azure/webapps-deploy@798e43877120eda6a2a690a4f212c545e586ae31 with: app-name: ${{ steps.retrieve-secrets.outputs.appservices-api-webapp-name }} slot-name: "staging" publish-profile: ${{ steps.retrieve-secrets.outputs.appservices-api-webapp-publish-profile }} package: ./Api.zip deploy-billing: runs-on: ubuntu-latest needs: - reset-db - update-db steps: - name: Download aritifacts uses: actions/download-artifact@v158ca71f7c614ae705e79f25522ef4658df18253 with: name: Billing.zip - 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: "appservices-billing-webapp-name, appservices-billing-webapp-publish-profile" - name: Deploy Billing uses: azure/webapps-deploy@798e43877120eda6a2a690a4f212c545e586ae31 with: app-name: ${{ steps.retrieve-secrets.outputs.appservices-billing-webapp-name }} slot-name: "staging" publish-profile: ${{ steps.retrieve-secrets.outputs.appservices-billing-webapp-publish-profile }} package: ./Billing.zip deploy-events: runs-on: ubuntu-latest needs: - reset-db - update-db steps: - name: Download aritifacts uses: actions/download-artifact@v158ca71f7c614ae705e79f25522ef4658df18253 with: name: Events.zip - 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: "appservices-events-webapp-name, appservices-events-webapp-publish-profile" - name: Deploy Events uses: azure/webapps-deploy@798e43877120eda6a2a690a4f212c545e586ae31 with: app-name: ${{ steps.retrieve-secrets.outputs.appservices-events-webapp-name }} slot-name: "staging" publish-profile: ${{ steps.retrieve-secrets.outputs.appservices-events-webapp-publish-profile }} package: ./Events.zip deploy-sso: runs-on: ubuntu-latest needs: - reset-db - update-db steps: - name: Download aritifacts uses: actions/download-artifact@v158ca71f7c614ae705e79f25522ef4658df18253 with: name: Sso.zip - 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: "appservices-sso-webapp-name, appservices-sso-webapp-publish-profile" - name: Deploy SSO uses: azure/webapps-deploy@798e43877120eda6a2a690a4f212c545e586ae31 with: app-name: ${{ steps.retrieve-secrets.outputs.appservices-sso-webapp-name }} slot-name: "staging" publish-profile: ${{ steps.retrieve-secrets.outputs.appservices-sso-webapp-publish-profile }} package: ./Sso.zip deploy-portal: runs-on: ubuntu-latest needs: - reset-db - update-db steps: - name: Download aritifacts uses: actions/download-artifact@v158ca71f7c614ae705e79f25522ef4658df18253 with: name: Portal.zip - 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: "appservices-portal-webapp-name, appservices-portal-webapp-publish-profile" - name: Deploy Portal uses: azure/webapps-deploy@798e43877120eda6a2a690a4f212c545e586ae31 with: app-name: ${{ steps.retrieve-secrets.outputs.appservices-portal-webapp-name }} slot-name: "staging" publish-profile: ${{ steps.retrieve-secrets.outputs.appservices-portal-webapp-publish-profile }} package: ./Portal.zip deploy-admin: runs-on: ubuntu-latest needs: - reset-db - update-db steps: - name: Download aritifacts uses: actions/download-artifact@v158ca71f7c614ae705e79f25522ef4658df18253 with: name: Admin.zip - 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: "appservices-admin-webapp-name, appservices-admin-webapp-publish-profile" - name: Deploy Admin uses: azure/webapps-deploy@798e43877120eda6a2a690a4f212c545e586ae31 with: app-name: ${{ steps.retrieve-secrets.outputs.appservices-admin-webapp-name }} slot-name: "staging" publish-profile: ${{ steps.retrieve-secrets.outputs.appservices-admin-webapp-publish-profile }} package: ./Admin.zip