"on": push: tags: - production name: Deploy Porter to Production jobs: deploy-start: name: Mark deploy as started runs-on: ubuntu-latest outputs: deploy-ts: ${{ steps.deploy.outputs.ts }} steps: - name: Slack Notification uses: slackapi/slack-github-action@v1 id: deploy continue-on-error: true env: SLACK_WEBHOOK_URL: ${{ secrets.PORTER_PROD_NOTIFICATIONS_SLACK_WEBHOOK }} with: payload: | { "text": "porter prod deploy started (In Progress)\n<${{ github.event.pull_request.html_url || github.event.head_commit.url }}|Link to commit>", "attachments": [ { "pretext": "Deployment started", "color": "dbab09", "fields": [ { "title": "Status", "short": true, "value": "In Progress" } ] } ] } build-go: runs-on: ubuntu-latest needs: - deploy-start steps: - name: Checkout code uses: actions/checkout@v3 - name: build-go uses: ./.github/actions/build-go build-npm: runs-on: ubuntu-latest needs: - deploy-start steps: - name: Checkout code uses: actions/checkout@v3 - name: build-npm uses: ./.github/actions/build-npm deploy-porter: runs-on: ubuntu-latest needs: [build-go, build-npm] steps: - name: Checkout code uses: actions/checkout@v3 - name: Get Go Binaries uses: actions/download-artifact@v3 with: name: go-binaries path: bin/ - name: Get NPM static files uses: actions/download-artifact@v3 with: name: npm-static-files path: build/ - name: Set Github tag id: vars run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - name: Update Porter API timeout-minutes: 20 uses: porter-dev/porter-update-action@v0.1.0 with: app: porter-ui cluster: "9" host: https://dashboard.internal-tools.porter.run namespace: default project: "5" tag: ${{ steps.vars.outputs.sha_short }} token: ${{ secrets.PORTER_PRODUCTION_DEPLOYMENT }} - name: Update Porter Auth timeout-minutes: 20 uses: porter-dev/porter-update-config-action@v0.1.0 with: app: porter-auth cluster: "9" host: https://dashboard.internal-tools.porter.run namespace: default project: "5" tag: ${{ steps.vars.outputs.sha_short }} token: ${{ secrets.PORTER_PRODUCTION_DEPLOYMENT }} deploy-worker-pool: runs-on: ubuntu-latest needs: [build-go, build-npm] # don't run this step unless these finish successfully steps: - name: Checkout code uses: actions/checkout@v3 - name: Set Github tag id: vars run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - name: Update Worker Pool (revision cull job) timeout-minutes: 20 uses: porter-dev/porter-update-action@v0.1.0 with: app: cull-helm-revisions cluster: "9" host: https://dashboard.internal-tools.porter.run namespace: default project: "5" tag: ${{ steps.vars.outputs.sha_short }} token: ${{ secrets.PORTER_PRODUCTION_DEPLOYMENT }} deploy-end: name: Mark deploy as ended runs-on: ubuntu-latest if: always() needs: - deploy-start - deploy-porter - deploy-worker-pool steps: - name: Slack Notification uses: slackapi/slack-github-action@v1 continue-on-error: true env: SLACK_WEBHOOK_URL: ${{ secrets.PORTER_PROD_NOTIFICATIONS_SLACK_WEBHOOK }} with: update-ts: ${{ steps.deploy-start.outputs.deploy-ts }} payload: | { "text": "porter prod deploy completed\n<${{ github.event.pull_request.html_url || github.event.head_commit.url }}|Link to commit>", "attachments": [ { "pretext": "Deployment completed", "color": "8590ff", "fields": [ { "title": "Porter Result", "short": true, "value": "${{ needs.deploy-porter.result }}" }, { "title": "Worker Pool Result", "short": true, "value": "${{ needs.deploy-worker-pool.result }}" } ] } ] }