Skip to content

Commit 5718e86

Browse files
Merge pull request #76 from OctoPrint/add-workflow-filtering-rules
Add workflow filtering rules
2 parents 0ace3ae + 8759a05 commit 5718e86

File tree

3 files changed

+32
-11
lines changed

3 files changed

+32
-11
lines changed

.github/filters.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
main_image_files:
2+
- 'Dockerfile'
3+
- 'root/**'
4+
minimal_image_files:
5+
- 'minimal/**'

.github/workflows/build.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,22 @@ on:
99
- master
1010

1111
jobs:
12+
filters:
13+
runs-on: ubuntu-latest
14+
outputs:
15+
found_main_changes: ${{ steps.filter.outputs.main_image_files }}
16+
found_minimal_changes: ${{ steps.filter.outputs.minimal_image_files }}
17+
steps:
18+
- uses: actions/checkout@v2
19+
- uses: dorny/[email protected]
20+
id: filter
21+
with:
22+
filters: '.github/filters.yml'
23+
1224
build:
1325
runs-on: ubuntu-latest
26+
needs: filters
27+
if: needs.filters.outputs.found_main_changes
1428

1529
steps:
1630
- uses: actions/checkout@v2

.github/workflows/octoprint-release.yml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,25 @@ on:
99
- master
1010

1111
jobs:
12-
changes:
12+
# This job ensures image is only deployed when files that make up the image are changed
13+
# (changing docs or build scripts won't result in a push to registry)
14+
filters:
1315
runs-on: ubuntu-latest
1416
outputs:
15-
noop: ${{ steps.filter.outputs.noop }}
17+
found_main_image_changes: ${{ steps.filter.outputs.main_image_files }}
18+
found_minimal_image_changes: ${{ steps.filter.outputs.minimal_image_files }}
1619
steps:
1720
- uses: actions/checkout@v2
1821
- uses: dorny/[email protected]
1922
if: ${{ github.event_name == 'push'}}
2023
id: filter
2124
with:
22-
filters: |
23-
image:
24-
- 'root/**'
25-
- Dockerfile
25+
filters: '.github/filters.yml'
2626

2727
release:
2828
runs-on: ubuntu-latest
29-
needs: changes
30-
if: ${{ github.event_name == 'repository_dispatch' || needs.changes.outputs.image == 'true'}}
29+
needs: filters
30+
if: github.event_name == 'repository_dispatch' || needs.filters.outputs.found_main_changes == 'true'
3131
strategy:
3232
matrix:
3333
tags: ['latest','%X%', '%X.Y%', '%X.Y.Z%']
@@ -36,15 +36,14 @@ jobs:
3636
steps:
3737
- uses: actions/checkout@v2
3838
- name: Get Tag if push
39-
id: get-octoprint-release
40-
if: ${{ github.event_name == 'push'}}
39+
id: latest-octoprint
4140
uses: pozetroninc/github-action-get-latest-release@master
4241
with:
4342
owner: OctoPrint
4443
repo: OctoPrint
4544
- name: Set Tag on Push
4645
if: ${{ github.event_name == 'push'}}
47-
run: echo "::set-env name=tag_name::${{ steps.get-octoprint-release.outputs.release }}"
46+
run: echo "::set-env name=tag_name::${{ steps.latest-octoprint.outputs.release }}"
4847
- name: Set Tag on dispatch
4948
if: ${{ github.event_name == 'repository_dispatch' }}
5049
run: echo "::set-env name=tag_name::${{ github.event.client_payload.tag_name }}"
@@ -69,6 +68,9 @@ jobs:
6968
7069
- name: Build and Deploy
7170
id: build_deploy
71+
#if matrix tag is latest AND tag_name is NOT equal to latest-octoprint don't build
72+
# this allows rebuilds of older versions without changing 'latest' to an old release
73+
if: !(env.tag_name == 'latest' && ( steps.latest-octprint.outputs.release != env.tag_name ))
7274
run: |
7375
docker buildx build --push \
7476
--platform linux/arm64,linux/amd64,linux/arm/v7 \

0 commit comments

Comments
 (0)