|
8 | 8 | branches:
|
9 | 9 | - master
|
10 | 10 |
|
| 11 | +env: |
| 12 | + CEMU_PATH: ${{github.workspace}}/CEmu |
| 13 | + FASMG_DOMAIN: https://flatassembler.net |
| 14 | + HOST_DOMAIN: https://jacobly.com |
| 15 | + INSTALL_PATH: ${{github.workspace}}/CEdev |
| 16 | + ROM_FILE: 84pce_515_53.rom |
| 17 | + SECRETS_PATH: ${{github.workspace}}/secrets |
| 18 | + TOOLCHAIN_PATH: ${{github.workspace}}/toolchain |
11 | 19 | jobs:
|
12 | 20 | build:
|
13 | 21 | strategy:
|
14 | 22 | fail-fast: false
|
15 | 23 | matrix:
|
16 |
| - runs-on: [ubuntu-latest, macos-latest, windows-latest] |
17 |
| - runs-on: ${{matrix.runs-on}} |
| 24 | + runs-on: [ubuntu, macos, windows] |
| 25 | + include: |
| 26 | + - nul: /dev/null |
| 27 | + - runs-on: macos |
| 28 | + fasmg: /source/macos/x64 |
| 29 | + - runs-on: windows |
| 30 | + env: "env:" |
| 31 | + exe: .exe |
| 32 | + nul: nul |
| 33 | + runs-on: ${{matrix.runs-on}}-latest |
18 | 34 | steps:
|
19 |
| - - name: Bootstrap Build Environment |
20 |
| - if: runner.os == 'Windows' |
21 |
| - run: "cmake -E echo >> $env:GITHUB_ENV ENV=env:" |
22 |
| - - name: Prepare Build Environment |
23 |
| - run: cmake -E echo >> $${{env.ENV}}GITHUB_PATH ${{github.workspace}}/CEdev/bin |
24 |
| - - name: Prepare Build Environment |
25 |
| - if: runner.os == 'macOS' |
26 |
| - run: cmake -E echo >> $${{env.ENV}}GITHUB_ENV FASMG_PATH=/source/macos/x64 |
27 | 35 | - name: Prepare Build Environment
|
28 |
| - if: runner.os != 'Windows' |
29 |
| - run: cmake -E echo >> $${{env.ENV}}GITHUB_ENV NUL=/dev/null |
30 |
| - - name: Prepare Build Environment |
31 |
| - if: runner.os == 'Windows' |
32 |
| - run: | |
33 |
| - cmake -E echo >> $${{env.ENV}}GITHUB_ENV NUL=nul |
34 |
| - cmake -E echo >> $${{env.ENV}}GITHUB_ENV EXE=.exe |
| 36 | + run: cmake -E echo >> $${{matrix.env}}GITHUB_PATH ${{env.INSTALL_PATH}}/bin |
35 | 37 |
|
36 | 38 | - name: Download ez80-clang
|
37 | 39 | id: ez80-clang
|
38 | 40 | uses: carlosperate/download-file-action@v1.0.3
|
39 | 41 | with:
|
40 |
| - file-url: https://jacobly.com/a/llvm/ez80-clang${{env.EXE}}-${{runner.os}}Release.zip |
| 42 | + file-url: ${{env.HOST_DOMAIN}}/a/llvm/ez80-clang${{matrix.exe}}-${{runner.os}}Release.zip |
41 | 43 | - name: Extract ez80-clang
|
42 | 44 | uses: DuckSoft/extract-7z-action@v1.0
|
43 | 45 | with:
|
44 | 46 | pathSource: ${{steps.ez80-clang.outputs.file-path}}
|
45 |
| - pathTarget: CEdev/bin |
| 47 | + pathTarget: ${{env.INSTALL_PATH}}/bin |
46 | 48 |
|
47 | 49 | - name: Download Fasmg Download Page
|
48 |
| - id: flatassembler-download |
| 50 | + id: fasmg-download |
49 | 51 | uses: carlosperate/download-file-action@v1.0.3
|
50 | 52 | with:
|
51 |
| - file-url: https://flatassembler.net/download.php |
| 53 | + file-url: ${{env.FASMG_DOMAIN}}/download.php |
52 | 54 | - name: Parse Fasmg Download Page
|
53 | 55 | id: fasmg-url
|
54 | 56 | uses: QwerMike/xpath-action@v1
|
55 | 57 | with:
|
56 |
| - filename: ${{steps.flatassembler-download.outputs.file-path}} |
| 58 | + filename: ${{steps.fasmg-download.outputs.file-path}} |
57 | 59 | expression: //a[starts-with(text(),"flat assembler g ")]/@href
|
58 | 60 | - name: Extract Fasmg Url
|
59 |
| - run: cmake -E echo >> $${{env.ENV}}GITHUB_ENV ${{steps.fasmg-url.outputs.result}} |
| 61 | + run: cmake -E echo >> $${{matrix.env}}GITHUB_ENV ${{steps.fasmg-url.outputs.result}} |
60 | 62 | - name: Download Fasmg
|
61 | 63 | id: fasmg
|
62 | 64 | uses: carlosperate/download-file-action@v1.0.3
|
63 | 65 | with:
|
64 |
| - file-url: https://flatassembler.net/${{env.href}} |
| 66 | + file-url: ${{env.FASMG_DOMAIN}}/${{env.href}} |
65 | 67 | - name: Extract Fasmg
|
66 | 68 | uses: DuckSoft/extract-7z-action@v1.0
|
67 | 69 | with:
|
68 | 70 | pathSource: ${{steps.fasmg.outputs.file-path}}
|
69 |
| - pathTarget: fasmg |
| 71 | + pathTarget: ${{github.workspace}}/fasmg |
70 | 72 | - name: Setup Fasmg
|
71 |
| - run: cmake -E copy fasmg${{env.FASMG_PATH}}/fasmg${{env.EXE}} CEdev/bin |
| 73 | + run: cmake -E copy fasmg${{matrix.fasmg}}/fasmg${{matrix.exe}} ${{env.INSTALL_PATH}}/bin |
72 | 74 |
|
73 | 75 | - name: Make Binaries Executable
|
74 | 76 | if: runner.os != 'Windows'
|
75 |
| - run: chmod +x CEdev/bin/* |
| 77 | + run: chmod +x ${{env.INSTALL_PATH}}/bin/* |
76 | 78 | - name: Test Build Dependencies
|
77 | 79 | run: |
|
78 | 80 | ez80-clang --version
|
79 |
| - fasmg ${{env.NUL}} ${{env.NUL}} |
| 81 | + fasmg ${{matrix.nul}} ${{matrix.nul}} |
80 | 82 |
|
81 | 83 | - name: Checkout Toolchain
|
82 | 84 | uses: actions/checkout@v2.3.4
|
83 | 85 | with:
|
84 |
| - path: toolchain |
| 86 | + path: ${{env.TOOLCHAIN_PATH}} |
85 | 87 | submodules: recursive
|
| 88 | + persist-credentials: false |
86 | 89 | - name: Build Toolchain
|
87 |
| - run: make -j4 -C toolchain V=1 |
| 90 | + run: make -j4 -C ${{env.TOOLCHAIN_PATH}} V=1 |
88 | 91 | - name: Install Toolchain
|
89 | 92 | env:
|
90 | 93 | PREFIX: ${{github.workspace}}
|
91 |
| - run: make -j4 -C toolchain install release release-libs V=1 |
| 94 | + run: make -j4 -C ${{env.TOOLCHAIN_PATH}} install release release-libs V=1 |
92 | 95 |
|
93 | 96 | - name: Upload CEdev
|
94 | 97 | uses: actions/upload-artifact@v2
|
95 | 98 | with:
|
96 | 99 | name: CEdev-${{runner.os}}
|
97 |
| - path: CEdev |
| 100 | + path: ${{env.INSTALL_PATH}} |
98 | 101 | - name: Upload Libraries
|
99 | 102 | uses: actions/upload-artifact@v2
|
100 | 103 | with:
|
101 | 104 | name: clibs
|
102 |
| - path: toolchain/clibs.8xg |
| 105 | + path: ${{env.TOOLCHAIN_PATH}}/clibs.8xg |
103 | 106 | - name: Upload Windows Installer
|
104 | 107 | if: runner.os == 'Windows'
|
105 | 108 | uses: actions/upload-artifact@v2
|
106 | 109 | with:
|
107 | 110 | name: installer-${{runner.os}}
|
108 |
| - path: toolchain\release\CEdev${{env.EXE}} |
| 111 | + path: ${{env.TOOLCHAIN_PATH}}/release/CEdev${{matrix.exe}} |
109 | 112 |
|
110 | 113 | test:
|
111 | 114 | needs: build
|
112 |
| - if: github.event_name != 'pull_request' |
| 115 | + environment: Autotester |
113 | 116 | strategy:
|
114 | 117 | fail-fast: false
|
115 | 118 | matrix:
|
116 |
| - runs-on: [ubuntu-latest, macos-latest, windows-latest] |
117 |
| - installer: [CEdev] |
118 |
| - include: |
119 |
| - - runs-on: windows-latest |
| 119 | + runs-on: [ubuntu, macos, windows] |
| 120 | + installer: [CEdev, installer] |
| 121 | + exclude: |
| 122 | + - runs-on: ubuntu |
120 | 123 | installer: installer
|
121 |
| - runs-on: ${{matrix.runs-on}} |
| 124 | + - runs-on: macos |
| 125 | + installer: installer |
| 126 | + include: |
| 127 | + - runs-on: windows |
| 128 | + env: "env:" |
| 129 | + runs-on: ${{matrix.runs-on}}-latest |
122 | 130 | steps:
|
123 |
| - - name: Bootstrap Test Environment |
124 |
| - if: runner.os == 'Windows' |
125 |
| - run: "cmake -E echo >> $env:GITHUB_ENV ENV=env:" |
126 | 131 | - name: Prepare Test Environment
|
127 | 132 | run: |
|
128 |
| - cmake -E echo >> $${{env.ENV}}GITHUB_ENV ROM=84pce_515_53.rom |
129 |
| - cmake -E echo >> $${{env.ENV}}GITHUB_ENV CEDEV=${{github.workspace}}/CEdev |
130 |
| - cmake -E echo >> $${{env.ENV}}GITHUB_PATH ${{github.workspace}}/CEdev/bin |
131 |
| - cmake -E echo >> $${{env.ENV}}GITHUB_PATH ${{github.workspace}}/CEmu/tests/autotester |
| 133 | + cmake -E echo >> $${{matrix.env}}GITHUB_ENV CEDEV=${{env.INSTALL_PATH}} |
| 134 | + cmake -E echo >> $${{matrix.env}}GITHUB_PATH ${{env.INSTALL_PATH}}/bin |
| 135 | + cmake -E echo >> $${{matrix.env}}GITHUB_PATH ${{env.CEMU_PATH}}/tests/autotester |
132 | 136 |
|
133 | 137 | - name: Download CEdev
|
134 | 138 | uses: actions/download-artifact@v2
|
135 | 139 | with:
|
136 | 140 | name: ${{matrix.installer}}-${{runner.os}}
|
137 |
| - path: ${{env.CEDEV}} |
| 141 | + path: ${{env.INSTALL_PATH}} |
138 | 142 | - name: Install CEdev
|
139 | 143 | if: matrix.installer == 'installer'
|
140 |
| - run: ${{env.CEDEV}}/CEDev${{env.EXE}} /DIR=${{env.CEDEV}} /VERYSILENT /SUPPRESSMSGBOXES /NORESTART |
141 |
| - |
142 |
| - - name: Download Libraries |
143 |
| - uses: actions/download-artifact@v2 |
144 |
| - with: |
145 |
| - name: clibs |
| 144 | + run: ${{env.INSTALL_PATH}}/CEdev.exe /DIR=${{env.INSTALL_PATH}} /VERYSILENT /SUPPRESSMSGBOXES /NORESTART |
146 | 145 |
|
147 | 146 | - name: Make Binaries Executable
|
148 | 147 | if: runner.os != 'Windows'
|
149 |
| - run: chmod +x ${{env.CEDEV}}/bin/* |
| 148 | + run: chmod +x ${{env.INSTALL_PATH}}/bin/* |
150 | 149 | - name: Build Examples
|
151 |
| - run: make -j4 -C ${{env.CEDEV}}/examples V=1 |
| 150 | + env: |
| 151 | + CEDEV: ${{env.INSTALL_PATH}} |
| 152 | + run: make -j4 -C ${{env.INSTALL_PATH}}/examples V=1 |
152 | 153 |
|
153 | 154 | - name: Checkout CEmu
|
154 | 155 | uses: actions/checkout@v2.3.4
|
155 | 156 | with:
|
156 | 157 | repository: CE-Programming/CEmu
|
157 | 158 | ref: latest-stable
|
158 |
| - path: CEmu |
| 159 | + path: ${{env.CEMU_PATH}} |
| 160 | + persist-credentials: false |
159 | 161 | - name: Build CEmu
|
160 |
| - run: make -j4 -C CEmu/core |
| 162 | + run: make -j4 -C ${{env.CEMU_PATH}}/core |
161 | 163 | - name: Build Autotester CLI
|
162 |
| - run: make -j4 -C CEmu/tests/autotester |
| 164 | + run: make -j4 -C ${{env.CEMU_PATH}}/tests/autotester |
163 | 165 |
|
164 | 166 | - name: Download Secrets
|
165 | 167 | id: download-secrets
|
166 | 168 | uses: carlosperate/download-file-action@v1.0.3
|
167 | 169 | with:
|
168 |
| - file-url: https://jacobly.com/CE-Programming/secrets |
169 |
| - location: secrets |
| 170 | + file-url: ${{env.HOST_DOMAIN}}/CE-Programming/secrets |
| 171 | + location: ${{env.SECRETS_PATH}} |
170 | 172 | - name: Decrypt Secrets
|
171 | 173 | env:
|
172 | 174 | KEY: ${{secrets.SYMMETRIC_KEY_256}}
|
173 |
| - run: openssl enc -d -aes-256-cbc -iv d0583d991fcb6c3b05fb8eabc7421fb8 -K "$${{env.ENV}}KEY" -in ${{steps.download-secrets.outputs.file-path}} -out secrets/secrets.7z |
| 175 | + run: openssl enc -d -aes-256-cbc -iv 8b29a858b29556c72b861a70f26872cb -K "$${{matrix.env}}KEY" -in ${{steps.download-secrets.outputs.file-path}} -out ${{env.SECRETS_PATH}}/secrets.7z |
174 | 176 | - name: Extract Secrets
|
175 | 177 | uses: DuckSoft/extract-7z-action@v1.0
|
176 | 178 | with:
|
177 |
| - pathSource: secrets/secrets.7z |
178 |
| - pathTarget: secrets |
| 179 | + pathSource: ${{env.SECRETS_PATH}}/secrets.7z |
| 180 | + pathTarget: ${{env.SECRETS_PATH}} |
179 | 181 |
|
180 |
| - - name: Test examples |
| 182 | + - name: Download Libraries |
| 183 | + uses: actions/download-artifact@v2 |
| 184 | + with: |
| 185 | + name: clibs |
| 186 | + - name: Test Examples |
181 | 187 | if: runner.os != 'Windows'
|
182 | 188 | env:
|
183 | 189 | AUTOTESTER_LIBS_GROUP: ${{github.workspace}}/clibs.8xg
|
184 |
| - AUTOTESTER_ROM: ${{github.workspace}}/secrets/${{env.ROM}} |
| 190 | + AUTOTESTER_ROM: ${{env.SECRETS_PATH}}/${{env.ROM_FILE}} |
| 191 | + CEDEV: ${{env.INSTALL_PATH}} |
185 | 192 | run: |
|
186 | 193 | failed=0
|
187 |
| - find ${{env.CEDEV}}/examples -name autotest.json -print0 | while read -d '' test; do |
| 194 | + find ${{env.INSTALL_PATH}}/examples -name autotest.json -print0 | while read -d '' test; do |
188 | 195 | cmake -E echo "Launching autotester on $test"
|
189 | 196 | autotester "$test"
|
190 | 197 | cmake -E true $((failed += $?))
|
191 | 198 | done
|
192 | 199 | exit $failed
|
193 |
| - - name: Test examples |
| 200 | + - name: Test Examples |
194 | 201 | if: runner.os == 'Windows'
|
195 | 202 | env:
|
196 | 203 | AUTOTESTER_LIBS_GROUP: ${{github.workspace}}\clibs.8xg
|
197 |
| - AUTOTESTER_ROM: ${{github.workspace}}\secrets\${{env.ROM}} |
| 204 | + AUTOTESTER_ROM: ${{env.SECRETS_PATH}}\${{env.ROM_FILE}} |
| 205 | + CEDEV: ${{env.INSTALL_PATH}} |
198 | 206 | run: |
|
199 | 207 | $failed = 0
|
200 |
| - foreach ($test in get-childitem "${{env.CEDEV}}\examples" -recurse -include autotest.json) { |
| 208 | + foreach ($test in get-childitem "${{env.INSTALL_PATH}}\examples" -recurse -include autotest.json) { |
201 | 209 | cmake -E echo "Launching autotester on $test"
|
202 | 210 | autotester "$test"
|
203 | 211 | $failed += $lastexitcode
|
204 | 212 | }
|
205 |
| - Exit $failed |
| 213 | + exit $failed |
206 | 214 |
|
207 | 215 | - name: Remove Secrets
|
208 | 216 | if: always()
|
209 |
| - run: cmake -E rm -rf secrets |
| 217 | + run: cmake -E rm -rf ${{env.SECRETS_PATH}} |
210 | 218 |
|
211 | 219 | docs:
|
212 | 220 | runs-on: ubuntu-latest
|
213 | 221 | steps:
|
214 |
| - - name: Bootstrap Documentation Environment |
215 |
| - if: runner.os == 'Windows' |
216 |
| - run: "cmake -E echo >> $env:GITHUB_ENV ENV=env:" |
217 |
| - - name: Prepare Documentation Environment |
218 |
| - if: runner.os == 'Linux' |
219 |
| - run: cmake -E echo >> $${{env.ENV}}GITHUB_PATH $HOME/.local/bin |
220 |
| - |
221 | 222 | - name: Install Documentation Dependencies
|
222 | 223 | if: runner.os == 'Linux'
|
223 | 224 | run: |
|
224 | 225 | sudo apt-get install -y doxygen
|
225 | 226 | pip install sphinx==3.2.1 sphinx_rtd_theme breathe
|
| 227 | + cmake -E echo >> $${{matrix.env}}GITHUB_PATH $${{matrix.env}}HOME/.local/bin |
226 | 228 |
|
227 | 229 | - name: Checkout Toolchain
|
228 | 230 | uses: actions/checkout@v2.3.4
|
229 | 231 | with:
|
| 232 | + path: ${{env.TOOLCHAIN_PATH}} |
230 | 233 | persist-credentials: false
|
231 | 234 |
|
232 | 235 | - name: Build Website Documentation
|
233 |
| - run: | |
234 |
| - cd docs |
235 |
| - make html |
236 |
| - cd build/html |
237 |
| - touch .nojekyll |
| 236 | + run: make -C ${{env.TOOLCHAIN_PATH}}/docs html |
| 237 | + - name: Disable Jekyll |
| 238 | + run: cmake -E touch ${{env.TOOLCHAIN_PATH}}/docs/build/html/.nojekyll |
238 | 239 |
|
239 | 240 | - name: Upload Website Documentation
|
240 | 241 | if: github.ref == 'refs/heads/master'
|
241 | 242 | uses: JamesIves/github-pages-deploy-action@3.7.1
|
242 | 243 | with:
|
243 |
| - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 244 | + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} |
244 | 245 | BRANCH: gh-pages
|
245 |
| - FOLDER: docs/build/html |
| 246 | + FOLDER: ${{env.TOOLCHAIN_PATH}}/docs/build/html |
246 | 247 | CLEAN: true
|
0 commit comments