Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Use circleci api v2 in github actions #58

Merged
merged 2 commits into from
Mar 26, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 39 additions & 25 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
goos: [linux, darwin, windows]
goarch: [amd64, arm64]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: azure/setup-helm@v3
with:
version: 'v3.6.3'
Expand All @@ -38,7 +38,7 @@ jobs:
goos: [linux, windows]
goarch: [amd64, arm64]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set output
id: vars
run: echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
Expand All @@ -57,36 +57,50 @@ jobs:
strategy:
matrix:
project: [
{repo: "drupal-project-k8s", jobs: "4"},
{repo: "frontend-project-k8s", jobs: "4"},
{repo: "simple-project-k8s", jobs: "3"}
{org: "wunderio", repo: "drupal-project-k8s", branch: "master"},
{org: "wunderio", repo: "frontend-project-k8s", branch: "master"},
{org: "wunderio", repo: "simple-project-k8s", branch: "master"}
]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Validate released cli with ${{ matrix.project.REPO_NAME }}
run: |
REPO_NAME="${{ matrix.project.repo }}"
JOB_COUNT="${{ matrix.project.jobs }}"
CIRCLECI_DEV_API_TOKEN="${{ secrets.CIRCLECI_DEV_API_TOKEN }}"
ORG_NAME="${{ matrix.project.org }}"
BRANCH_NAME="${{ matrix.project.branch }}"
CIRCLECI_DEV_API_TOKEN_B64=$(echo -n "${{ secrets.CIRCLECI_DEV_API_TOKEN }}:" | base64)

if [ -z "${REPO_NAME}" ] || [ -z "${CIRCLECI_DEV_API_TOKEN}" ] || [ -z "${JOB_COUNT}" ]; then
echo "Missing CIRCLECI_DEV_API_TOKEN secret"
exit 1
if [ -z "${{ secrets.CIRCLECI_DEV_API_TOKEN }}" ]; then
echo "Repository secrets is missing CIRCLECI_DEV_API_TOKEN variable."
exit 1
fi

echo "Running ${REPO_NAME} build on CircleCI"
echo "Project link: https://circleci.com/gh/wunderio/workflows/${REPO_NAME}"
echo "Running ${ORG_NAME}/${REPO_NAME}/${BRANCH_NAME} build on CircleCI"
echo "Project link: https://app.circleci.com/pipelines/github/${ORG_NAME}/${REPO_NAME}?branch=${BRANCH_NAME}"

# Trigger a new pipeline
PIPELINE_ID=$(curl --request POST \
--url "https://circleci.com/api/v2/project/gh/wunderio/${REPO_NAME}/pipeline" \
--header "content-type: application/json" \
--data "{\"branch\":\"${BRANCH_NAME}\"}" \
--header "authorization: Basic ${CIRCLECI_DEV_API_TOKEN_B64}" --silent | jq -r '.id')

echo "Pipeline ID: ${PIPELINE_ID}"

base_api_url="https://circleci.com/api/v1.1/project/github/wunderio/${REPO_NAME}"
# Trigger a new deployment.
curl -s -X POST $base_api_url/build?circle-token=${CIRCLECI_DEV_API_TOKEN}
sleep 10
# Wait for deployment to be complete
while curl -s "$base_api_url?circle-token=${CIRCLECI_DEV_API_TOKEN}&limit=${JOB_COUNT}" | jq -e 'any(.[]; (.status == "running") or (.status == "queued"))' > /dev/null
do
echo "still running"
sleep 10
done
# Test that the build was successful
curl -s "$base_api_url?circle-token=${CIRCLECI_DEV_API_TOKEN}&limit=${JOB_COUNT}" | jq '.[] | { job_name: .workflows.job_name, status: .status }'
curl -s "$base_api_url?circle-token=${CIRCLECI_DEV_API_TOKEN}&limit=${JOB_COUNT}" | jq -e 'all(.[]; .status == "success")' > /dev/null

# Wait for pipeline to be complete
while true; do
PIPELINE_STATUS=$(curl --request GET \
--url "https://circleci.com/api/v2/pipeline/${PIPELINE_ID}/workflow" \
--header "authorization: Basic ${CIRCLECI_DEV_API_TOKEN_B64}" --silent | jq -r '.items[0].status')
if [ "${PIPELINE_STATUS}" = "success" ]; then
echo "Pipeline completed successfully"
break
elif [ "${PIPELINE_STATUS}" != "created" ] && [ "${PIPELINE_STATUS}" != "running" ]; then
echo "Pipeline status: ${PIPELINE_STATUS}, failing the test"
exit 1
fi
echo "current status: ${PIPELINE_STATUS}"
sleep 10
done
Loading