Fix arm64 appimage build #461
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: Build | |
on: | |
push: | |
tags: | |
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 | |
jobs: | |
createrelease: | |
name: Create Release | |
runs-on: [ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Create Release | |
uses: ncipollo/release-action@v1 | |
with: | |
token: "${{ secrets.GITHUB_TOKEN }}" | |
name: Release ${{ github.ref_name }} | |
build-wheel: | |
name: Build wheel | |
needs: createrelease | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Build SDist and wheel | |
run: pipx run build | |
- name: Test SDist | |
run: pip install dist/*.tar.gz | |
- uses: actions/upload-artifact@v4 | |
with: | |
path: dist/* | |
build-binary: | |
name: Build packages | |
needs: createrelease | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: windows-2019 | |
TARGET: windows | |
CMD_BUILD: | | |
python compile.py | |
move sticker-convert.dist sticker-convert | |
Compress-Archive -Path sticker-convert -DestinationPath sticker-convert-windows-x86_64.zip | |
dotnet tool install --global wix --version 4.0.4 | |
wix extension add WixToolset.UI.wixext/4.0.4 | |
python .\msicreator\createmsi.py msicreator.json | |
move *.msi sticker-convert-windows-x86_64.msi | |
OUT_FILE_NAME: | | |
./sticker-convert-windows-x86_64.zip | |
./sticker-convert-windows-x86_64.msi | |
- os: macos-14 | |
TARGET: macos-x86_64 | |
CMD_BUILD: | | |
SC_COMPILE_ARCH=x86_64 python ./compile.py | |
cp ./scripts/hold_control_and_click_open_me_first.command ./ | |
zip -r9 sticker-convert-macos-x86_64.zip sticker-convert.app hold_control_and_click_open_me_first.command | |
OUT_FILE_NAME: ./sticker-convert-macos-x86_64.zip | |
- os: macos-14 | |
TARGET: macos-arm64 | |
CMD_BUILD: | | |
SC_COMPILE_ARCH=arm64 python ./compile.py | |
cp ./scripts/hold_control_and_click_open_me_first.command ./ | |
zip -r9 sticker-convert-macos-arm64.zip sticker-convert.app hold_control_and_click_open_me_first.command | |
OUT_FILE_NAME: ./sticker-convert-macos-arm64.zip | |
- os: ubuntu-20.04 | |
TARGET: linux-x86_64 | |
CMD_BUILD: | | |
sudo apt install -y libpng-dev libxft-dev libfontconfig1-dev libfreetype6-dev | |
wget -O appimage-builder https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage | |
wget -O appimagetool https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage | |
chmod +x ./appimage-builder | |
chmod +x ./appimagetool | |
# Creating appimage directly with appimage-builder result in xz compression | |
# That would be not possible to be verified by https://appimage.github.io/apps/ | |
# Due to https://github.com/AppImage/appimage.github.io/blob/master/code/worker.sh | |
# runtime-fuse2-x86_64 unable to handle xz compression | |
./appimage-builder --skip-appimage --recipe AppImageBuilder-x86_64.yml | |
# Add .desktop comment | |
sed -i 's/Comment=/Comment=Convert (animated) stickers between WhatsApp, Telegram, Signal, Line, Kakao, Viber, iMessage/g' ./AppDir/*.desktop | |
# Add appdata.xml | |
mkdir -p AppDir/usr/share/metainfo | |
cp ./sticker-convert.appdata.xml AppDir/usr/share/metainfo | |
# Bundling into appimage | |
ARCH=x86_64 ./appimagetool ./AppDir | |
chmod +x sticker-convert-x86_64.AppImage | |
OUT_FILE_NAME: ./sticker-convert-x86_64.AppImage | |
- os: ubuntu-20.04 | |
TARGET: linux-arm64 | |
CMD_BUILD: | | |
sudo apt install -y libpng-dev libxft-dev libfontconfig1-dev libfreetype6-dev | |
wget -O appimage-builder https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage | |
wget -O appimagetool https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage | |
wget https://github.com/AppImage/AppImageKit/releases/download/13/runtime-aarch64 | |
chmod +x ./appimage-builder | |
chmod +x ./appimagetool | |
# Creating appimage directly with appimage-builder result in xz compression | |
# That would be not possible to be verified by https://appimage.github.io/apps/ | |
# Due to https://github.com/AppImage/appimage.github.io/blob/master/code/worker.sh | |
# runtime-fuse2-x86_64 unable to handle xz compression | |
./appimage-builder --skip-appimage --recipe AppImageBuilder-arm64.yml | |
# Add .desktop comment | |
sed -i 's/Comment=/Comment=Convert (animated) stickers between WhatsApp, Telegram, Signal, Line, Kakao, Viber, iMessage/g' ./AppDir/*.desktop | |
# Add appdata.xml | |
mkdir -p AppDir/usr/share/metainfo | |
cp ./sticker-convert.appdata.xml AppDir/usr/share/metainfo | |
# Bundling into appimage | |
ARCH=arm_aarch64 ./appimagetool --runtime-file ./runtime-aarch64 ./AppDir | |
chmod +x sticker-convert-aarch64.AppImage | |
OUT_FILE_NAME: ./sticker-convert-aarch64.AppImage | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
allow-prereleases: true | |
- name: Build for ${{matrix.TARGET}} | |
run: ${{matrix.CMD_BUILD}} | |
- name: Upload Release Asset | |
id: upload-release-asset | |
uses: softprops/action-gh-release@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
files: ${{ matrix.OUT_FILE_NAME }} | |
build-docker: | |
name: Build Docker image and push | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Extract metadata (tags, labels) for Docker (min-cli) | |
id: meta_min_cli | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ github.repository }} | |
ghcr.io/${{ github.repository }} | |
flavor: | | |
suffix=-min-cli,onlatest=true | |
- name: Extract metadata (tags, labels) for Docker (min-gui) | |
id: meta_min_gui | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ github.repository }} | |
ghcr.io/${{ github.repository }} | |
flavor: | | |
suffix=-min-gui,onlatest=true | |
- name: Extract metadata (tags, labels) for Docker (full) | |
id: meta_full | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ github.repository }} | |
ghcr.io/${{ github.repository }} | |
- name: Build and push Docker image (min-cli) | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: true | |
tags: ${{ steps.meta_min_cli.outputs.tags }} | |
labels: ${{ steps.meta_min_cli.outputs.labels }} | |
target: min-cli | |
- name: Build and push Docker image (min-gui) | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: true | |
tags: ${{ steps.meta_min_gui.outputs.tags }} | |
labels: ${{ steps.meta_min_gui.outputs.labels }} | |
target: min-gui | |
- name: Build and push Docker image (full) | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: true | |
tags: ${{ steps.meta_full.outputs.tags }} | |
labels: ${{ steps.meta_full.outputs.labels }} | |
target: full | |
upload-pypi: | |
name: Upload to pypi | |
needs: [build-wheel, build-binary] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
# unpacks default artifact into dist/ | |
# if `name: artifact` is omitted, the action will create extra parent dir | |
name: artifact | |
path: dist | |
- uses: pypa/[email protected] | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} |