Skip to content

Commit

Permalink
Restore "Update workflows for all pull request tests in test.yml" (#545)
Browse files Browse the repository at this point in the history
* Restore with filter check

This reverts commit 05f6eeb.
  • Loading branch information
athackst authored Jan 4, 2025
1 parent 05f6eeb commit 1a5e3a8
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 44 deletions.
36 changes: 1 addition & 35 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -1,44 +1,21 @@
name: Dockerfiles
# Test and push dockerfiles when they change.
# Test for pull request, push dockerfiles when merged into main.
# Test and push dockerfiles when merged into main and on schedule.
on:
schedule:
# * is a special character in YAML so you have to quote this string
- cron: "0 0 1 * *"
push:
branches:
- main
paths:
- '**.Dockerfile'
- .github/workflows/docker.yml
pull_request_target:
workflow_dispatch:

# Cancel in-progress funs of the same workflow

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.x
cache: pip
- name: Verify dockerfiles
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
./generate.py
git diff --exit-code
docker:
needs: generate
runs-on: ubuntu-latest
strategy:
fail-fast: false
Expand Down Expand Up @@ -273,16 +250,5 @@ jobs:
ghcr.io/${{ github.repository_owner }}/${{ matrix.label }}:${{ matrix.tag }}-${{ matrix.target }}
cache-from: |
type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.label }}:${{ matrix.tag }}-buildcache
type=gha
cache-to: |
type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.label }}:${{ matrix.tag }}-buildcache,mode=max
type=gha,mode=max
complete:
needs:
- generate
- docker
runs-on: ubuntu-latest
steps:
- name: Check
run: echo "Completed successfully!"
108 changes: 99 additions & 9 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
name: Test

on:
push:
branches:
- main
pull_request:
workflow_dispatch:

Expand All @@ -28,6 +25,23 @@ jobs:
run: |
pip install pydocstyle
pydocstyle .
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.x
cache: pip
- name: Verify dockerfiles
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
./generate.py
git diff --exit-code
env-check:
runs-on: ubuntu-latest
permissions:
Expand All @@ -39,12 +53,6 @@ jobs:
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
Expand All @@ -59,3 +67,85 @@ jobs:
- name: Run environment comparison
run: |
.github/scripts/env-compare.py app:local rolling
changes:
runs-on: ubuntu-latest
permissions:
contents: read # Required to analyze file changes
outputs:
dockerfiles: ${{ steps.filter.outputs.dockerfiles }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Find Changed Dockerfiles
id: filter
run: |
# Find changed .Dockerfile files between the PR branch and the base branch
changed_files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD -- '*.Dockerfile')
echo "Changed Dockerfiles: $changed_files"
# Output the results as JSON
if [ -z "$changed_files" ]; then
echo '["none"]' > changed_dockerfiles.json
else
echo "$changed_files" | jq -R -s -c 'split("\n")[:-1]' > changed_dockerfiles.json
fi
echo "dockerfiles=$(cat changed_dockerfiles.json)" >> $GITHUB_OUTPUT
docker-build:
needs: changes
strategy:
fail-fast: false
matrix:
dockerfile: ${{ fromJSON(needs.changes.outputs.dockerfiles) }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Extract Label and Tag
id: extract
run: |
# Extract the full filename (e.g., label/tag.Dockerfile)
filename="${{ matrix.dockerfile }}"
# Extract label (e.g., 'label')
label=$(dirname "$filename")
# Extract tag (e.g., 'tag')
tag=$(basename "$filename" | cut -d. -f1)
echo "Label: $label, Tag: $tag"
# Set outputs for subsequent steps
echo "label=$label" >> $GITHUB_OUTPUT
echo "tag=$tag" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Test dockerfile build
if: ${{ matrix.dockerfile != 'none' }}
uses: docker/build-push-action@v6
with:
push: false
file: ${{ matrix.dockerfile }}
tags: |
ghcr.io/${{ github.repository_owner }}/${{ steps.extract.outputs.label }}:${{ steps.extract.outputs.tag }}
cache-from: |
type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ steps.extract.outputs.label }}:${{ steps.extract.outputs.tag }}-buildcache
type=gha
cache-to:
type=gha,mode=max

complete:
needs:
- lint
- generate
- env-check
- docker-build
runs-on: ubuntu-latest
steps:
- name: Check
run: echo "Completed successfully!"

0 comments on commit 1a5e3a8

Please sign in to comment.