mirror of
https://github.com/outbackdingo/cozystack.git
synced 2026-02-05 08:17:59 +00:00
73 lines
2.0 KiB
YAML
73 lines
2.0 KiB
YAML
name: Pull Request Workflow
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
|
|
env:
|
|
REGISTRY: ghcr.io
|
|
IMAGE_NAME: ${{ github.repository }}
|
|
|
|
jobs:
|
|
build-and-test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GitHub Container Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build images
|
|
run: make build
|
|
env:
|
|
DOCKER_BUILDKIT: 1
|
|
|
|
- name: Tag and push images
|
|
run: |
|
|
PR_NUMBER=${{ github.event.pull_request.number }}
|
|
BRANCH_NAME="test-pr${PR_NUMBER}"
|
|
git checkout -b ${BRANCH_NAME}
|
|
git push origin ${BRANCH_NAME}
|
|
|
|
# Tag images with PR number
|
|
for image in $(docker images --format "{{.Repository}}:{{.Tag}}" | grep ${IMAGE_NAME}); do
|
|
docker tag ${image} ${image}-pr${PR_NUMBER}
|
|
docker push ${image}-pr${PR_NUMBER}
|
|
done
|
|
|
|
- name: Run tests
|
|
run: make test
|
|
|
|
cleanup:
|
|
needs: build-and-test
|
|
if: github.event.action == 'closed'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GitHub Container Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Delete PR-tagged images
|
|
run: |
|
|
PR_NUMBER=${{ github.event.pull_request.number }}
|
|
for image in $(docker images --format "{{.Repository}}:{{.Tag}}" | grep ${IMAGE_NAME} | grep "pr${PR_NUMBER}"); do
|
|
docker rmi ${image}
|
|
docker push ${image} --delete
|
|
done |