@@ -3,32 +3,93 @@ 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 {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
+ ls -l $PWD/.git
43
+ if [[ $(git --no-pager diff --stat) != '' ]]; 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
+ let out = ''
64
+ let err = ''
65
+
66
+ const options = {}
67
+ options.listeners = {
68
+ stdout: (data) => {
69
+ out += data.toString()
70
+ },
71
+ stderr: (data) => {
72
+ err += data.toString()
73
+ }
74
+ }
75
+
76
+ await exec.exec('git', ['--no-pager', 'diff', '--stat'], options)
77
+
78
+ if (out && context.actor !== 'nektos/act') {
79
+ const output = `
80
+ #### :warning: Additional changes generated (missing in commit), see diffstat:
81
+ <details><summary>Show Output</summary>
82
+
83
+ \`\`\`diff
84
+ ${ out.trim() }
85
+ \`\`\`
86
+ </details>`
87
+
88
+ github.rest.issues.createComment({
89
+ issue_number: context.issue.number,
90
+ owner: context.repo.owner,
91
+ repo: context.repo.repo,
92
+ body: output
93
+ })
94
+ }
95
+
0 commit comments