Skip to content

Commit cbd6422

Browse files
committed
workflows: build image only on build context changes
Also switch to using docker-buildx, and remove unneeded step.
1 parent 3db6a43 commit cbd6422

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

Diff for: .github/workflows/build-image.yml

+19-13
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ name: Build and Test
33
on:
44
push:
55
branches:
6-
- '**'
6+
- master
77
tags-ignore:
88
- '*'
99
pull_request:
10+
paths:
11+
- '**/Dockerfile'
12+
- '!.devcontainer/Dockerfile'
13+
- '**/DevelPatchPerl.patch'
1014

1115
defaults:
1216
run:
@@ -18,46 +22,56 @@ jobs:
1822
runs-on: ubuntu-latest
1923
outputs:
2024
matrix: ${{ steps.generate.outputs.matrix }}
25+
2126
steps:
22-
- uses: actions/checkout@master
27+
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
28+
2329
- id: generate
2430
name: Enumerate Dockerfiles
2531
run: |
2632
matrix="$(dirname */Dockerfile | sort -rn | jq -csR 'rtrimstr("\n") | split("\n") | { directory: . }')"
2733
echo "matrix=$matrix" >> $GITHUB_OUTPUT
34+
2835
build-image:
2936
needs: generate-matrix
3037
runs-on: ubuntu-latest
3138
strategy:
3239
matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
3340
name: ${{ matrix.directory }}
41+
3442
steps:
3543
- uses: actions/checkout@master
44+
3645
- name: Clone docker-library/official-images (for testing)
3746
run: |
3847
git clone --depth 1 --single-branch https://github.com/docker-library/official-images.git
48+
3949
- name: Build image
4050
run: |
4151
docker version
4252
dir='${{ matrix.directory }}'
4353
img="perl:${dir//,/-}"
44-
docker build -t "$img" "$dir"
54+
docker buildx build --progress=plain -t "$img" "$dir"
55+
4556
- name: Inspect image creation and tag time
4657
run: |
4758
dir='${{ matrix.directory }}'
4859
img="perl:${dir//,/-}"
4960
docker image inspect --format '{{.Created}}' "$img"
5061
docker image inspect --format '{{.Metadata.LastTagTime}}' "$img"
62+
5163
- name: Run tests from docker-library/official-images
5264
run: |
5365
dir='${{ matrix.directory }}'
5466
img="perl:${dir//,/-}"
5567
./official-images/test/run.sh "$img"
68+
5669
- name: Run HTTPS access test
5770
run: |
5871
dir='${{ matrix.directory }}'
5972
img="perl:${dir//,/-}"
6073
docker run "$img" perl -MHTTP::Tiny -E 'if (HTTP::Tiny->new->get("https://github.com")->{status} == 200) { exit 0 } exit 1'
74+
6175
- name: Run cpanm install test
6276
run: |
6377
dir='${{ matrix.directory }}'
@@ -67,13 +81,15 @@ jobs:
6781
docker run "$img" cpanm -v Net::[email protected]_02
6882
fi
6983
docker run "$img" cpanm -v Mojolicious
84+
7085
- name: Run cpanm no-lwp by default test
7186
run: |
7287
dir='${{ matrix.directory }}'
7388
img="perl:${dir//,/-}"
7489
if [[ "$dir" != *"slim"* ]]; then
7590
docker run "$img" bash -c "cpanm -v -n LWP && cpanm -v -n local::lib"
7691
fi
92+
7793
- name: Run cpm install test
7894
run: |
7995
dir='${{ matrix.directory }}'
@@ -83,13 +99,3 @@ jobs:
8399
docker run "$img" cpm install -v Net::[email protected]_02
84100
fi
85101
docker run "$img" cpm install -v Mojolicious
86-
- name: COPY all to default WORKDIR
87-
run: |
88-
dir='${{ matrix.directory }}'
89-
img="perl:${dir//,/-}"
90-
mkdir -p test/lib
91-
cat <<EOF >Dockerfile
92-
FROM $img
93-
COPY . .
94-
EOF
95-
docker build -f Dockerfile test

0 commit comments

Comments
 (0)