Skip to content

Updating Review App for justin808-testing-2025-01-03 #78

Updating Review App for justin808-testing-2025-01-03

Updating Review App for justin808-testing-2025-01-03 #78

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 }}