|
1 | 1 | # Ref: https://securitylab.github.com/research/github-actions-preventing-pwn-requests |
2 | | -name: BreakageApplication |
| 2 | +name: Breakage Application |
3 | 3 |
|
4 | 4 | # read-only repo token |
5 | 5 | # no access to secrets |
|
9 | 9 |
|
10 | 10 | jobs: |
11 | 11 | break: |
12 | | - runs-on: ubuntu-latest |
13 | 12 | if: contains(github.event.pull_request.labels.*.name, 'run breakage applications') |
14 | 13 | strategy: |
15 | 14 | fail-fast: false |
16 | 15 | matrix: |
17 | | - pkg: [ |
18 | | - "control-toolbox/CalculusOfVariations.jl", |
19 | | - "control-toolbox/LossControl.jl", |
20 | | - "control-toolbox/GeometricPreconditioner.jl", |
21 | | - "control-toolbox/MedicalResonanceImaging.jl", |
22 | | - "control-toolbox/Kepler.jl" |
23 | | - ] |
| 16 | + pkgname: [CalculusOfVariations, LossControl, GeometricPreconditioner, MedicalResonanceImaging, Kepler] |
24 | 17 | pkgversion: [latest, stable] |
25 | | - |
26 | | - steps: |
27 | | - - uses: actions/checkout@v4 |
28 | | - |
29 | | - # Install Julia |
30 | | - - uses: julia-actions/setup-julia@latest |
31 | | - with: |
32 | | - version: 1 |
33 | | - arch: x64 |
34 | | - - uses: actions/cache@v1 |
35 | | - env: |
36 | | - cache-name: cache-artifacts |
37 | | - with: |
38 | | - path: ~/.julia/artifacts |
39 | | - key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} |
40 | | - restore-keys: | |
41 | | - ${{ runner.os }}-test-${{ env.cache-name }}- |
42 | | - ${{ runner.os }}-test- |
43 | | - ${{ runner.os }}- |
44 | | - - uses: julia-actions/julia-buildpkg@v1 |
45 | | - |
46 | | - # Breakage test |
47 | | - - name: 'Breakage of ${{ matrix.pkg }}, ${{ matrix.pkgversion }} version' |
48 | | - env: |
49 | | - URL: ${{ matrix.pkg }} |
50 | | - VERSION: ${{ matrix.pkgversion }} |
51 | | - run: | |
52 | | - set -v |
53 | | - mkdir -p ./pr |
54 | | - echo "${{ github.event.number }}" > ./pr/NR |
55 | | - # |
56 | | - PKG_SRC_PATH=`pwd` |
57 | | - PKG_SRC_NAME=`basename -s ".jl" $PKG_SRC_PATH` |
58 | | - # |
59 | | - git clone https://github.com/$URL |
60 | | - export PKG=$(echo $URL | cut -f2 -d/) |
61 | | - cd $PKG |
62 | | - if [ $VERSION == "stable" ]; then |
63 | | - TAG=$(git tag -l "v*" --sort=-creatordate | head -n1) |
64 | | - if [ -z "$TAG" ]; then |
65 | | - TAG="no_tag" |
66 | | - else |
67 | | - git checkout $TAG |
68 | | - fi |
69 | | - else |
70 | | - TAG=$VERSION |
71 | | - fi |
72 | | - export TAG |
73 | | - # |
74 | | - PKG_SRC_VERSION=$(julia --project=docs/ -e 'using Pkg, Logging; with_logger(NullLogger()) do; Pkg.instantiate(); Pkg.installed()["'$PKG_SRC_NAME'"] |> println; end') |
75 | | - export PKG_SRC_VERSION |
76 | | - # |
77 | | - julia -e 'using Pkg; |
78 | | - PKG, TAG, VERSION, PKG_SRC_VERSION = ENV["PKG"], ENV["TAG"], ENV["VERSION"], ENV["PKG_SRC_VERSION"] |
79 | | - joburl = joinpath(ENV["GITHUB_SERVER_URL"], ENV["GITHUB_REPOSITORY"], "actions/runs", ENV["GITHUB_RUN_ID"]) |
80 | | - open("../pr/$PKG-$VERSION", "w") do io |
81 | | - try |
82 | | - TAG == "no_tag" && error("Not tag for $VERSION") |
83 | | - pkg"activate docs"; |
84 | | - pkg"instantiate"; |
85 | | - pkg"status"; |
86 | | - pkg"dev ../"; |
87 | | - pkg"build"; |
88 | | - include("docs/make.jl"); |
89 | | -
|
90 | | - print(io, "[]($joburl) compat: v", PKG_SRC_VERSION); |
91 | | - catch e |
92 | | - @error e; |
93 | | - print(io, "[]($joburl) compat: v", PKG_SRC_VERSION); |
94 | | - end; |
95 | | - end' |
96 | | -
|
97 | | - - uses: actions/upload-artifact@v3 |
98 | | - with: |
99 | | - name: pr |
100 | | - path: pr/ |
101 | | - |
102 | | - upload: |
103 | | - needs: break |
104 | | - runs-on: ubuntu-latest |
105 | | - steps: |
106 | | - - uses: actions/checkout@v3 |
107 | | - |
108 | | - - uses: actions/download-artifact@v3 |
109 | | - with: |
110 | | - name: pr |
111 | | - path: pr/ |
112 | | - |
113 | | - - run: ls |
114 | | - - run: | |
115 | | - cd pr |
116 | | - echo "Breakage test results" > MSG |
117 | | - echo "Date: $(TZ=UTC-2 date '+%Y-%m-%d %H:%M:%S')" >> MSG |
118 | | - echo "| Application name | latest | stable |" >> MSG |
119 | | - echo "|--|--|--|" >> MSG |
120 | | - count=0 |
121 | | - for file in * |
122 | | - do |
123 | | - [ "$file" == "NR" ] && continue |
124 | | - [ "$file" == "MSG" ] && continue |
125 | | - if [ $count == "0" ]; then |
126 | | - name=$(echo $file | sed 's|\(.*\)-.*|\1|') |
127 | | - echo -n "| $name | " |
128 | | - else |
129 | | - echo -n "| " |
130 | | - fi |
131 | | - cat $file |
132 | | - if [ $count == "0" ]; then |
133 | | - echo -n " " |
134 | | - count=1 |
135 | | - else |
136 | | - echo " |" |
137 | | - count=0 |
138 | | - fi |
139 | | - done >> MSG |
140 | | -
|
141 | | - - uses: actions/upload-artifact@v3 |
142 | | - with: |
143 | | - name: pr |
144 | | - path: pr/ |
| 18 | + include: |
| 19 | + - pkgpath: control-toolbox |
| 20 | + uses: control-toolbox/CTActions/.github/workflows/breakage-application..yml@main |
| 21 | + with: |
| 22 | + pkgname: ${{ matrix.pkgname }} |
| 23 | + pkgpath: ${{ matrix.pkgpath }} |
| 24 | + pkgversion: ${{ matrix.pkgversion }} |
0 commit comments