on master help sign in
CICD: Build: Move DPKG_* vars to 'Debian package' step
3dcf025Martin Nordholts
.github/workflows/CICD.yml+35−38
@@ -127,27 +127,6 @@ jobs:
127 echo ::set-output name=PKG_NAME::${PKG_NAME}
127 echo ::set-output name=PKG_NAME::${PKG_NAME}
128 unset IS_RELEASE ; if [[ $GITHUB_REF =~ ^refs/tags/v[0-9].* ]]; then IS_RELEASE='true' ; fi
128 unset IS_RELEASE ; if [[ $GITHUB_REF =~ ^refs/tags/v[0-9].* ]]; then IS_RELEASE='true' ; fi
129 echo ::set-output name=IS_RELEASE::${IS_RELEASE}
129 echo ::set-output name=IS_RELEASE::${IS_RELEASE}
130− # DPKG architecture?
131− unset DPKG_ARCH
132− case ${{ matrix.job.target }} in
133− aarch64-*-linux-*) DPKG_ARCH=arm64 ;;
134− arm-*-linux-*hf) DPKG_ARCH=armhf ;;
135− i686-*-linux-*) DPKG_ARCH=i686 ;;
136− x86_64-*-linux-*) DPKG_ARCH=amd64 ;;
137− esac;
138− echo ::set-output name=DPKG_ARCH::${DPKG_ARCH}
139− DPKG_VERSION=${PROJECT_VERSION}
140− echo ::set-output name=DPKG_VERSION::${DPKG_VERSION}
141− # DPKG base name/conflicts?
142− DPKG_BASENAME=${PROJECT_NAME}
143− DPKG_CONFLICTS=${PROJECT_NAME}-musl
144− case ${{ matrix.job.target }} in *-musl) DPKG_BASENAME=${PROJECT_NAME}-musl ; DPKG_CONFLICTS=${PROJECT_NAME} ;; esac;
145− echo ::set-output name=DPKG_BASENAME::${DPKG_BASENAME}
146− echo ::set-output name=DPKG_CONFLICTS::${DPKG_CONFLICTS}
147− # DPKG name
148− unset DPKG_NAME;
149− if [[ -n $DPKG_ARCH && -n $DPKG_VERSION ]]; then DPKG_NAME="${DPKG_BASENAME}_${DPKG_VERSION}_${DPKG_ARCH}.deb" ; fi
150− echo ::set-output name=DPKG_NAME::${DPKG_NAME}
151 # target-specific options
130 # target-specific options
152 # # * test only library unit tests and binary for arm-type targets
131 # # * test only library unit tests and binary for arm-type targets
153 unset CARGO_TEST_OPTIONS
132 unset CARGO_TEST_OPTIONS
@@ -251,13 +230,31 @@ jobs:
251 esac;
230 esac;
252 popd >/dev/null
231 popd >/dev/null
253 - name: Debian package
232 - name: Debian package
233+ id: debian-package
254 shell: bash
234 shell: bash
255− if: steps.vars.outputs.DPKG_NAME
235+ if: startsWith(matrix.job.os, 'ubuntu')
256 run: |
236 run: |
257 COPYRIGHT_YEARS="2018 - "$(date "+%Y")
237 COPYRIGHT_YEARS="2018 - "$(date "+%Y")
258 DPKG_DIR="${{ steps.vars.outputs.STAGING }}/dpkg"
238 DPKG_DIR="${{ steps.vars.outputs.STAGING }}/dpkg"
259 mkdir -p "${DPKG_DIR}"
239 mkdir -p "${DPKG_DIR}"
260
240
241+ DPKG_BASENAME=${PROJECT_NAME}
242+ DPKG_CONFLICTS=${PROJECT_NAME}-musl
243+ case ${{ matrix.job.target }} in *-musl) DPKG_BASENAME=${PROJECT_NAME}-musl ; DPKG_CONFLICTS=${PROJECT_NAME} ;; esac;
244+ DPKG_VERSION=${PROJECT_VERSION}
245+
246+ unset DPKG_ARCH
247+ case ${{ matrix.job.target }} in
248+ aarch64-*-linux-*) DPKG_ARCH=arm64 ;;
249+ arm-*-linux-*hf) DPKG_ARCH=armhf ;;
250+ i686-*-linux-*) DPKG_ARCH=i686 ;;
251+ x86_64-*-linux-*) DPKG_ARCH=amd64 ;;
252+ *) DPKG_ARCH=notset ;;
253+ esac;
254+
255+ DPKG_NAME="${DPKG_BASENAME}_${DPKG_VERSION}_${DPKG_ARCH}.deb"
256+ echo ::set-output name=DPKG_NAME::${DPKG_NAME}
257+
261 # Binary
258 # Binary
262 install -Dm755 'target/${{ matrix.job.target }}/release/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}' "${DPKG_DIR}/usr/bin/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}"
259 install -Dm755 'target/${{ matrix.job.target }}/release/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}' "${DPKG_DIR}/usr/bin/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}"
263 if [ -n "${{ steps.vars.outputs.STRIP }}" ]; then "${{ steps.vars.outputs.STRIP }}" "${DPKG_DIR}/usr/bin/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}" ; fi
260 if [ -n "${{ steps.vars.outputs.STRIP }}" ]; then "${{ steps.vars.outputs.STRIP }}" "${DPKG_DIR}/usr/bin/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}" ; fi
@@ -271,13 +268,13 @@ jobs:
271 install -Dm644 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/bat.zsh "${DPKG_DIR}/usr/share/zsh/vendor-completions/_${{ env.PROJECT_NAME }}"
268 install -Dm644 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/completions/bat.zsh "${DPKG_DIR}/usr/share/zsh/vendor-completions/_${{ env.PROJECT_NAME }}"
272
269
273 # README and LICENSE
270 # README and LICENSE
274− install -Dm644 "README.md" "${DPKG_DIR}/usr/share/doc/${{ steps.vars.outputs.DPKG_BASENAME }}/README.md"
271+ install -Dm644 "README.md" "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/README.md"
275− install -Dm644 "LICENSE-MIT" "${DPKG_DIR}/usr/share/doc/${{ steps.vars.outputs.DPKG_BASENAME }}/LICENSE-MIT"
272+ install -Dm644 "LICENSE-MIT" "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/LICENSE-MIT"
276− install -Dm644 "LICENSE-APACHE" "${DPKG_DIR}/usr/share/doc/${{ steps.vars.outputs.DPKG_BASENAME }}/LICENSE-APACHE"
273+ install -Dm644 "LICENSE-APACHE" "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/LICENSE-APACHE"
277− install -Dm644 "CHANGELOG.md" "${DPKG_DIR}/usr/share/doc/${{ steps.vars.outputs.DPKG_BASENAME }}/changelog"
274+ install -Dm644 "CHANGELOG.md" "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/changelog"
278− gzip -n --best "${DPKG_DIR}/usr/share/doc/${{ steps.vars.outputs.DPKG_BASENAME }}/changelog"
275+ gzip -n --best "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/changelog"
279
276
280− cat > "${DPKG_DIR}/usr/share/doc/${{ steps.vars.outputs.DPKG_BASENAME }}/copyright" <<EOF
277+ cat > "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/copyright" <<EOF
281 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
278 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
282 Upstream-Name: ${{ env.PROJECT_NAME }}
279 Upstream-Name: ${{ env.PROJECT_NAME }}
283 Source: ${{ env.PROJECT_HOMEPAGE }}
280 Source: ${{ env.PROJECT_HOMEPAGE }}
@@ -316,26 +313,26 @@ jobs:
316 IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
313 IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
317 DEALINGS IN THE SOFTWARE.
314 DEALINGS IN THE SOFTWARE.
318 EOF
315 EOF
319− chmod 644 "${DPKG_DIR}/usr/share/doc/${{ steps.vars.outputs.DPKG_BASENAME }}/copyright"
316+ chmod 644 "${DPKG_DIR}/usr/share/doc/${DPKG_BASENAME}/copyright"
320
317
321 # control file
318 # control file
322 mkdir -p "${DPKG_DIR}/DEBIAN"
319 mkdir -p "${DPKG_DIR}/DEBIAN"
323 cat > "${DPKG_DIR}/DEBIAN/control" <<EOF
320 cat > "${DPKG_DIR}/DEBIAN/control" <<EOF
324− Package: ${{ steps.vars.outputs.DPKG_BASENAME }}
321+ Package: ${DPKG_BASENAME}
325− Version: ${{ steps.vars.outputs.DPKG_VERSION }}
322+ Version: ${DPKG_VERSION}
326 Section: utils
323 Section: utils
327 Priority: optional
324 Priority: optional
328 Maintainer: ${{ env.PROJECT_MAINTAINER }}
325 Maintainer: ${{ env.PROJECT_MAINTAINER }}
329 Homepage: ${{ env.PROJECT_HOMEPAGE }}
326 Homepage: ${{ env.PROJECT_HOMEPAGE }}
330− Architecture: ${{ steps.vars.outputs.DPKG_ARCH }}
327+ Architecture: ${DPKG_ARCH}
331 Provides: ${{ env.PROJECT_NAME }}
328 Provides: ${{ env.PROJECT_NAME }}
332− Conflicts: ${{ steps.vars.outputs.DPKG_CONFLICTS }}
329+ Conflicts: ${DPKG_CONFLICTS}
333 Description: cat(1) clone with wings.
330 Description: cat(1) clone with wings.
334 A cat(1) clone with syntax highlighting and Git integration.
331 A cat(1) clone with syntax highlighting and Git integration.
335 EOF
332 EOF
336
333
337 # build dpkg
334 # build dpkg
338− fakeroot dpkg-deb --build "${DPKG_DIR}" "${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.DPKG_NAME }}"
335+ fakeroot dpkg-deb --build "${DPKG_DIR}" "${{ steps.vars.outputs.STAGING }}/${DPKG_NAME}"
339 - name: Upload package artifact
336 - name: Upload package artifact
340 uses: actions/upload-artifact@master
337 uses: actions/upload-artifact@master
341 with:
338 with:
@@ -343,17 +340,17 @@ jobs:
343 path: ${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.PKG_NAME }}
340 path: ${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.PKG_NAME }}
344 - name: Upload Debian package artifact
341 - name: Upload Debian package artifact
345 uses: actions/upload-artifact@master
342 uses: actions/upload-artifact@master
346− if: steps.vars.outputs.DPKG_NAME
343+ if: steps.debian-package.outputs.DPKG_NAME
347 with:
344 with:
348− name: ${{ steps.vars.outputs.DPKG_NAME }}
345+ name: ${{ steps.debian-package.outputs.DPKG_NAME }}
349− path: ${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.DPKG_NAME }}
346+ path: ${{ steps.vars.outputs.STAGING }}/${{ steps.debian-package.outputs.DPKG_NAME }}
350 - name: Publish archives and packages
347 - name: Publish archives and packages
351 uses: softprops/action-gh-release@v1
348 uses: softprops/action-gh-release@v1
352 if: steps.vars.outputs.IS_RELEASE
349 if: steps.vars.outputs.IS_RELEASE
353 with:
350 with:
354 files: |
351 files: |
355 ${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.PKG_NAME }}
352 ${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.PKG_NAME }}
356− ${{ steps.vars.outputs.STAGING }}/${{ steps.vars.outputs.DPKG_NAME }}
353+ ${{ steps.vars.outputs.STAGING }}/${{ steps.debian-package.outputs.DPKG_NAME }}
357 env:
354 env:
358 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
355 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
359
356