Regenerate manual #24
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: deploy | |
on: | |
push: | |
tags: | |
- 'v*.*.*' | |
permissions: | |
actions: read | |
contents: write | |
jobs: | |
deploy: | |
name: Deploy release | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
# Prevent job from running on forks | |
if: ${{ !github.event.repository.fork }} | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
- x86_64-unknown-linux-musl | |
- aarch64-unknown-linux-gnu | |
- aarch64-unknown-linux-musl | |
- x86_64-pc-windows-msvc | |
- i686-pc-windows-msvc | |
- x86_64-apple-darwin | |
- aarch64-apple-darwin | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v4 | |
- name: Get the Oxipng version | |
id: oxipngMeta | |
run: echo "version=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name == "oxipng").version')" | |
>> "$GITHUB_OUTPUT" | |
- name: Retrieve ${{ matrix.target }} binary | |
uses: dawidd6/action-download-artifact@v3 | |
with: | |
workflow: oxipng.yml | |
commit: ${{ env.GITHUB_SHA }} | |
name: Oxipng binary (${{ matrix.target }}) | |
path: target | |
- name: Generate up to date manual | |
run: scripts/manual.sh | |
- name: Build archives | |
working-directory: target | |
run: | | |
ARCHIVE_NAME="oxipng-${{ steps.oxipngMeta.outputs.version }}-${{ matrix.target }}" | |
mkdir "$ARCHIVE_NAME" | |
cp ../CHANGELOG.md ../README.md ../MANUAL.txt "$ARCHIVE_NAME" | |
case '${{ matrix.target }}' in | |
*-windows-*) | |
cp ../LICENSE "$ARCHIVE_NAME/LICENSE.txt" | |
cp oxipng.exe "$ARCHIVE_NAME" | |
zip "${ARCHIVE_NAME}.zip" "$ARCHIVE_NAME"/*;; | |
*) | |
cp ../LICENSE "$ARCHIVE_NAME" | |
cp oxipng "$ARCHIVE_NAME" | |
# Execute permissions are not stored in artifact files, | |
# so make the binary world-executable to meet user | |
# expectations set by preceding releases. | |
# Related issue: | |
# https://github.com/shssoichiro/oxipng/issues/575 | |
chmod ugo+x "$ARCHIVE_NAME"/oxipng | |
tar -vczf "${ARCHIVE_NAME}.tar.gz" "$ARCHIVE_NAME"/*;; | |
esac | |
- name: Install QEMU and AArch64 cross compiler | |
if: matrix.target == 'aarch64-unknown-linux-gnu' | |
run: | | |
sudo apt-get -yq update | |
# The shared libc AArch64 libraries are needed for cargo deb below | |
# to be able to infer package requirements with dpkg-shlibdeps | |
# properly | |
sudo apt-get -yq install libc6-arm64-cross libgcc-s1-arm64-cross | |
- name: Build deb archives | |
if: endsWith(matrix.target, '-linux-gnu') | |
run: | | |
mkdir -p "target/${{ matrix.target }}/release" | |
mv target/oxipng "target/${{ matrix.target }}/release" | |
mv target/debug/assets "target/${{ matrix.target }}/release" | |
cargo install --locked cargo-deb | |
cargo deb --target "${{ matrix.target }}" --no-build --no-strip | |
- name: Create release notes | |
run: tail -n +3 CHANGELOG.md | sed -e '/^$/,$d' > RELEASE_NOTES.txt | |
- name: Create release | |
uses: softprops/action-gh-release@v2 | |
with: | |
name: v${{ steps.oxipngMeta.outputs.version }} | |
body_path: RELEASE_NOTES.txt | |
files: | | |
target/*.zip | |
target/*.tar.gz | |
target/${{ matrix.target }}/debian/*.deb |