Updating Review App for justin808-testing-2025-01-03 #78
Workflow file for this run
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: Deploy Review App to Control Plane | |
run-name: ${{ github.event_name == 'issue_comment' && 'Deploying Review App' || format('Updating Review App for {0}', github.ref_name) }} | |
on: | |
issue_comment: | |
types: [created] | |
push: | |
branches-ignore: | |
- main # Don't run on main branch pushes | |
- master # Don't run on master branch pushes | |
# Use concurrency to cancel in-progress runs | |
concurrency: | |
group: deploy-pr-${{ github.event.issue.number }} | |
cancel-in-progress: true | |
env: | |
CPLN_ORG: ${{ secrets.CPLN_ORG }} | |
CPLN_TOKEN: ${{ secrets.CPLN_TOKEN }} | |
jobs: | |
Process-Deployment-Command: | |
# For issue comments, only run on /deploy-review-app command | |
# For push events, only run if PR exists and has a review app | |
if: | | |
(github.event_name == 'issue_comment' && | |
github.event.issue.pull_request && | |
github.event.comment.body == '/deploy-review-app') || | |
github.event_name == 'push' | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
deployments: write | |
pull-requests: write | |
issues: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Environment | |
uses: ./.github/actions/setup-environment | |
- name: Get PR Number for Push Event | |
if: github.event_name == 'push' | |
id: get-pr | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
# Get PR number from branch | |
PR_NUMBER=$(gh pr list --head ${{ github.ref_name }} --json number --jq '.[0].number') | |
if [ -n "$PR_NUMBER" ]; then | |
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV | |
echo "APP_NAME=qa-react-webpack-rails-tutorial-pr-$PR_NUMBER" >> $GITHUB_ENV | |
echo "has_pr=true" >> $GITHUB_OUTPUT | |
else | |
echo "No PR found for this branch" | |
exit 0 | |
fi | |
- name: Set PR Number for Comment Event | |
if: github.event_name == 'issue_comment' | |
run: | | |
echo "PR_NUMBER=${{ github.event.issue.number }}" >> $GITHUB_ENV | |
echo "APP_NAME=qa-react-webpack-rails-tutorial-pr-${{ github.event.issue.number }}" >> $GITHUB_ENV | |
- name: Check if Review App Exists | |
id: check-app | |
if: github.event_name == 'push' && steps.get-pr.outputs.has_pr == 'true' | |
env: | |
CPLN_TOKEN: ${{ secrets.CPLN_TOKEN }} | |
run: | | |
if ! cpflow exists -a ${{ env.APP_NAME }}; then | |
echo "No review app exists for this PR" | |
exit 0 | |
fi | |
echo "app_exists=true" >> $GITHUB_OUTPUT | |
- name: Get PR HEAD Ref | |
id: getRef | |
if: | | |
github.event_name == 'issue_comment' || | |
(steps.get-pr.outputs.has_pr == 'true' && steps.check-app.outputs.app_exists == 'true') | |
run: | | |
PR_DATA=$(gh pr view ${{ env.PR_NUMBER }} --repo ${{ github.repository }} --json headRefName,headRefOid) | |
echo "PR_REF=$(echo "$PR_DATA" | jq -r '.headRefName')" >> $GITHUB_OUTPUT | |
echo "PR_SHA=$(echo "$PR_DATA" | jq -r '.headRefOid')" >> $GITHUB_OUTPUT | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Checkout PR Branch | |
if: | | |
github.event_name == 'issue_comment' || | |
(steps.get-pr.outputs.has_pr == 'true' && steps.check-app.outputs.app_exists == 'true') | |
run: git checkout ${{ steps.getRef.outputs.PR_REF }} | |
- name: Deploy to Control Plane | |
if: | | |
github.event_name == 'issue_comment' || | |
(steps.get-pr.outputs.has_pr == 'true' && steps.check-app.outputs.app_exists == 'true') | |
uses: ./.github/actions/deploy-to-control-plane | |
with: | |
app_name: ${{ env.APP_NAME }} | |
org: ${{ env.CPLN_ORG }} | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
wait_timeout: ${{ vars.WAIT_TIMEOUT || 900 }} | |
env: | |
CPLN_TOKEN: ${{ env.CPLN_TOKEN }} | |
PR_NUMBER: ${{ env.PR_NUMBER }} |