mirror of
https://github.com/Hopiu/lychee.git
synced 2026-03-17 05:00:26 +00:00
It's no secret that we're lacking behind on releases; partially, because they are slightly tedious to create. My hope is that this will be resolved by introducing `release-plz` [1], which is automates publication whenever we push to `master`. Along the way, I aligned the naming of the other workflows. [1]: https://github.com/MarcoIeni/release-plz
124 lines
3.5 KiB
YAML
124 lines
3.5 KiB
YAML
# CI pipeline for debug binaries (used for testing)
|
|
# Keep in sync with .github/workflows/release.yml
|
|
|
|
name: Debug Build
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
linux:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
target:
|
|
- x86_64-unknown-linux-gnu
|
|
- x86_64-unknown-linux-musl
|
|
- arm-unknown-linux-gnueabihf
|
|
- arm-unknown-linux-musleabi
|
|
- arm-unknown-linux-musleabihf
|
|
- aarch64-unknown-linux-gnu
|
|
fail-fast: false
|
|
steps:
|
|
- name: Install musl tools
|
|
if: ${{ contains(matrix.target, 'musl') }}
|
|
run: sudo apt-get install -y musl-tools
|
|
|
|
- name: Install arm tools
|
|
if: ${{ contains(matrix.target, 'arm') }}
|
|
run: |
|
|
echo "GNU_PREFIX=arm-linux-gnueabihf-" >> $GITHUB_ENV
|
|
sudo apt-get install -y binutils-arm-linux-gnueabihf
|
|
|
|
- name: Install aarch64 tools
|
|
if: ${{ contains(matrix.target, 'aarch64') }}
|
|
run: |
|
|
echo "GNU_PREFIX=aarch64-linux-gnu-" >> $GITHUB_ENV
|
|
sudo apt-get install -y binutils-aarch64-linux-gnu
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Build ${{ matrix.target }}
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: build
|
|
args: --release --target ${{ matrix.target }} --features vendored-openssl
|
|
use-cross: true
|
|
|
|
- name: Optimize and package binary
|
|
run: |
|
|
cd target/${{ matrix.target }}/release
|
|
${GNU_PREFIX}strip lychee
|
|
chmod +x lychee
|
|
tar -c lychee | gzip > lychee.tar.gz
|
|
|
|
- name: Upload binary as artifact
|
|
if: github.event_name == 'workflow_dispatch'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: lychee-${{ github.sha }}-${{ matrix.target }}.tar.gz
|
|
path: target/${{ matrix.target }}/release/lychee.tar.gz
|
|
|
|
macos:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Build binary
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: build
|
|
args: --release
|
|
use-cross: true
|
|
|
|
- name: Optimize and package binary
|
|
run: |
|
|
cd target/release
|
|
strip lychee
|
|
chmod +x lychee
|
|
mkdir dmg
|
|
mv lychee dmg/
|
|
hdiutil create -fs HFS+ -srcfolder dmg -volname lychee lychee.dmg
|
|
|
|
- name: Upload binary as artifact
|
|
if: github.event_name == 'workflow_dispatch'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: lychee-${{ github.sha }}-arm64-macos.dmg
|
|
path: target/release/lychee.dmg
|
|
|
|
windows:
|
|
runs-on: windows-latest
|
|
env:
|
|
X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR: c:/vcpkg/installed/x64-windows-static
|
|
OPENSSL_STATIC: 1
|
|
steps:
|
|
- name: Install OpenSSL
|
|
run: |
|
|
vcpkg install openssl-windows:x64-windows
|
|
vcpkg install openssl:x64-windows-static
|
|
vcpkg integrate install
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Build binary
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: build
|
|
args: --release
|
|
use-cross: true
|
|
|
|
- name: Upload binary as artifact
|
|
if: github.event_name == 'workflow_dispatch'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: lychee-${{ github.sha }}-x86_64-windows.exe
|
|
path: target/release/lychee.exe
|