@@ -3,10 +3,14 @@ name: Build and Test
33on :
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
1115defaults :
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::DNS@1.45_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 }}' 
8399            docker run "$img" cpm install -v Net::DNS@1.45_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