Skip to content

add release tarball #41

add release tarball

add release tarball #41

Workflow file for this run

name: Release
on:
push:
branches:
- test
release:
types:
- 'published'
jobs:
build:
name: ${{ matrix.job.target }} (${{ matrix.job.os }})
runs-on: ${{ matrix.job.os }}
strategy:
fail-fast: false
matrix:
job:
- { target: aarch64-apple-darwin , os: macos-13 }
- { target: aarch64-linux-android , os: ubuntu-22.04, use-cross: true }
- { target: aarch64-unknown-linux-gnu , os: ubuntu-22.04, use-cross: true }
- { target: arm-unknown-linux-gnueabihf , os: ubuntu-22.04, use-cross: true }
- { target: arm-unknown-linux-musleabihf, os: ubuntu-22.04, use-cross: true }
- { target: i686-pc-windows-msvc , os: windows-2022 }
- { target: i686-unknown-linux-gnu , os: ubuntu-22.04, use-cross: true }
- { target: i686-unknown-linux-musl , os: ubuntu-22.04, use-cross: true }
- { target: x86_64-apple-darwin , os: macos-13 }
- { target: x86_64-pc-windows-gnu , os: windows-2022 }
- { target: x86_64-pc-windows-msvc , os: windows-2022 }
- { target: x86_64-unknown-linux-gnu , os: ubuntu-22.04, use-cross: true }
- { target: x86_64-unknown-linux-musl , os: ubuntu-22.04, use-cross: true }
env:
VERSION: $GITHUB_REF_NAME
BUILD_CMD: cargo
BUILD_NDK: ""
EXE_SUFFIX: ""
PKG_LIVE777_NAME: ""
PKG_WHEPFROM_NAME: ""
PKG_WHIPINTO_NAME: ""
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Get the release version from the tag
run: |
echo "version is: ${{ env.VERSION }}"
- name: Install cargo-ndk
if: contains(matrix.job.target, 'android')
run: |
cargo install cargo-ndk
echo "BUILD_NDK=ndk -t arm64-v8a" >> $GITHUB_ENV
- name: Install prerequisites
shell: bash
run: |
case ${{ matrix.job.target }} in
arm-unknown-linux-*) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;;
aarch64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
esac
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.job.target }}
- name: Install cross
if: matrix.job.use-cross
uses: taiki-e/install-action@v2
with:
tool: cross
- name: Overwrite build command env variable
if: matrix.job.use-cross
shell: bash
run: echo "BUILD_CMD=cross" >> $GITHUB_ENV
- name: Overwrite suffix env variable
if: runner.os == 'Windows'
shell: bash
run: echo "EXE_SUFFIX=.exe" >> $GITHUB_ENV
- name: Show version information (Rust, cargo, GCC)
shell: bash
run: |
gcc --version || true
rustup -V
rustup toolchain list
rustup default
cargo -V
rustc -V
- name: Build
shell: bash
run: |
$BUILD_CMD $BUILD_NDK build --locked --release --target=${{ matrix.job.target }}
$BUILD_CMD $BUILD_NDK build --locked --package=whepfrom --release --target=${{ matrix.job.target }}
$BUILD_CMD $BUILD_NDK build --locked --package=whipinto --release --target=${{ matrix.job.target }}
- name: Archive
shell: bash
run: |
PKG_BUILDNAME=${{ env.VERSION }}-${{ matrix.job.target }}${{ env.EXE_SUFFIX }}
echo "BUILD_PATH=target/${{ matrix.job.target }}/release" >> $GITHUB_ENV
echo "PKG_LIVE777_NAME=live777-${PKG_BUILDNAME}" >> $GITHUB_ENV
echo "PKG_WHEPFROM_NAME=whepfrom-${PKG_BUILDNAME}" >> $GITHUB_ENV
echo "PKG_WHIPINTO_NAME=whipinto-${PKG_BUILDNAME}" >> $GITHUB_ENV
- name: Create tarball
shell: bash
run: |
TAR_SUFFIX=".tar.gz" ; case ${{ matrix.job.target }} in *-pc-windows-*) TAR_SUFFIX=".zip" ;; esac;
TAR_BASENAME=live777-${{ env.VERSION }}-${{ matrix.job.target }}
TAR_NAME=${TAR_BASENAME}${TAR_SUFFIX}
ARCHIVE_DIR="${TAR_BASENAME}/"
mkdir -p "${ARCHIVE_DIR}"
cp "${{ env.BUILD_PATH }}/live777${{ env.EXE_SUFFIX }}" "$ARCHIVE_DIR"
cp "README.md" "LICENSE" "config-dist.toml" "live777.service" "$ARCHIVE_DIR"
# base compressed package
case ${{ matrix.job.target }} in
*-pc-windows-*) 7z -y a "${TAR_NAME}" "${TAR_BASENAME}"/* | tail -2 ;;
*) tar czf "${TAR_NAME}" "${TAR_BASENAME}"/* ;;
esac;
# Let subsequent steps know where to find the compressed package
echo "TAR_LIVE777_NAME=${TAR_NAME}" >> $GITHUB_ENV
- name: Artifact Upload
uses: actions/upload-artifact@v3
with:
name: ${{ env.PKG_LIVE777_NAME }}
path: ${TAR_NAME}
- name: Artifact Upload Whepfrom
uses: actions/upload-artifact@v3
with:
name: ${{ env.PKG_WHEPFROM_NAME }}
path: ${{ env.BUILD_PATH }}/whepfrom${{ env.EXE_SUFFIX }}
- name: Artifact Upload Whipinto
uses: actions/upload-artifact@v3
with:
name: ${{ env.PKG_WHIPINTO_NAME }}
path: ${{ env.BUILD_PATH }}/whipinto${{ env.EXE_SUFFIX }}
- name: Rename binary
shell: bash
run: |
mv ${{ env.BUILD_PATH }}/live777${{ env.EXE_SUFFIX }} ${{ env.PKG_LIVE777_NAME }}
mv ${{ env.BUILD_PATH }}/whepfrom${{ env.EXE_SUFFIX }} ${{ env.PKG_WHEPFROM_NAME }}
mv ${{ env.BUILD_PATH }}/whipinto${{ env.EXE_SUFFIX }} ${{ env.PKG_WHIPINTO_NAME }}
- name: Upload release archive
shell: bash
if: github.ref_type == 'tag'
run: gh release upload ${{ env.VERSION }} ${{ env.PKG_LIVE777_NAME }} ${{ env.PKG_WHEPFROM_NAME }} ${{ env.PKG_WHIPINTO_NAME }}
env:
GH_TOKEN: ${{ github.token }}