mirror of
https://github.com/lingble/chatwoot.git
synced 2026-03-19 20:52:31 +00:00
Currently, if a PR is open and a push happens, the Run Size Limit Check workflow will start running. If, shortly after a subsequent push on the same PR happens, the workflow will start running again without cancelling the previous (now obsolete) run. With these changes, the first run would be cancelled, thus saving compute resources (see below for quantity) without sacrificing functionality, since the second run will contain the changes from the first push as well.
51 lines
1.9 KiB
YAML
51 lines
1.9 KiB
YAML
## github action to check deployment success
|
|
## curl the deployment url and check for 200 status
|
|
## deployment url will be of the form chatwoot-pr-<pr_number>.herokuapp.com
|
|
name: Deploy Check
|
|
|
|
on:
|
|
pull_request:
|
|
|
|
# If two pushes happen within a short time in the same PR, cancel the run of the oldest push
|
|
concurrency:
|
|
group: pr-${{ github.workflow }}-${{ github.head_ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
deployment_check:
|
|
name: Check Deployment
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install jq
|
|
run: sudo apt-get install -y jq
|
|
- name: Print Deployment URL
|
|
run: echo "https://chatwoot-pr-${{ github.event.pull_request.number }}.herokuapp.com"
|
|
- name: Check Deployment Status
|
|
run: |
|
|
max_attempts=10
|
|
attempt=1
|
|
status_code=0
|
|
echo "Waiting for review app to be deployed/redeployed, trying in 10 minutes..."
|
|
sleep 600
|
|
while [ $attempt -le $max_attempts ]; do
|
|
response=$(curl -s -o /dev/null -w "%{http_code}" https://chatwoot-pr-${{ github.event.pull_request.number }}.herokuapp.com/api)
|
|
status_code=$(echo $response | head -n 1)
|
|
if [ $status_code -eq 200 ]; then
|
|
body=$(curl -s https://chatwoot-pr-${{ github.event.pull_request.number }}.herokuapp.com/api)
|
|
if echo "$body" | jq -e '.version and .timestamp and .queue_services == "ok" and .data_services == "ok"' > /dev/null; then
|
|
echo "Deployment successful"
|
|
exit 0
|
|
else
|
|
echo "Deployment status unknown, retrying in 3 minutes..."
|
|
sleep 180
|
|
fi
|
|
else
|
|
echo "Waiting for review app to be ready, retrying in 3 minutes..."
|
|
sleep 180
|
|
attempt=$((attempt + 1))
|
|
fi
|
|
done
|
|
echo "Deployment failed after $max_attempts attempts"
|
|
exit 1
|
|
fi
|