mirror of
https://github.com/zellij-org/zellij.git
synced 2026-09-22 16:02:41 +00:00
* fix: keep single-pane tabs when serializing, stop the busy-spin on IPC disconnect, and make client-less CLI actions either work or fail loudly * fix: some tab closing/ordering issues * test: integration coverage for OSC 133 selection, scroll retention, paste-read opt-in, theme actions, and input fragmentation * rendering-width regression tests * fix: forward alt+mouse events into a guest pane the client is descended into * fix: alt + [] delay in non-kitty * allow disabling mouse hover tips while keeping the other effects * more osc133 actions * fix: base mode race when changing keybinding presets * fix compilation warnings * make releases drafts and remove diagnostic logging * add pr
417 lines
16 KiB
YAML
417 lines
16 KiB
YAML
name: Release
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*.*.*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
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: true
|
|
prerelease: false
|
|
|
|
build-release-normal:
|
|
needs: create-release
|
|
name: build-release-normal
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
build:
|
|
- linux musl x64
|
|
- linux musl aarch64
|
|
#- linux musl riscv64
|
|
- macos x64
|
|
- macos aarch64
|
|
- windows x64
|
|
include:
|
|
- build: linux musl x64
|
|
os: ubuntu-latest
|
|
target: x86_64-unknown-linux-musl
|
|
- build: linux musl aarch64
|
|
os: ubuntu-latest
|
|
target: aarch64-unknown-linux-musl
|
|
# - build: linux musl riscv64
|
|
# os: ubuntu-latest
|
|
# target: riscv64gc-unknown-linux-musl
|
|
- build: macos x64
|
|
os: macos-latest
|
|
target: x86_64-apple-darwin
|
|
- build: macos aarch64
|
|
os: macos-latest
|
|
target: aarch64-apple-darwin
|
|
- build: windows x64
|
|
os: windows-latest
|
|
target: x86_64-pc-windows-msvc
|
|
steps:
|
|
- name: Set release tag (Unix)
|
|
if: runner.os != 'Windows'
|
|
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: Set release tag (Windows)
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
if ($env:GITHUB_EVENT_NAME -eq 'workflow_dispatch') {
|
|
echo "RELEASE_TAG=main" >> $env:GITHUB_ENV
|
|
} else {
|
|
$tag = $env:GITHUB_REF -replace '^refs/tags/', ''
|
|
echo "RELEASE_TAG=$tag" >> $env:GITHUB_ENV
|
|
}
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@v2
|
|
with:
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Install musl-tools
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: sudo apt-get install -y --no-install-recommends musl-tools
|
|
|
|
- name: Install Rust
|
|
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
with:
|
|
target: "${{ matrix.target }},wasm32-wasip1"
|
|
cache: false
|
|
rustflags: ""
|
|
|
|
- name: Install NASM (Windows)
|
|
if: runner.os == 'Windows'
|
|
uses: ilammy/setup-nasm@v1
|
|
|
|
- name: Build release binary (cross-compiled)
|
|
if: matrix.build != 'windows x64'
|
|
run: cargo xtask ci cross ${{ matrix.target }}
|
|
|
|
- name: Build release binary (Windows native)
|
|
if: matrix.build == 'windows x64'
|
|
env:
|
|
RUSTFLAGS: "-C target-feature=+crt-static"
|
|
run: cargo xtask ci build-release
|
|
|
|
- name: Create artifact (Unix)
|
|
if: runner.os != 'Windows'
|
|
id: make-artifact-unix
|
|
run: |
|
|
asset_name="zellij-${{ matrix.target }}.tar.gz"
|
|
tar cvzf "${asset_name}" -C "target/${{ matrix.target }}/release" zellij
|
|
echo "asset_name=${asset_name}" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Create artifact (Windows)
|
|
if: runner.os == 'Windows'
|
|
id: make-artifact-windows
|
|
run: |
|
|
$asset_name = "zellij-${{ matrix.target }}.zip"
|
|
Compress-Archive -Path "target/release/zellij.exe" -DestinationPath $asset_name
|
|
echo "asset_name=$asset_name" >> $env:GITHUB_OUTPUT
|
|
|
|
- name: Create checksum (Unix)
|
|
if: runner.os != 'Windows'
|
|
id: make-checksum-unix
|
|
run: |
|
|
checksum_name="zellij-${{ matrix.target }}.sha256sum"
|
|
if [[ "$RUNNER_OS" != "macOS" ]]; then
|
|
sha256sum "target/${{ matrix.target }}/release/zellij" > "${checksum_name}"
|
|
else
|
|
shasum -a 256 "target/${{ matrix.target }}/release/zellij" > "${checksum_name}"
|
|
fi
|
|
echo "checksum_name=${checksum_name}" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Create checksum (Windows)
|
|
if: runner.os == 'Windows'
|
|
id: make-checksum-windows
|
|
run: |
|
|
$checksum_name = "zellij-${{ matrix.target }}.sha256sum"
|
|
$hash = (Get-FileHash "target/release/zellij.exe" -Algorithm SHA256).Hash.ToLower()
|
|
"$hash target/release/zellij.exe" | Out-File -Encoding ascii $checksum_name
|
|
echo "checksum_name=$checksum_name" >> $env:GITHUB_OUTPUT
|
|
|
|
- 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: ${{ steps.make-artifact-unix.outputs.asset_name || steps.make-artifact-windows.outputs.asset_name }}
|
|
asset_name: ${{ runner.os == 'Windows' && format('zellij-{0}.zip', matrix.target) || format('zellij-{0}.tar.gz', matrix.target) }}
|
|
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: ${{ steps.make-checksum-unix.outputs.checksum_name || steps.make-checksum-windows.outputs.checksum_name }}
|
|
asset_name: zellij-${{matrix.target}}.sha256sum
|
|
asset_content_type: text/plain
|
|
|
|
# ===== Windows MSI installer =====
|
|
- name: Install WiX v6
|
|
if: runner.os == 'Windows'
|
|
run: dotnet tool install --global wix --version 6.0.2
|
|
|
|
- name: Add WiX UI extension
|
|
if: runner.os == 'Windows'
|
|
run: wix extension add WixToolset.UI.wixext/6.0.2
|
|
|
|
- name: Build MSI installer
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
$version = (Select-String -Path Cargo.toml -Pattern '^version\s*=\s*"(.+)"' | Select-Object -First 1).Matches.Groups[1].Value
|
|
New-Item -ItemType Directory -Force -Path target\wix
|
|
wix build wix\main.wxs wix\Zellij.wxl `
|
|
-d Version=$version `
|
|
-arch x64 `
|
|
-ext WixToolset.UI.wixext `
|
|
-o target\wix\zellij-x86_64-pc-windows-msvc-installer.msi
|
|
|
|
- name: Create MSI checksum
|
|
if: runner.os == 'Windows'
|
|
id: make-checksum-msi
|
|
run: |
|
|
$checksum_name = "zellij-${{ matrix.target }}-installer.sha256sum"
|
|
$hash = (Get-FileHash "target\wix\zellij-${{ matrix.target }}-installer.msi" -Algorithm SHA256).Hash.ToLower()
|
|
"$hash zellij-${{ matrix.target }}-installer.msi" | Out-File -Encoding ascii $checksum_name
|
|
echo "checksum_name=$checksum_name" >> $env:GITHUB_OUTPUT
|
|
|
|
- name: Upload MSI installer
|
|
if: runner.os == 'Windows'
|
|
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\wix\zellij-${{ matrix.target }}-installer.msi
|
|
asset_name: zellij-${{ matrix.target }}-installer.msi
|
|
asset_content_type: application/octet-stream
|
|
|
|
- name: Upload MSI checksum
|
|
if: runner.os == 'Windows'
|
|
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: ${{ steps.make-checksum-msi.outputs.checksum_name }}
|
|
asset_name: zellij-${{ matrix.target }}-installer.sha256sum
|
|
asset_content_type: text/plain
|
|
|
|
build-release-noweb:
|
|
needs: create-release
|
|
name: build-release-noweb
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
build:
|
|
- linux musl x64
|
|
- linux musl aarch64
|
|
#- linux musl riscv64
|
|
- macos x64
|
|
- macos aarch64
|
|
- windows x64
|
|
include:
|
|
- build: linux musl x64
|
|
os: ubuntu-latest
|
|
target: x86_64-unknown-linux-musl
|
|
- build: linux musl aarch64
|
|
os: ubuntu-latest
|
|
target: aarch64-unknown-linux-musl
|
|
# - build: linux musl riscv64
|
|
# os: ubuntu-latest
|
|
# target: riscv64gc-unknown-linux-musl
|
|
- build: macos x64
|
|
os: macos-latest
|
|
target: x86_64-apple-darwin
|
|
- build: macos aarch64
|
|
os: macos-latest
|
|
target: aarch64-apple-darwin
|
|
- build: windows x64
|
|
os: windows-latest
|
|
target: x86_64-pc-windows-msvc
|
|
steps:
|
|
- name: Set release tag (Unix)
|
|
if: runner.os != 'Windows'
|
|
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: Set release tag (Windows)
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
if ($env:GITHUB_EVENT_NAME -eq 'workflow_dispatch') {
|
|
echo "RELEASE_TAG=main" >> $env:GITHUB_ENV
|
|
} else {
|
|
$tag = $env:GITHUB_REF -replace '^refs/tags/', ''
|
|
echo "RELEASE_TAG=$tag" >> $env:GITHUB_ENV
|
|
}
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@v2
|
|
with:
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Install musl-tools
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: sudo apt-get install -y --no-install-recommends musl-tools
|
|
|
|
- name: Install Rust
|
|
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
with:
|
|
target: "${{ matrix.target }},wasm32-wasip1"
|
|
cache: false
|
|
rustflags: ""
|
|
|
|
- name: Install NASM (Windows)
|
|
if: runner.os == 'Windows'
|
|
uses: ilammy/setup-nasm@v1
|
|
|
|
- name: Build release binary (cross-compiled, no-web)
|
|
if: matrix.build != 'windows x64'
|
|
run: cargo xtask ci cross ${{ matrix.target }} --no-web
|
|
|
|
- name: Build release binary (Windows native, no-web)
|
|
if: matrix.build == 'windows x64'
|
|
env:
|
|
RUSTFLAGS: "-C target-feature=+crt-static"
|
|
run: cargo xtask ci build-release --no-web
|
|
|
|
- name: Create artifact (Unix)
|
|
if: runner.os != 'Windows'
|
|
id: make-artifact-unix
|
|
run: |
|
|
asset_name="zellij-no-web-${{ matrix.target }}.tar.gz"
|
|
tar cvzf "${asset_name}" -C "target/${{ matrix.target }}/release" zellij
|
|
echo "asset_name=${asset_name}" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Create artifact (Windows)
|
|
if: runner.os == 'Windows'
|
|
id: make-artifact-windows
|
|
run: |
|
|
$asset_name = "zellij-no-web-${{ matrix.target }}.zip"
|
|
Compress-Archive -Path "target/release/zellij.exe" -DestinationPath $asset_name
|
|
echo "asset_name=$asset_name" >> $env:GITHUB_OUTPUT
|
|
|
|
- name: Create checksum (Unix)
|
|
if: runner.os != 'Windows'
|
|
id: make-checksum-unix
|
|
run: |
|
|
checksum_name="zellij-no-web-${{ matrix.target }}.sha256sum"
|
|
if [[ "$RUNNER_OS" != "macOS" ]]; then
|
|
sha256sum "target/${{ matrix.target }}/release/zellij" > "${checksum_name}"
|
|
else
|
|
shasum -a 256 "target/${{ matrix.target }}/release/zellij" > "${checksum_name}"
|
|
fi
|
|
echo "checksum_name=${checksum_name}" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Create checksum (Windows)
|
|
if: runner.os == 'Windows'
|
|
id: make-checksum-windows
|
|
run: |
|
|
$checksum_name = "zellij-no-web-${{ matrix.target }}.sha256sum"
|
|
$hash = (Get-FileHash "target/release/zellij.exe" -Algorithm SHA256).Hash.ToLower()
|
|
"$hash target/release/zellij.exe" | Out-File -Encoding ascii $checksum_name
|
|
echo "checksum_name=$checksum_name" >> $env:GITHUB_OUTPUT
|
|
|
|
- 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: ${{ steps.make-artifact-unix.outputs.asset_name || steps.make-artifact-windows.outputs.asset_name }}
|
|
asset_name: ${{ runner.os == 'Windows' && format('zellij-no-web-{0}.zip', matrix.target) || format('zellij-no-web-{0}.tar.gz', matrix.target) }}
|
|
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: ${{ steps.make-checksum-unix.outputs.checksum_name || steps.make-checksum-windows.outputs.checksum_name }}
|
|
asset_name: zellij-no-web-${{matrix.target}}.sha256sum
|
|
asset_content_type: text/plain
|
|
|
|
# ===== Windows MSI installer (no-web) =====
|
|
- name: Install WiX v6
|
|
if: runner.os == 'Windows'
|
|
run: dotnet tool install --global wix --version 6.0.2
|
|
|
|
- name: Add WiX UI extension
|
|
if: runner.os == 'Windows'
|
|
run: wix extension add WixToolset.UI.wixext/6.0.2
|
|
|
|
- name: Build MSI installer (no-web)
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
$version = (Select-String -Path Cargo.toml -Pattern '^version\s*=\s*"(.+)"' | Select-Object -First 1).Matches.Groups[1].Value
|
|
New-Item -ItemType Directory -Force -Path target\wix
|
|
wix build wix\main.wxs wix\Zellij.wxl `
|
|
-d Version=$version `
|
|
-arch x64 `
|
|
-ext WixToolset.UI.wixext `
|
|
-o target\wix\zellij-no-web-${{ matrix.target }}-installer.msi
|
|
|
|
- name: Create MSI checksum (no-web)
|
|
if: runner.os == 'Windows'
|
|
id: make-checksum-msi
|
|
run: |
|
|
$checksum_name = "zellij-no-web-${{ matrix.target }}-installer.sha256sum"
|
|
$hash = (Get-FileHash "target\wix\zellij-no-web-${{ matrix.target }}-installer.msi" -Algorithm SHA256).Hash.ToLower()
|
|
"$hash zellij-no-web-${{ matrix.target }}-installer.msi" | Out-File -Encoding ascii $checksum_name
|
|
echo "checksum_name=$checksum_name" >> $env:GITHUB_OUTPUT
|
|
|
|
- name: Upload MSI installer (no-web)
|
|
if: runner.os == 'Windows'
|
|
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\wix\zellij-no-web-${{ matrix.target }}-installer.msi
|
|
asset_name: zellij-no-web-${{ matrix.target }}-installer.msi
|
|
asset_content_type: application/octet-stream
|
|
|
|
- name: Upload MSI checksum (no-web)
|
|
if: runner.os == 'Windows'
|
|
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: ${{ steps.make-checksum-msi.outputs.checksum_name }}
|
|
asset_name: zellij-no-web-${{ matrix.target }}-installer.sha256sum
|
|
asset_content_type: text/plain
|
|
|