name: deploy
on:
push:
tags:
- 'v*.*.*'
jobs:
windows-binaries:
strategy:
matrix:
conf:
- msvc
- gnu
include:
- conf: msvc
toolchain: stable
- conf: gnu
toolchain: stable-x86_64-pc-windows-gnu
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Install stable
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.toolchain }}
override: true
- name: Build cargo-c
run: |
cargo build --release
- name: Strip gnu binaries
if: matrix.conf == 'gnu'
run: |
strip "target\release\cargo-cbuild.exe" `
"target\release\cargo-cinstall.exe"
- name: Create zip
run: |
7z a cargo-c-windows-${{ matrix.conf }}.zip `
"target\release\cargo-cbuild.exe" `
"target\release\cargo-cinstall.exe"
- name: Upload binaries
uses: actions/upload-artifact@v2
with:
name: cargo-c-windows-${{ matrix.conf }}-binaries
path: cargo-c-windows-${{ matrix.conf }}.zip
linux-binaries:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install musl-tools
run: |
sudo apt-get install musl-tools
- name: Install Rust stable and musl target
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: x86_64-unknown-linux-musl
override: true
- name: Build openssl for musl
run: |
OPENSSL_BIN=target/x86_64-unknown-linux-musl/release/build
git clone --depth 1 https://github.com/sfackler/rust-openssl
cd rust-openssl/openssl-sys
cargo build --target x86_64-unknown-linux-musl \
--release \
--features=vendored
mv ../$OPENSSL_BIN/openssl-sys-*/out/openssl-build/install/* \
$GITHUB_WORKSPACE
- name: Build cargo-c
run: |
export OPENSSL_LIB_DIR=$GITHUB_WORKSPACE/lib
export OPENSSL_INCLUDE_DIR=$GITHUB_WORKSPACE/include
cargo build --target x86_64-unknown-linux-musl --release
- name: Create zip
run: |
cd target/x86_64-unknown-linux-musl/release
strip cargo-cbuild cargo-cinstall
tar -czvf $GITHUB_WORKSPACE/cargo-c-linux.tar.gz \
cargo-cbuild \
cargo-cinstall
- name: Upload binaries
uses: actions/upload-artifact@v2
with:
name: cargo-c-linux-binaries
path: cargo-c-linux.tar.gz
macos-binaries:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Install stable
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Build cargo-c
run: |
cargo build --release
- name: Create zip
run: |
cd target/release
strip cargo-cbuild cargo-cinstall
zip $GITHUB_WORKSPACE/cargo-c-macos.zip \
cargo-cbuild \
cargo-cinstall
- name: Upload binaries
uses: actions/upload-artifact@v2
with:
name: cargo-c-macos-binaries
path: cargo-c-macos.zip
deploy:
needs: [windows-binaries, linux-binaries, macos-binaries]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Download zip files
uses: actions/download-artifact@v2
- name: Create Cargo.lock
run: |
cargo update
- name: Create a release
uses: softprops/action-gh-release@v1
with:
files: |
Cargo.lock
cargo-c-linux-binaries/cargo-c-linux.tar.gz
cargo-c-macos-binaries/cargo-c-macos.zip
cargo-c-windows-msvc-binaries/cargo-c-windows-msvc.zip
cargo-c-windows-gnu-binaries/cargo-c-windows-gnu.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}