Files
publish-immutable-action/.github/workflows/ci-e2e.yml
T
2024-02-06 13:20:16 -05:00

70 lines
2.6 KiB
YAML

name: E2E Test
on:
workflow_dispatch:
inputs:
runs_on:
description: 'Platform to run publish-immutable-action on'
default: 'ubuntu-latest'
type: choice
options:
- ubuntu-latest
- macos-latest
- windows-latest
permissions: {}
jobs:
e2e-test:
name: E2E Integration Test
runs-on: ubuntu-latest
steps:
- name: Send message to consumer to publish
id: send-message
run: |
echo "SHA: ${{ github.sha }}"
curl -s -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.PAT }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/immutable-actions/test-publish-internal-ts-action/dispatches \
-d '{"event_type":"e2e-test","client_payload":{"unit":false,"integration":true,"sha":"${{ github.sha }}","runs_on":"${{ inputs.runs_on }}"}}'
- name: Wait for successful publish
id: wait-for-successful-publish
run: |
START_TIME="$SECONDS"
TIMESTAMP="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
while (( SECONDS - START_TIME < 90 )); do
echo "Polling for workflow created after $TIMESTAMP"
RESULT=$(curl -s -L -H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.PAT }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/immutable-actions/test-publish-internal-ts-action/actions/runs?created=>$TIMESTAMP" \
| jq '.workflow_runs[] | select(.name=="Publish Actions Package" and (.display_title | contains("${{ github.sha }}"))) | .status, .conclusion')
# split the RESULT into an array
mapfile -t RESULT <<< "$RESULT"
STATUS=$(echo "${RESULT[0]}" | sed -e 's/^"//' -e 's/"$//')
CONCLUSION=$(echo "${RESULT[1]}" | sed -e 's/^"//' -e 's/"$//')
if [ -z "$STATUS" ]; then
echo "No workflow found yet"
else
echo "Workflow status: $STATUS"
echo "Workflow conclusion: $CONCLUSION"
if [ "$STATUS" = "completed" ]; then
if [ "$CONCLUSION" = "success" ]; then
echo "workflow succeeded"
exit 0
elif [ "$CONCLUSION" = "failure" ]; then
echo "workflow failed"
exit 1
fi
fi
fi
sleep 1
done
exit 2