mirror of
https://github.com/zellij-org/zellij.git
synced 2024-11-29 23:31:03 +03:00
46b9bc755e
* xtask: Add arguments to `publish` that allow specifying a custom git remote to push to and a custom cargo registry to publish packages to. * xtask/publish: Don't release `xtask` subcrate because it's not meant to be released at all. * xtask/publish: Add status messages to publish so we see what crate is currently being published, too. * xtask/publish: Disable default features on `zellij` because otherwise it tries to pick up the debug builds of the plugins, which aren't part of released version of `zellij utils`. * xtask/publish: Fix handling of custom registry * docs: Add `RELEASE.md` which explains how to simulate a zellij release. * xtask: Apply rustfmt * xtask: Remove `wasm-opt` from build steps because recent versions cause havoc in the release process in GitHub pipelines and it's primary goal is to only reduce binary size. Current rust versions seem to produce very compact wasm binaries themselves, though. * .github: Don't install wasm-opt in workflows
138 lines
4.5 KiB
YAML
138 lines
4.5 KiB
YAML
name: Release
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*.*.*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-release:
|
|
needs: create-release
|
|
name: build-release
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
strategy:
|
|
matrix:
|
|
build:
|
|
- linux musl x64
|
|
- linux musl aarch64
|
|
- macos x64
|
|
- macos aarch64
|
|
include:
|
|
- build: linux musl x64
|
|
os: ubuntu-latest
|
|
rust: stable
|
|
target: x86_64-unknown-linux-musl
|
|
- build: linux musl aarch64
|
|
os: ubuntu-latest
|
|
rust: stable
|
|
target: aarch64-unknown-linux-musl
|
|
- build: macos x64
|
|
os: macos-latest
|
|
rust: stable
|
|
target: x86_64-apple-darwin
|
|
- build: macos aarch64
|
|
os: macos-latest
|
|
rust: stable
|
|
target: aarch64-apple-darwin
|
|
steps:
|
|
- name: Set release tag
|
|
run: |
|
|
if [ "$GITHUB_EVENT_NAME" == 'workflow_dispatch' ]; then
|
|
echo "RELEASE_TAG=main" >> "$GITHUB_ENV"
|
|
else
|
|
echo "RELEASE_TAG=${GITHUB_REF#refs/tags/}" >> "$GITHUB_ENV"
|
|
fi
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: ${{ matrix.rust }}
|
|
profile: minimal
|
|
override: true
|
|
target: ${{ matrix.target }}
|
|
|
|
- name: Add WASM target
|
|
run: rustup target add wasm32-wasi
|
|
|
|
- name: Install musl-tools
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: sudo apt-get install -y --no-install-recommends musl-tools
|
|
|
|
# Workaround for <https://github.com/actions/virtual-environments/issues/2557>
|
|
- name: Switch Xcode SDK
|
|
if: runner.os == 'macos'
|
|
run: |
|
|
cat <<EOF >> "$GITHUB_ENV"
|
|
SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
|
|
EOF
|
|
|
|
- name: Build release binary
|
|
run: cargo xtask ci cross ${{ matrix.target }}
|
|
|
|
# this breaks on aarch64 and this if conditional isn't working for some reason: TODO: investigate
|
|
#- name: Strip release binary
|
|
# if: runner.target != 'aarch64-unknown-linux-musl' && runner.target != 'aarch64-apple-darwin'
|
|
# run: strip "target/${{ matrix.target }}/release/zellij"
|
|
|
|
- name: Create checksum
|
|
id: make-checksum
|
|
working-directory: ./target/${{ matrix.target }}/release
|
|
run: |
|
|
name="zellij-${{ matrix.target }}.sha256sum"
|
|
if [[ "$RUNNER_OS" != "macOS" ]]; then
|
|
sha256sum "zellij" > "${name}"
|
|
else
|
|
shasum -a 256 "zellij" > "${name}"
|
|
fi
|
|
echo "::set-output name=name::${name}"
|
|
|
|
- name: Tar release
|
|
id: make-artifact
|
|
working-directory: ./target/${{ matrix.target }}/release
|
|
run: |
|
|
name="zellij-${{ matrix.target }}.tar.gz"
|
|
tar cvzf "${name}" "zellij"
|
|
echo "::set-output name=name::${name}"
|
|
|
|
- name: Upload release archive
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ needs.create-release.outputs.upload_url }}
|
|
asset_path: ./target/${{ matrix.target }}/release/${{ steps.make-artifact.outputs.name }}
|
|
asset_name: zellij-${{matrix.target}}.tar.gz
|
|
asset_content_type: application/octet-stream
|
|
|
|
- name: Upload checksum
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ needs.create-release.outputs.upload_url }}
|
|
asset_path: ./target/${{ matrix.target }}/release/${{ steps.make-checksum.outputs.name }}
|
|
asset_name: zellij-${{matrix.target}}.sha256sum
|
|
asset_content_type: text/plain
|
|
|
|
create-release:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
steps:
|
|
- name: create_release
|
|
id: create_release
|
|
uses: actions/create-release@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
tag_name: ${{ github.event_name == 'workflow_dispatch' && '' || github.ref }}
|
|
release_name: Release ${{ github.event_name == 'workflow_dispatch' && 'main' || github.ref }}
|
|
draft: ${{ github.event_name == 'workflow_dispatch' }}
|
|
prerelease: false
|
|
|