Build deltachat-rpc-server binaries #87
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
# GitHub Actions workflow | |
# to build `deltachat-rpc-server` binaries | |
# and upload them to the release. | |
# | |
# The workflow is automatically triggered on releases. | |
# It can also be triggered manually | |
# to produce binary artifacts for testing. | |
name: Build deltachat-rpc-server binaries | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
workflow_dispatch: | |
release: | |
types: [published] | |
jobs: | |
# Build a version statically linked against musl libc | |
# to avoid problems with glibc version incompatibility. | |
build_linux: | |
name: Cross-compile deltachat-rpc-server for x86_64, i686, aarch64 and armv7 Linux | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install ziglang | |
run: pip install wheel ziglang==0.11.0 | |
- name: Build deltachat-rpc-server binaries | |
run: sh scripts/zig-rpc-server.sh | |
- name: Upload dist directory with Linux binaries | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux | |
path: dist/ | |
if-no-files-found: error | |
build_windows: | |
name: Build deltachat-rpc-server for Windows | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: windows-latest | |
artifact: win32.exe | |
path: deltachat-rpc-server.exe | |
target: i686-pc-windows-msvc | |
- os: windows-latest | |
artifact: win64.exe | |
path: deltachat-rpc-server.exe | |
target: x86_64-pc-windows-msvc | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup rust target | |
run: rustup target add ${{ matrix.target }} | |
- name: Build | |
run: cargo build --release --package deltachat-rpc-server --target ${{ matrix.target }} --features vendored | |
- name: Upload binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: deltachat-rpc-server-${{ matrix.artifact }} | |
path: target/${{ matrix.target}}/release/${{ matrix.path }} | |
if-no-files-found: error | |
build_macos: | |
name: Build deltachat-rpc-server for macOS | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: x86_64 | |
- arch: aarch64 | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup rust target | |
run: rustup target add ${{ matrix.arch }}-apple-darwin | |
- name: Build | |
run: cargo build --release --package deltachat-rpc-server --target ${{ matrix.arch }}-apple-darwin --features vendored | |
- name: Upload binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: deltachat-rpc-server-${{ matrix.arch }}-macos | |
path: target/${{ matrix.arch }}-apple-darwin/release/deltachat-rpc-server | |
if-no-files-found: error | |
publish: | |
name: Build wheels and upload binaries to the release | |
needs: ["build_linux", "build_windows", "build_macos"] | |
permissions: | |
contents: write | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Download Linux binaries | |
uses: actions/download-artifact@v3 | |
with: | |
name: linux | |
path: dist/ | |
- name: Download win32 binary | |
uses: actions/download-artifact@v3 | |
with: | |
name: deltachat-rpc-server-win32.exe | |
path: deltachat-rpc-server-win32.exe.d | |
- name: Download win64 binary | |
uses: actions/download-artifact@v3 | |
with: | |
name: deltachat-rpc-server-win64.exe | |
path: deltachat-rpc-server-win64.exe.d | |
- name: Download macOS binary for x86_64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: deltachat-rpc-server-x86_64-macos | |
path: deltachat-rpc-server-x86_64-macos.d | |
- name: Download macOS binary for aarch64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: deltachat-rpc-server-aarch64-macos | |
path: deltachat-rpc-server-aarch64-macos.d | |
- name: Flatten dist/ directory | |
run: | | |
mv deltachat-rpc-server-win32.exe.d/deltachat-rpc-server.exe dist/deltachat-rpc-server-win32.exe | |
mv deltachat-rpc-server-win64.exe.d/deltachat-rpc-server.exe dist/deltachat-rpc-server-win64.exe | |
mv deltachat-rpc-server-x86_64-macos.d/deltachat-rpc-server dist/deltachat-rpc-server-x86_64-macos | |
mv deltachat-rpc-server-aarch64-macos.d/deltachat-rpc-server dist/deltachat-rpc-server-aarch64-macos | |
# Python 3.11 is needed for tomllib used in scripts/wheel-rpc-server.py | |
- name: Install python 3.12 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.12 | |
- name: Install wheel | |
run: pip install wheel | |
- name: Build deltachat-rpc-server Python wheels and source package | |
run: scripts/wheel-rpc-server.py | |
- name: List downloaded artifacts | |
run: ls -l dist/ | |
- name: Upload dist directory with all binaries and wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
name: dist | |
path: dist/ | |
if-no-files-found: error | |
- name: Upload binaries to the GitHub release | |
env: | |
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
run: | | |
gh release upload ${{ github.ref_name }} \ | |
--repo ${{ github.repository }} \ | |
dist/* |