@@ -3,32 +3,83 @@ name: Generate Dockerfiles/patches
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
+ - cpanfile
12
+ - config.yml
13
+ - generate.pl
14
+ - .github/workflows/generate-dockerfiles-patches.yml
10
15
11
16
jobs :
12
17
generate :
13
18
runs-on : ubuntu-latest
19
+ container : perl:devel
20
+ permissions :
21
+ contents : read
22
+ pull-requests : write
23
+
14
24
steps :
25
+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
26
+
15
27
- name : Set up git user name and email
16
28
run : |
17
29
git config --global user.email "test@github-actions"
18
30
git config --global user.name "GitHub Actions"
19
- - uses : actions/checkout@master
20
- - name : Install system perl and cpanm
21
- run : |
22
- sudo apt-get install --no-install-recommends -y perl cpanminus
31
+
23
32
- name : Install dependencies
24
33
run : |
25
- cpanm --quiet --installdeps --notest -L local .
34
+ cpm install -g
35
+
26
36
- name : Generate Dockerfiles/patches
37
+ id : generate
38
+ shell : bash -euo pipefail -x {0}
27
39
run : |
28
- perl -Ilocal/lib/perl5 ./generate.pl
29
- - name : Show diffstat (if any)
30
- run : |
31
- git --no-pager diff --stat HEAD
32
- - name : Show diffstat (if any)
40
+ export DOCKER_PERL_DOWNLOADS_DIR=/tmp/docker-perl-downloads
41
+ perl ./generate.pl
42
+ git --no-pager diff --stat > diffstat.txt
43
+ if [[ -s diffstat.txt ]]; then
44
+ echo has_extra_diffs=1 >> $GITHUB_OUTPUT
45
+ fi
46
+
47
+ - name : Setup NodeJS in Perl container (for comment to PR)
48
+ if : github.event_name == 'pull_request' && steps.generate.outputs.has_extra_diffs
33
49
run : |
34
- git --no-pager diff --stat HEAD
50
+ if ! command -v node; then
51
+ curl -sL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh
52
+ bash nodesource_setup.sh
53
+ apt-get install -y --no-install-recommends nodejs
54
+ npm install -g yarn
55
+ rm -fr /var/lib/apt/lists/* /var/lib/apt/cache/* nodesource_setup.sh
56
+ fi
57
+
58
+ - name : Comment diffstat of generated changes to PR (if any)
59
+ if : github.event_name == 'pull_request' && steps.generate.outputs.has_extra_diffs
60
+ uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
61
+ with :
62
+ script : |
63
+ const fs = require('node:fs')
64
+ let out = fs.readFileSync('diffstat.txt', 'utf8').trim()
65
+
66
+ if (out && context.actor !== 'nektos/act') {
67
+ const output = `
68
+ #### :warning: Additional changes generated (missing in commit), see diffstat:
69
+ <details><summary>Show Output</summary>
70
+
71
+ \`\`\`diff
72
+ ${ out }
73
+ \`\`\`
74
+ </details>`
75
+
76
+ github.rest.issues.createComment({
77
+ issue_number: context.issue.number,
78
+ owner: context.repo.owner,
79
+ repo: context.repo.repo,
80
+ body: output
81
+ })
82
+ } else {
83
+ console.log(out)
84
+ }
85
+
0 commit comments