on master help sign in
CICD: Build: Use package-specific staging dir
0e5ea9cMartin Nordholts
.github/workflows/CICD.yml+19−12
@@ -2,6 +2,7 @@ name: CICD
2
2
3env:
3env:
4 MIN_SUPPORTED_RUST_VERSION: "1.42.0"
4 MIN_SUPPORTED_RUST_VERSION: "1.42.0"
5+ CICD_INTERMEDIATES_DIR: "_cicd-intermediates"
5
6
6on: [push, pull_request]
7on: [push, pull_request]
7
8
@@ -113,9 +114,6 @@ jobs:
113 id: vars
114 id: vars
114 shell: bash
115 shell: bash
115 run: |
116 run: |
116− # staging directory
117− STAGING='_staging'
118− echo ::set-output name=STAGING::${STAGING}
119 unset IS_RELEASE ; if [[ $GITHUB_REF =~ ^refs/tags/v[0-9].* ]]; then IS_RELEASE='true' ; fi
117 unset IS_RELEASE ; if [[ $GITHUB_REF =~ ^refs/tags/v[0-9].* ]]; then IS_RELEASE='true' ; fi
120 echo ::set-output name=IS_RELEASE::${IS_RELEASE}
118 echo ::set-output name=IS_RELEASE::${IS_RELEASE}
121 # target-specific options
119 # target-specific options
@@ -164,7 +162,7 @@ jobs:
164 esac;
162 esac;
165
163
166 # Setup paths
164 # Setup paths
167− BIN_DIR="_cicd-intermediates/stripped-release-bin/"
165+ BIN_DIR="${{ env.CICD_INTERMEDIATES_DIR }}/stripped-release-bin/"
168 mkdir -p "${BIN_DIR}"
166 mkdir -p "${BIN_DIR}"
169 BIN_NAME="${{ env.PROJECT_NAME }}${EXE_suffix}"
167 BIN_NAME="${{ env.PROJECT_NAME }}${EXE_suffix}"
170 BIN_PATH="${BIN_DIR}/${BIN_NAME}"
168 BIN_PATH="${BIN_DIR}/${BIN_NAME}"
@@ -231,7 +229,8 @@ jobs:
231 PKG_NAME=${PKG_BASENAME}${PKG_suffix}
229 PKG_NAME=${PKG_BASENAME}${PKG_suffix}
232 echo ::set-output name=PKG_NAME::${PKG_NAME}
230 echo ::set-output name=PKG_NAME::${PKG_NAME}
233
231
232+ PKG_STAGING="${{ env.CICD_INTERMEDIATES_DIR }}/package"
234− ARCHIVE_DIR="${{ steps.vars.outputs.STAGING }}/${PKG_BASENAME}/"
233+ ARCHIVE_DIR="${PKG_STAGING}/${PKG_BASENAME}/"
235 mkdir -p "${ARCHIVE_DIR}"
234 mkdir -p "${ARCHIVE_DIR}"
236 mkdir -p "${ARCHIVE_DIR}/autocomplete"
235 mkdir -p "${ARCHIVE_DIR}/autocomplete"
237
236
@@ -249,19 +248,23 @@ jobs:
249 cp 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/bat.zsh "$ARCHIVE_DIR/autocomplete/${{ env.PROJECT_NAME }}.zsh"
248 cp 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/bat.zsh "$ARCHIVE_DIR/autocomplete/${{ env.PROJECT_NAME }}.zsh"
250
249
251 # base compressed package
250 # base compressed package
252− pushd '${{ steps.vars.outputs.STAGING }}/' >/dev/null
251+ pushd "${PKG_STAGING}/" >/dev/null
253 case ${{ matrix.job.target }} in
252 case ${{ matrix.job.target }} in
254 *-pc-windows-*) 7z -y a "${PKG_NAME}" "${PKG_BASENAME}"/* | tail -2 ;;
253 *-pc-windows-*) 7z -y a "${PKG_NAME}" "${PKG_BASENAME}"/* | tail -2 ;;
255 *) tar czf "${PKG_NAME}" "${PKG_BASENAME}"/* ;;
254 *) tar czf "${PKG_NAME}" "${PKG_BASENAME}"/* ;;
256 esac;
255 esac;
257 popd >/dev/null
256 popd >/dev/null
257+
258+ # Let subsequent steps know where to find the compressed package
259+ echo ::set-output name=PKG_PATH::"${PKG_STAGING}/${PKG_NAME}"
258 - name: Debian package
260 - name: Debian package
259 id: debian-package
261 id: debian-package
260 shell: bash
262 shell: bash
261 if: startsWith(matrix.job.os, 'ubuntu')
263 if: startsWith(matrix.job.os, 'ubuntu')
262 run: |
264 run: |
263 COPYRIGHT_YEARS="2018 - "$(date "+%Y")
265 COPYRIGHT_YEARS="2018 - "$(date "+%Y")
266+ DPKG_STAGING="${{ env.CICD_INTERMEDIATES_DIR }}/debian-package"
264− DPKG_DIR="${{ steps.vars.outputs.STAGING }}/dpkg"
267+ DPKG_DIR="${DPKG_STAGING}/dpkg"
265 mkdir -p "${DPKG_DIR}"
268 mkdir -p "${DPKG_DIR}"
266
269
267 DPKG_BASENAME=${PROJECT_NAME}
270 DPKG_BASENAME=${PROJECT_NAME}
@@ -356,26 +359,30 @@ jobs:
356 A cat(1) clone with syntax highlighting and Git integration.
359 A cat(1) clone with syntax highlighting and Git integration.
357 EOF
360 EOF
358
361
362+ DPKG_PATH="${DPKG_STAGING}/${DPKG_NAME}"
363+ echo ::set-output name=DPKG_PATH::${DPKG_PATH}
364+
359 # build dpkg
365 # build dpkg
360− fakeroot dpkg-deb --build "${DPKG_DIR}" "${{ steps.vars.outputs.STAGING }}/${DPKG_NAME}"
366+ fakeroot dpkg-deb --build "${DPKG_DIR}" "${DPKG_PATH}"
367+
361 - name: Upload package artifact
368 - name: Upload package artifact
362 uses: actions/upload-artifact@master
369 uses: actions/upload-artifact@master
363 with:
370 with:
364 name: ${{ steps.package.outputs.PKG_NAME }}
371 name: ${{ steps.package.outputs.PKG_NAME }}
365− path: ${{ steps.vars.outputs.STAGING }}/${{ steps.package.outputs.PKG_NAME }}
372+ path: ${{ steps.package.outputs.PKG_PATH }}
366 - name: Upload Debian package artifact
373 - name: Upload Debian package artifact
367 uses: actions/upload-artifact@master
374 uses: actions/upload-artifact@master
368 if: steps.debian-package.outputs.DPKG_NAME
375 if: steps.debian-package.outputs.DPKG_NAME
369 with:
376 with:
370 name: ${{ steps.debian-package.outputs.DPKG_NAME }}
377 name: ${{ steps.debian-package.outputs.DPKG_NAME }}
371− path: ${{ steps.vars.outputs.STAGING }}/${{ steps.debian-package.outputs.DPKG_NAME }}
378+ path: ${{ steps.debian-package.outputs.DPKG_PATH }}
372 - name: Publish archives and packages
379 - name: Publish archives and packages
373 uses: softprops/action-gh-release@v1
380 uses: softprops/action-gh-release@v1
374 if: steps.vars.outputs.IS_RELEASE
381 if: steps.vars.outputs.IS_RELEASE
375 with:
382 with:
376 files: |
383 files: |
377− ${{ steps.vars.outputs.STAGING }}/${{ steps.package.outputs.PKG_NAME }}
384+ ${{ steps.package.outputs.PKG_PATH }}
378− ${{ steps.vars.outputs.STAGING }}/${{ steps.debian-package.outputs.DPKG_NAME }}
385+ ${{ steps.debian-package.outputs.DPKG_PATH }}
379 env:
386 env:
380 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
387 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
381
388