1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
name: deploy
on:
push:
tags:
- 'v*.*.*'
- 'pre-*.*.*'
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@v4
- name: Install stable
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.toolchain }}
- name: Build cargo-c
run: |
cargo build --profile release-strip
- name: Create zip
run: |
cd target/release-strip
7z a ../../cargo-c-windows-${{ matrix.conf }}.zip `
"cargo-capi.exe" `
"cargo-cbuild.exe" `
"cargo-cinstall.exe" `
"cargo-ctest.exe"
- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: cargo-c-windows-${{ matrix.conf }}-binaries
path: cargo-c-windows-${{ matrix.conf }}.zip
linux-binaries:
strategy:
fail-fast: false
matrix:
target:
- i686-unknown-linux-musl
- x86_64-unknown-linux-musl
- powerpc64le-unknown-linux-gnu
- aarch64-unknown-linux-musl
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Install cross
run: |
cargo install cross --git https://github.com/cross-rs/cross
- name: Build cargo-c
run: |
cross build --target ${{ matrix.target }} \
--features=vendored-openssl \
--profile release-strip
- name: Create tar
run: |
cd target/${{ matrix.target }}/release-strip
tar -czvf $GITHUB_WORKSPACE/cargo-c-${{ matrix.target }}.tar.gz \
cargo-capi \
cargo-cbuild \
cargo-cinstall \
cargo-ctest
- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: cargo-c-linux-binaries-${{ matrix.target }}
path: cargo-c-${{ matrix.target }}.tar.gz
macos-binaries:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install stable
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Build cargo-c
run: |
cargo build --features=vendored-openssl --profile release-strip
- name: Create zip
run: |
cd target/release-strip
zip $GITHUB_WORKSPACE/cargo-c-macos.zip \
cargo-capi \
cargo-cbuild \
cargo-cinstall \
cargo-ctest
- name: Upload binaries
uses: actions/upload-artifact@v4
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@v4
- name: Install stable
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Download zip files
uses: actions/download-artifact@v4
- name: Create Cargo.lock
run: |
cargo update
- name: Create a release
uses: softprops/action-gh-release@v2
with:
files: |
Cargo.lock
cargo-c-linux-binaries*/*.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 }}
|