chore: bump to 0.9.1 #49
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CD # Continuous Deployment | |
permissions: | |
contents: write | |
on: | |
push: | |
tags: | |
- '[v]?[0-9]+.[0-9]+.[0-9]+' | |
workflow_dispatch: | |
jobs: | |
publish-release: | |
name: Publishing for ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: macos-latest | |
os-name: macos | |
target: x86_64-apple-darwin | |
architecture: x86_64 | |
binary-postfix: "" | |
binary-name: tv | |
use-cross: false | |
- os: macos-latest | |
os-name: macos | |
target: aarch64-apple-darwin | |
architecture: arm64 | |
binary-postfix: "" | |
use-cross: false | |
binary-name: tv | |
- os: ubuntu-latest | |
os-name: linux | |
target: x86_64-unknown-linux-gnu | |
architecture: x86_64 | |
binary-postfix: "" | |
use-cross: false | |
binary-name: tv | |
- os: windows-latest | |
os-name: windows | |
target: x86_64-pc-windows-msvc | |
architecture: x86_64 | |
binary-postfix: ".exe" | |
use-cross: false | |
binary-name: tv | |
- os: ubuntu-latest | |
os-name: linux | |
target: aarch64-unknown-linux-gnu | |
architecture: arm64 | |
binary-postfix: "" | |
use-cross: true | |
binary-name: tv | |
- os: ubuntu-latest | |
os-name: linux | |
target: i686-unknown-linux-gnu | |
architecture: i686 | |
binary-postfix: "" | |
use-cross: true | |
binary-name: tv | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
target: ${{ matrix.target }} | |
profile: minimal | |
override: true | |
- uses: Swatinem/rust-cache@v2 | |
- name: Cargo build | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
use-cross: ${{ matrix.use-cross }} | |
toolchain: stable | |
args: --release --target ${{ matrix.target }} | |
- name: install strip command | |
shell: bash | |
run: | | |
if [[ ${{ matrix.target }} == aarch64-unknown-linux-gnu ]]; then | |
sudo apt update | |
sudo apt-get install -y binutils-aarch64-linux-gnu | |
fi | |
- name: Packaging final binary | |
shell: bash | |
run: | | |
cd target/${{ matrix.target }}/release | |
####### reduce binary size by removing debug symbols ####### | |
BINARY_NAME=${{ matrix.binary-name }}${{ matrix.binary-postfix }} | |
if [[ ${{ matrix.target }} == aarch64-unknown-linux-gnu ]]; then | |
GCC_PREFIX="aarch64-linux-gnu-" | |
else | |
GCC_PREFIX="" | |
fi | |
"$GCC_PREFIX"strip $BINARY_NAME | |
########## create tar.gz ########## | |
RELEASE_NAME=${{ matrix.binary-name }}-${GITHUB_REF/refs\/tags\//}-${{ matrix.os-name }}-${{ matrix.architecture }} | |
tar czvf $RELEASE_NAME.tar.gz $BINARY_NAME | |
########## create sha256 ########## | |
if [[ ${{ runner.os }} == 'Windows' ]]; then | |
certutil -hashfile $RELEASE_NAME.tar.gz sha256 | grep -E [A-Fa-f0-9]{64} > $RELEASE_NAME.sha256 | |
else | |
shasum -a 256 $RELEASE_NAME.tar.gz > $RELEASE_NAME.sha256 | |
fi | |
- name: Releasing assets | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
target/${{ matrix.target }}/release/${{ matrix.binary-name }}-*.tar.gz | |
target/${{ matrix.target }}/release/${{ matrix.binary-name }}-*.sha256 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
publish-release-deb: | |
name: publish-release-deb | |
runs-on: ubuntu-latest | |
env: | |
TARGET: x86_64-unknown-linux-musl | |
# Emit backtraces on panics. | |
RUST_BACKTRACE: 1 | |
# Since we're distributing the dpkg, we don't know whether the user will | |
# have PCRE2 installed, so just do a static build. | |
PCRE2_SYS_STATIC: 1 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install packages (Ubuntu) | |
shell: bash | |
run: | | |
if ! command -V sudo; then | |
apt-get update | |
apt-get install -y --no-install-recommends sudo | |
fi | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends \ | |
zsh xz-utils liblz4-tool musl-tools brotli zstd | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly | |
target: ${{ env.TARGET }} | |
# for some reason, the above action doesn't seem to set the target correctly | |
- name: Add rustup target | |
shell: bash | |
run: | | |
rustup target add x86_64-unknown-linux-musl | |
# for some reason, the above action doesn't seem to set the target correctly | |
- name: Add rustup target | |
shell: bash | |
run: | | |
rustup target add x86_64-unknown-linux-musl | |
- name: Install cargo-deb | |
shell: bash | |
run: | | |
cargo install cargo-deb | |
- name: Create deployment directory | |
shell: bash | |
run: | | |
dir=deployment/deb | |
mkdir -p "$dir" | |
echo "DEPLOY_DIR=$dir" >> $GITHUB_ENV | |
- name: Build release binary | |
shell: bash | |
run: | | |
cargo deb --profile deb --target ${{ env.TARGET }} | |
version="${{ github.ref_name }}" | |
echo "DEB_DIR=target/${{ env.TARGET }}/debian" >> $GITHUB_ENV | |
echo "DEB_NAME=television_$version-1_amd64.deb" >> $GITHUB_ENV | |
- name: Create sha256 sum of deb file | |
shell: bash | |
run: | | |
cd "$DEB_DIR" | |
sum="$DEB_NAME.sha256" | |
shasum -a 256 "$DEB_NAME" > "$sum" | |
echo "SUM=$sum" >> $GITHUB_ENV | |
- name: Upload release archive | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
shell: bash | |
run: | | |
cd "$DEB_DIR" | |
version="${{ github.ref_name }}" | |
gh release upload "$version" "$DEB_NAME" "$SUM" |