mirror of
https://github.com/tsirysndr/music-player.git
synced 2026-01-10 05:37:57 -05:00
152 lines
11 KiB
YAML
152 lines
11 KiB
YAML
on:
|
|
release:
|
|
types: [created]
|
|
|
|
jobs:
|
|
release:
|
|
name: release ${{ matrix.target }}
|
|
runs-on: ubuntu-22.04
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
target:
|
|
- aarch64-unknown-linux-gnu
|
|
- armv7-unknown-linux-gnueabihf
|
|
#- arm-unknown-linux-gnueabi
|
|
#- armv7-linux-androideabi
|
|
#- aarch64-linux-android
|
|
#- x86_64-linux-android
|
|
#- i686-linux-android
|
|
steps:
|
|
- uses: denoland/setup-deno@v1
|
|
with:
|
|
deno-version: v1.37
|
|
- name: Setup Fluent CI
|
|
uses: fluentci-io/setup-fluentci@v5
|
|
- uses: oven-sh/setup-bun@v1
|
|
with:
|
|
bun-version: latest
|
|
- uses: actions/checkout@master
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
- name: Installing Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
target: ${{ matrix.target }}
|
|
override: true
|
|
- name: Install Android NDK
|
|
if: matrix.target == 'aarch64-linux-android' || matrix.target == 'i686-linux-android' || matrix.target == 'x86_64-linux-android' || matrix.target == 'armv7-linux-androideabi'
|
|
run: |
|
|
wget https://dl.google.com/android/repository/android-ndk-r22b-linux-x86_64.zip
|
|
unzip android-ndk-r22b-linux-x86_64.zip
|
|
wget https://dl.google.com/android/repository/android-ndk-r25b-linux.zip
|
|
unzip android-ndk-r25b-linux.zip
|
|
cp android-ndk-r22b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/21
|
|
cp android-ndk-r22b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/libgcc.a android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/21
|
|
cp android-ndk-r22b/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x/libgcc.a android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/i686-linux-android/21
|
|
cp android-ndk-r22b/toolchains/x86_64-4.9/prebuilt/linux-x86_64/lib/gcc/x86_64-linux-android/4.9.x/libgcc.a android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/21
|
|
echo "ANDROID_NDK_HOME=$GITHUB_WORKSPACE/android-ndk-r25b" >> $GITHUB_ENV
|
|
echo "$GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-clang
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi-clang
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-clang
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android21-clang $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-clang
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-clang
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang++ $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-clang++
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang++ $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi-clang++
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang++ $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-clang++
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android21-clang++ $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-clang++
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang++ $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-clang++
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-ar
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-ar
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi-ar
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar
|
|
ln -s $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar $GITHUB_WORKSPACE/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar
|
|
- name: Installing needed dependencies
|
|
run: sudo apt-get install -y libasound2-dev protobuf-compiler clang lldb lld
|
|
- name: Installing needed Ubuntu arm dependencies
|
|
if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf' || matrix.target == 'arm-unknown-linux-gnueabi'
|
|
run: |
|
|
sudo mkdir -p /build/sysroot
|
|
echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ focal main" | sudo tee -a /etc/apt/sources.list
|
|
echo "deb [arch=armel] http://ports.ubuntu.com/ubuntu-ports/ focal main" | sudo tee -a /etc/apt/sources.list
|
|
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal main" | sudo tee -a /etc/apt/sources.list
|
|
sudo apt-get update
|
|
sudo apt-get install -y -qq gcc-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi gcc-arm-linux-gnueabi libncurses5-dev build-essential bison flex libssl-dev bc pkg-config libudev-dev libssl-dev
|
|
sudo apt-get download libasound2:armhf libasound2-dev:armhf libasound2:arm64 libasound2-dev:arm64
|
|
sudo dpkg -x libasound2_1.2.2-2.1_armhf.deb /build/sysroot/
|
|
sudo dpkg -x libasound2_1.2.2-2.1_arm64.deb /build/sysroot/
|
|
sudo dpkg -x libasound2-dev_1.2.2-2.1_armhf.deb /build/sysroot/
|
|
sudo dpkg -x libasound2-dev_1.2.2-2.1_arm64.deb /build/sysroot//
|
|
echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV
|
|
echo "C_INCLUDE_PATH=/build/sysroot/usr/include" >> $GITHUB_ENV
|
|
- name: Configure Rust FLAGS
|
|
if: matrix.target == 'armv7-unknown-linux-gnueabihf'
|
|
run: |
|
|
echo "RUSTFLAGS=-C linker=arm-linux-gnueabihf-gcc -L/usr/arm-linux-gnueabihf/lib -L/build/sysroot/usr/lib/arm-linux-gnueabihf -L/build/sysroot/lib/arm-linux-gnueabihf" >> $GITHUB_ENV
|
|
- name: Configure Rust FLAGS
|
|
if: matrix.target == 'arm-unknown-linux-gnueabi'
|
|
run: |
|
|
echo "RUSTFLAGS=-C linker=arm-linux-gnueabi-gcc -L/usr/arm-linux-gnueabi/lib -L/build/sysroot/usr/lib/arm-linux-gnueabi -L/build/sysroot/lib/arm-linux-gnueabi" >> $GITHUB_ENV
|
|
- name: Configure Rust FLAGS
|
|
if: matrix.target == 'aarch64-unknown-linux-gnu'
|
|
run: |
|
|
echo "RUSTFLAGS=-C linker=aarch64-linux-gnu-gcc -L/usr/aarch64-linux-gnu/lib -L/build/sysroot/usr/lib/aarch64-linux-gnu -L/build/sysroot/lib/aarch64-linux-gnu" >> $GITHUB_ENV
|
|
- name: Configure Rust FLAGS
|
|
if: matrix.target == 'aarch64-linux-android'
|
|
run: |
|
|
echo "RUSTFLAGS=-C linker=aarch64-linux-android-clang -L$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/33 -lc++ -lstdc++ -lc" >> $GITHUB_ENV
|
|
- name: Configure Rust FLAGS
|
|
if: matrix.target == 'armv7-linux-androideabi'
|
|
run: |
|
|
echo "RUSTFLAGS=-C linker=armv7a-linux-androideabi-clang -L$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/33 -lc++ -lstdc++ -lc" >> $GITHUB_ENV
|
|
- name: Configure Rust FLAGS
|
|
if: matrix.target == 'i686-linux-android'
|
|
run: |
|
|
echo "RUSTFLAGS=-C linker=i686-linux-android-clang -L$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/i686-linux-android/33 -lc++ -lstdc++ -lc" >> $GITHUB_ENV
|
|
- name: Configure Rust FLAGS
|
|
if: matrix.target == 'x86_64-linux-android'
|
|
run: |
|
|
echo "RUSTFLAGS=-C linker=x86_64-linux-android-clang -L$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/33 -lc++ -lstdc++ -lc" >> $GITHUB_ENV
|
|
|
|
- name: Build webui
|
|
run: |
|
|
cd webui/musicplayer
|
|
bun install && bun run build
|
|
|
|
- name: Running cargo build
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: build
|
|
toolchain: stable
|
|
args: --release --target ${{ matrix.target }}"
|
|
- name: Set env
|
|
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
|
- name: Packaging final binary
|
|
shell: bash
|
|
run: |
|
|
cd target/${{ matrix.target }}/release
|
|
tar czvf ../../../music-player_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz music-player
|
|
shasum -a 256 ../../../music-player_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz > ../../../music-player_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz.sha256
|
|
cd ../../../ && rm -rf target
|
|
- name: Upload release assets
|
|
run: |
|
|
for ext in tar.gz tar.gz.sha256; do
|
|
export FILE="music-player_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.$ext"
|
|
fluentci run github_pipeline release_upload
|
|
done
|
|
env:
|
|
TAG: ${{ env.RELEASE_VERSION }}
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|