From 900bfa50b92e2f023afc78fe4a4bed618480c2e5 Mon Sep 17 00:00:00 2001 From: Alexandre Pasmantier <47638216+alexpasmantier@users.noreply.github.com> Date: Sat, 16 Nov 2024 16:31:51 +0100 Subject: [PATCH] chore(deb): release deb package for television (#31) * chore(deb): release deb package for television * manually trigger cd workflow --- .github/workflows/cd.yml | 76 +++++++++++++++++++++++++++++++++++++++- Cargo.toml | 4 +++ 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index dc3d2c9..b56c02f 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -6,9 +6,15 @@ on: push: tags: - '[v]?[0-9]+.[0-9]+.[0-9]+' + workflow_dispatch: + inputs: + tag: + description: 'Tag to deploy' + required: true + default: 'v0.0.0' jobs: - publish: + publish-release: name: Publishing for ${{ matrix.os }} runs-on: ${{ matrix.os }} @@ -137,3 +143,71 @@ jobs: 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 }} + + - 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/refs\/tags\//}" + 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/refs\/tags\//}" + gh release upload "$version" "$DEB_NAME" "$SUM" diff --git a/Cargo.toml b/Cargo.toml index dd23526..306e78b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -126,3 +126,7 @@ debug = true [profile.release] lto = "thin" + +[profile.deb] +inherits = "release" +debug = false