test: use github api scripts to wait for tests #22
This file contains 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: publish-swap | |
on: | |
push: | |
paths: | |
- apps/swap/** | |
- libs/** | |
- package.json | |
- bun.lockb | |
- .github/workflows/publish-swap.yml | |
workflow_dispatch: | |
jobs: | |
wait-for-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/github-script@v6 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const { owner, repo } = context.repo; | |
const ref = context.sha; | |
while (true) { | |
const { data: checks } = await github.rest.checks.listForRef({ | |
owner, | |
repo, | |
ref, | |
check_name: 'run-unit-tests' | |
}); | |
if (checks.check_runs.length > 0) { | |
const status = checks.check_runs[0].status; | |
const conclusion = checks.check_runs[0].conclusion; | |
if (status === 'completed') { | |
if (conclusion === 'success') { | |
console.log('Tests passed!'); | |
break; | |
} else { | |
throw new Error('Tests failed!'); | |
} | |
} | |
} | |
await new Promise(r => setTimeout(r, 10000)); | |
} | |
docker: | |
needs: wait-for-tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
images: | | |
bitsacco/swap | |
tags: | | |
type=ref,event=branch | |
type=ref,event=pr | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}}.{{minor}} | |
type=sha | |
- name: Login to Docker Hub | |
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') | |
uses: docker/login-action@v2 | |
with: | |
username: okjodom | |
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | |
- name: Build and push swap | |
uses: docker/build-push-action@v4 | |
with: | |
file: apps/swap/Dockerfile | |
push: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') }} | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
- name: Checkout repository content | |
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') | |
uses: actions/checkout@v4 | |
# This workflow requires the repository content to be locally available to read the README | |
- name: Update the Docker Hub description | |
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') | |
uses: peter-evans/dockerhub-description@v3 | |
with: | |
username: okjodom | |
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | |
repository: bitsacco/swap | |
readme-filepath: ./apps/swap/README.md |