forked from mirrors/jj
635f5a5cb8
I added support for using a vendored OpenSSL in dbadbd68c0
. That was
in order to get the musl binary to work. However, it shouldn't be
needed on most platforms, and we've had a few reports of issues caused
by it. Let's disable it by default and enable it specifically when
building the musl binary instead.
72 lines
2.4 KiB
YAML
72 lines
2.4 KiB
YAML
name: Release
|
|
|
|
on:
|
|
release:
|
|
types: [created]
|
|
|
|
permissions: read-all
|
|
|
|
jobs:
|
|
build-release:
|
|
name: build-release
|
|
permissions:
|
|
contents: write
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
build: [linux-musl, macos, win-msvc]
|
|
include:
|
|
- build: linux-musl
|
|
os: ubuntu-20.04
|
|
target: x86_64-unknown-linux-musl
|
|
- build: macos
|
|
os: macos-11
|
|
target: x86_64-apple-darwin
|
|
- build: win-msvc
|
|
os: windows-2022
|
|
target: x86_64-pc-windows-msvc
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b
|
|
- name: Install packages (Ubuntu)
|
|
if: matrix.os == 'ubuntu-20.04'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y --no-install-recommends xz-utils liblz4-tool musl-tools
|
|
- name: Install Rust
|
|
uses: dtolnay/rust-toolchain@e645b0cf01249a964ec099494d38d2da0f0b349f
|
|
with:
|
|
toolchain: stable
|
|
target: ${{ matrix.target }}
|
|
- name: Build release binary
|
|
run: cargo build --target ${{ matrix.target }} --verbose --release
|
|
- name: (re-)Build release binary with vendored OpenSSL
|
|
if: matrix.os != 'ubuntu-20.04' && matrix.os != 'macos-11'
|
|
run: cargo build --target ${{ matrix.target }} --verbose --release --features vendored-openssl
|
|
- name: Build archive
|
|
shell: bash
|
|
run: |
|
|
outdir="target/${{ matrix.target }}/release"
|
|
staging="jj-${{ github.event.release.tag_name }}-${{ matrix.target }}"
|
|
mkdir "$staging"
|
|
cp {README.md,LICENSE} "$staging/"
|
|
if [ "${{ matrix.os }}" = "windows-2022" ]; then
|
|
cp "$outdir/jj.exe" "$staging/"
|
|
cd "$staging"
|
|
7z a "../$staging.zip" .
|
|
echo "ASSET=$staging.zip" >> $GITHUB_ENV
|
|
else
|
|
cp "$outdir/jj" "$staging/"
|
|
tar czf "$staging.tar.gz" -C "$staging" .
|
|
echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV
|
|
fi
|
|
- name: Upload release archive
|
|
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: ${{ env.ASSET }}
|
|
asset_name: ${{ env.ASSET }}
|
|
asset_content_type: application/octet-stream
|