Skip to content

release

release #43

Workflow file for this run

name: release
on: workflow_dispatch
jobs:
linux:
runs-on: ubuntu-latest
container:
image: messense/rust-musl-cross:aarch64-musl
steps:
- uses: actions/checkout@v3
- name: Install OpenSSL
run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config
- name: Set OpenSSL Environment Variables
run: |
echo "OPENSSL_DIR=/usr" >> $GITHUB_ENV
echo "OPENSSL_LIB_DIR=/usr/lib/aarch64-linux-gnu" >> $GITHUB_ENV
echo "OPENSSL_INCLUDE_DIR=/usr/include" >> $GITHUB_ENV
echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV
- name: Verify OpenSSL Installation and Env Vars
run: |
echo "OPENSSL_DIR=$OPENSSL_DIR"
echo "OPENSSL_LIB_DIR=$OPENSSL_LIB_DIR"
echo "OPENSSL_INCLUDE_DIR=$OPENSSL_INCLUDE_DIR"
echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH"
openssl version
pkg-config --libs --cflags openssl
- name: Cleanup dist directory
run: rm -rf dist/
- name: Install maturin
run: pip install maturin
- name: Install Rust target for ARM64
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: aarch64-unknown-linux-gnu
override: true
- name: Install cross-compiling tools for ARM64
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
sudo apt-get install musl-tools
- name: Set Environment Variables for ARM64 build
run: |
echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
- name: Build arm64 Wheels
run: maturin build --release --out dist/arm64 --find-interpreter --target aarch64-unknown-linux-gnu
env:
CARGO_TERM_COLOR: always
CC: aarch64-linux-gnu-gcc
OPENSSL_DIR: /usr
- name: Build amd64 Wheels
run: maturin build --release --out dist/amd64 --find-interpreter --target x86_64-unknown-linux-gnu
env:
CARGO_TERM_COLOR: always
- name: Upload wheels
uses: actions/upload-artifact@v2
with:
name: wheels-linux
path: dist/
# windows:
# runs-on: windows-latest
# steps:
# - uses: actions/checkout@v3
# - name: Install OpenSSL
# run: choco install openssl
# - name: Build and Prepare Wheels
# uses: messense/maturin-action@v1
# with:
# command: build
# args: --release -o dist --find-interpreter
# - name: List built wheels
# run: ls dist/
# - name: Upload wheels
# uses: actions/upload-artifact@v2
# with:
# name: wheels-windows
# path: dist
# macos:
# runs-on: macos-latest
# steps:
# - uses: actions/checkout@v3
# - name: Install OpenSSL
# run: brew install openssl
# - name: Build and Prepare Wheels
# uses: messense/maturin-action@v1
# with:
# command: build
# args: --release -o dist --universal2 --find-interpreter
# - name: List built wheels
# run: ls dist/
# - name: Upload wheels
# uses: actions/upload-artifact@v2
# with:
# name: wheels-macos
# path: dist
release:
name: Release
runs-on: ubuntu-latest
needs: [ linux]
steps:
- name: Download all wheels (Linux)
uses: actions/download-artifact@v2
with:
name: wheels-linux
- name: Download all wheels (Windows)
uses: actions/download-artifact@v2
with:
name: wheels-windows
- name: Download all wheels (macOS)
uses: actions/download-artifact@v2
with:
name: wheels-macos
- name: List all downloaded wheels
run: ls
- name: Publish to PyPI
uses: messense/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --skip-existing *