@@ -3,10 +3,14 @@ name: Build and Test
3
3
on :
4
4
push :
5
5
branches :
6
- - ' ** '
6
+ - master
7
7
tags-ignore :
8
8
- ' *'
9
9
pull_request :
10
+ paths :
11
+ - ' **/Dockerfile'
12
+ - ' !.devcontainer/Dockerfile'
13
+ - ' **/DevelPatchPerl.patch'
10
14
11
15
defaults :
12
16
run :
@@ -18,46 +22,56 @@ jobs:
18
22
runs-on : ubuntu-latest
19
23
outputs :
20
24
matrix : ${{ steps.generate.outputs.matrix }}
25
+
21
26
steps :
22
- - uses : actions/checkout@master
27
+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
28
+
23
29
- id : generate
24
30
name : Enumerate Dockerfiles
25
31
run : |
26
32
matrix="$(dirname */Dockerfile | sort -rn | jq -csR 'rtrimstr("\n") | split("\n") | { directory: . }')"
27
33
echo "matrix=$matrix" >> $GITHUB_OUTPUT
34
+
28
35
build-image :
29
36
needs : generate-matrix
30
37
runs-on : ubuntu-latest
31
38
strategy :
32
39
matrix : ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
33
40
name : ${{ matrix.directory }}
41
+
34
42
steps :
35
43
- uses : actions/checkout@master
44
+
36
45
- name : Clone docker-library/official-images (for testing)
37
46
run : |
38
47
git clone --depth 1 --single-branch https://github.com/docker-library/official-images.git
48
+
39
49
- name : Build image
40
50
run : |
41
51
docker version
42
52
dir='${{ matrix.directory }}'
43
53
img="perl:${dir//,/-}"
44
- docker build -t "$img" "$dir"
54
+ docker buildx build --progress=plain -t "$img" "$dir"
55
+
45
56
- name : Inspect image creation and tag time
46
57
run : |
47
58
dir='${{ matrix.directory }}'
48
59
img="perl:${dir//,/-}"
49
60
docker image inspect --format '{{.Created}}' "$img"
50
61
docker image inspect --format '{{.Metadata.LastTagTime}}' "$img"
62
+
51
63
- name : Run tests from docker-library/official-images
52
64
run : |
53
65
dir='${{ matrix.directory }}'
54
66
img="perl:${dir//,/-}"
55
67
./official-images/test/run.sh "$img"
68
+
56
69
- name : Run HTTPS access test
57
70
run : |
58
71
dir='${{ matrix.directory }}'
59
72
img="perl:${dir//,/-}"
60
73
docker run "$img" perl -MHTTP::Tiny -E 'if (HTTP::Tiny->new->get("https://github.com")->{status} == 200) { exit 0 } exit 1'
74
+
61
75
- name : Run cpanm install test
62
76
run : |
63
77
dir='${{ matrix.directory }}'
@@ -67,13 +81,15 @@ jobs:
67
81
docker run "$img" cpanm -v Net::[email protected] _02
68
82
fi
69
83
docker run "$img" cpanm -v Mojolicious
84
+
70
85
- name : Run cpanm no-lwp by default test
71
86
run : |
72
87
dir='${{ matrix.directory }}'
73
88
img="perl:${dir//,/-}"
74
89
if [[ "$dir" != *"slim"* ]]; then
75
90
docker run "$img" bash -c "cpanm -v -n LWP && cpanm -v -n local::lib"
76
91
fi
92
+
77
93
- name : Run cpm install test
78
94
run : |
79
95
dir='${{ matrix.directory }}'
83
99
docker run "$img" cpm install -v Net::[email protected] _02
84
100
fi
85
101
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