@@ -3,32 +3,84 @@ 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
+ git config --global --add safe.directory $PWD
41
+ export DOCKER_PERL_DOWNLOADS_DIR=/tmp/docker-perl-downloads
42
+ perl ./generate.pl
43
+ /usr/bin/git --no-pager diff --stat > diffstat.txt
44
+ if [[ -s diffstat.txt ]]; then
45
+ echo has_extra_diffs=1 >> $GITHUB_OUTPUT
46
+ fi
47
+
48
+ - name : Setup NodeJS in Perl container (for comment to PR)
49
+ if : github.event_name == 'pull_request' && steps.generate.outputs.has_extra_diffs
33
50
run : |
34
- git --no-pager diff --stat HEAD
51
+ if ! command -v node; then
52
+ curl -sL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh
53
+ bash nodesource_setup.sh
54
+ apt-get install -y --no-install-recommends nodejs
55
+ npm install -g yarn
56
+ rm -fr /var/lib/apt/lists/* /var/lib/apt/cache/* nodesource_setup.sh
57
+ fi
58
+
59
+ - name : Comment diffstat of generated changes to PR (if any)
60
+ if : github.event_name == 'pull_request' && steps.generate.outputs.has_extra_diffs
61
+ uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
62
+ with :
63
+ script : |
64
+ const fs = require('node:fs')
65
+ let out = fs.readFileSync('diffstat.txt', 'utf8').trim()
66
+
67
+ if (out && context.actor !== 'nektos/act') {
68
+ const output = `
69
+ #### :warning: Additional changes generated (missing in commit), see diffstat:
70
+ <details><summary>Show Output</summary>
71
+
72
+ \`\`\`diff
73
+ ${ out }
74
+ \`\`\`
75
+ </details>`
76
+
77
+ github.rest.issues.createComment({
78
+ issue_number: context.issue.number,
79
+ owner: context.repo.owner,
80
+ repo: context.repo.repo,
81
+ body: output
82
+ })
83
+ } else {
84
+ console.log(out)
85
+ }
86
+
0 commit comments