Kyoo/.github/workflows/build.yml

139 lines
4.8 KiB
YAML

name: Build
on: [push, pull_request]
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 #ubuntu-16.04 # We are using an old version of ubuntu to have an old libc version (forward compatibility exist but not backward)
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 add-apt-repository -y "deb http://azure.archive.ubuntu.com/ubuntu groovy main multiverse restricted universe"
# sudo apt-get update -y
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: 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 Kyoo
- 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
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
- 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 mkdir -p pkg/DEBIAN
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
sudo install -Dm 755 deployment/postinst -t pkg/DEBIAN/
- uses: jiro4989/build-deb-action@v2
with:
package: kyoo
package_root: pkg
maintainer: Zoe Roux <zoe.roux@sdg.moe>
version: ${{env.version}}
depends: "postgresql, 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