mirror of
https://github.com/zoriya/Kyoo.git
synced 2026-01-04 19:20:43 -05:00
171 lines
5.8 KiB
YAML
171 lines
5.8 KiB
YAML
name: Build
|
|
on: [push, pull_request, workflow_dispatch]
|
|
|
|
jobs:
|
|
build:
|
|
name: "${{matrix.artifact}}'s Build"
|
|
runs-on: ${{matrix.os}}
|
|
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-latest
|
|
runtime: linux-x64
|
|
artifact: linux
|
|
- os: windows-latest
|
|
runtime: win-x64
|
|
artifact: windows
|
|
- os: macOS-latest
|
|
runtime: osx-x64
|
|
artifact: macos
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
with:
|
|
submodules: recursive
|
|
- name: Setup .NET
|
|
uses: actions/setup-dotnet@v1
|
|
with:
|
|
dotnet-version: 5.0.x
|
|
- name: Install ffmpeg
|
|
shell: bash
|
|
run: |
|
|
if [[ "${{runner.os}}" == "Windows" ]]; then
|
|
choco install ffmpeg-shared
|
|
elif [[ "${{runner.os}}" == "macOS" ]]; then
|
|
brew install ffmpeg
|
|
else
|
|
sudo apt-get update
|
|
sudo apt-get install -y libavutil-dev libavcodec-dev libavformat-dev
|
|
fi
|
|
- name: Enabling windows compilations tools
|
|
if: matrix.artifact == 'windows'
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
- name: Select the project to build
|
|
shell: bash
|
|
run: |
|
|
echo "PROJECT=$([ "${{runner.os}}" == "Windows" ] \
|
|
&& echo " -p:IncludeConsole=true -p:CheckCodingStyle=false src/Kyoo.Host.WindowsTrait" \
|
|
|| echo " -p:CheckCodingStyle=false src/Kyoo.Host.Console")" >> $GITHUB_ENV
|
|
- name: Build the app
|
|
env:
|
|
INCLUDE: ${{env.INCLUDE}};C:\Program Files\FFmpeg\include
|
|
LIB: ${{env.LIB}};C:\Program Files\FFmpeg\lib
|
|
LIBPATH: ${{env.LIBPATH}};C:\Program Files\FFmpeg\lib
|
|
CFLAGS: -I/usr/local/include
|
|
LDFLAGS: -L/usr/local/lib
|
|
run: dotnet publish -r ${{matrix.runtime}} -c Release -o dist ${{env.PROJECT}}
|
|
- name: Compression output
|
|
shell: bash
|
|
run: |
|
|
assets=kyoo_${{matrix.artifact}}
|
|
if [[ "${{runner.os}}" == "Windows" ]]; then
|
|
cd dist
|
|
cp -r "/C/Program Files/FFmpeg/bin/." .
|
|
7z a "../$assets.zip"
|
|
else
|
|
rootgrp=$([ "${{runner.os}}" == "macOS" ] && echo wheel || echo root)
|
|
sudo chown -R root:$rootgrp dist
|
|
tar -C dist -czf "$assets.tar.gz" .
|
|
fi
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: kyoo_${{matrix.artifact}}
|
|
path: |
|
|
*.zip
|
|
*.tar.gz
|
|
|
|
windows_release:
|
|
name: Create windows release
|
|
runs-on: windows-latest
|
|
needs: build
|
|
if: github.ref == 'refs/heads/master'
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Download windows build
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: kyoo_windows
|
|
path: artifact
|
|
- name: Unzip windows files
|
|
run: mkdir dist_win && 7z x artifact/kyoo_windows.zip -odist_win
|
|
- name: Install Inno Setup
|
|
shell: cmd
|
|
run: |
|
|
curl -L https://jrsoftware.org/download.php/is.exe > innosetup.exe
|
|
innosetup.exe /VERYSILENT /SUPPRESSMSGBOXES /Log=log.txt || (cat log.txt && exit 1)
|
|
- name: Create windows installer
|
|
shell: bash
|
|
run: iscc -Dkyoo=$(realpath dist_win) -O./ -Fkyoo-windows deployment/kyoo-windows.iss
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: kyoo_windows_installer
|
|
path: ./kyoo-windows.exe
|
|
|
|
release:
|
|
name: Create debian, rpm & arch releases
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
if: github.ref == 'refs/heads/master'
|
|
env:
|
|
description: "A media browser"
|
|
version: v0.0.1 #${{ github.ref }}
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Download linux build
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: kyoo_linux
|
|
path: artifact
|
|
- name: Unzip the published files.
|
|
run: mkdir dist && tar -C dist -xzf artifact/kyoo_linux.tar.gz
|
|
- name: Create the package structure
|
|
run: |
|
|
sudo mkdir -p pkg/usr/lib/
|
|
sudo cp -r --no-preserve ownership dist pkg/usr/lib/kyoo
|
|
sudo install -Dm 644 deployment/kyoo.service -t pkg/usr/lib/systemd/system/
|
|
sudo install -Dm 644 deployment/kyoo.sysusers pkg/usr/lib/sysusers.d/kyoo.conf
|
|
sudo install -Dm 644 deployment/kyoo.tmpfiles pkg/usr/lib/tmpfiles.d/kyoo.conf
|
|
- name: Build debian package
|
|
uses: jiro4989/build-deb-action@v2
|
|
with:
|
|
package: kyoo
|
|
package_root: pkg
|
|
maintainer: Zoe Roux <zoe.roux@sdg.moe>
|
|
version: ${{env.version}}
|
|
depends: "libavutil-dev, libavcodec-dev, libavformat-dev"
|
|
arch: amd64
|
|
desc: ${{env.description}}
|
|
- name: Build rpm package
|
|
run: |
|
|
mkdir out
|
|
sudo rm -rf pkg/DEBIAN
|
|
rpmbuild -bb --buildroot $(pwd)/out --build-in-place --define "_rpmdir $(pwd)/rpm" deployment/kyoo.spec
|
|
- name: Prepare arch package
|
|
run: |
|
|
mkdir deployment/output
|
|
mv deployment/PKGBUILD.github deployment/PKGBUILD
|
|
cp -a pkg/usr deployment/output/usr
|
|
- uses: edlanglois/pkgbuild-action@v1
|
|
id: makepkg
|
|
with:
|
|
pkgdir: deployment
|
|
namcapDisable: true
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: kyoo_rpm
|
|
path: ./rpm/x86_64/*.rpm
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: kyoo_debian
|
|
path: ./*.deb
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: kyoo_arch
|
|
path: ${{steps.makepkg.outputs.pkgfile0}}
|
|
|
|
# new-version:
|
|
# if: startsWith(github.ref, 'refs/tags/v')
|
|
# runs-on: ubuntu-latest
|
|
|