Skip to content

Configure Renovate #804

Configure Renovate

Configure Renovate #804

Workflow file for this run

---
name: Build ffmpeg
on:
pull_request:
branches: [master]
types: [opened, synchronize, reopened]
push:
branches: [master]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
ffmpeg:
name: ffmpeg-${{ matrix.os_type }}-${{ matrix.arch }}
# https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
# https://trac.ffmpeg.org/wiki/CompilationGuide/macOS
# https://trac.ffmpeg.org/wiki/CompilationGuide/MinGW
strategy:
fail-fast: false # false to test all, true to fail entire job if any fail
matrix:
include:
- os_type: linux
os: ubuntu-20.04 # pinned until all platforms moved to 22.04
arch: x86_64
shell: bash
cmake_generator: Unix Makefiles
ffmpeg_extras: >-
--enable-amf
--enable-cuda
--enable-cuda_llvm
--enable-encoder=h264_amf,hevc_amf,av1_amf
--enable-encoder=h264_nvenc,hevc_nvenc,av1_nvenc
--enable-encoder=h264_vaapi,hevc_vaapi,av1_vaapi
--enable-encoder=h264_v4l2m2m
--enable-ffnvcodec
--enable-nvenc
--enable-v4l2_m2m
--enable-vaapi
- os_type: linux
os: ubuntu-20.04 # pinned until all platforms moved to 22.04
arch: aarch64
shell: bash
cmake_generator: Unix Makefiles
host: aarch64-linux-gnu
ffmpeg_extras: >-
--enable-amf
--enable-cuda
--enable-cuda_llvm
--enable-encoder=h264_amf,hevc_amf,av1_amf
--enable-encoder=h264_nvenc,hevc_nvenc,av1_nvenc
--enable-encoder=h264_vaapi,hevc_vaapi,av1_vaapi
--enable-encoder=h264_v4l2m2m
--enable-ffnvcodec
--enable-nvenc
--enable-v4l2_m2m
--enable-vaapi
- os_type: linux
os: ubuntu-20.04 # pinned until all platforms moved to 22.04
arch: powerpc64le
shell: bash
cmake_generator: Unix Makefiles
host: powerpc64le-linux-gnu
ffmpeg_extras: >-
--enable-amf
--enable-cuda
--enable-cuda_llvm
--enable-encoder=h264_amf,hevc_amf,av1_amf
--enable-encoder=h264_nvenc,hevc_nvenc,av1_nvenc
--enable-encoder=h264_vaapi,hevc_vaapi,av1_vaapi
--enable-encoder=h264_v4l2m2m
--enable-ffnvcodec
--enable-nvenc
--enable-v4l2_m2m
--enable-vaapi
- os_type: macos
os: macos-11
arch: x86_64
shell: bash
cmake_generator: Unix Makefiles # should be `Xcode` but that fails
ffmpeg_extras: >-
--enable-encoder=h264_videotoolbox,hevc_videotoolbox
--enable-videotoolbox
- os_type: macos
os: macos-11
arch: aarch64
shell: bash
cmake_generator: Unix Makefiles # should be `Xcode` but that fails
host: arm64-apple-macosx
ffmpeg_extras: >-
--enable-encoder=h264_videotoolbox,hevc_videotoolbox
--enable-videotoolbox
- os_type: windows
os: windows-2022
arch: x86_64
shell: msys2 {0}
cmake_generator: MSYS Makefiles
ffmpeg_extras: >-
--enable-amf
--enable-cuda
--enable-d3d11va
--enable-encoder=h264_amf,hevc_amf,av1_amf
--enable-encoder=h264_mf,hevc_mf
--enable-encoder=h264_nvenc,hevc_nvenc,av1_nvenc
--enable-encoder=h264_qsv,hevc_qsv,av1_qsv
--enable-ffnvcodec
--enable-libvpl
--enable-nvenc
--enable-mediafoundation
runs-on: ${{ matrix.os }}
defaults:
run:
shell: ${{ matrix.shell }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Checkout destination branch
uses: actions/checkout@v4
with:
ref: ffmpeg-${{ matrix.os_type }}-${{ matrix.arch }}
path: ffmpeg-${{ matrix.os_type }}-${{ matrix.arch }}
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of the personal token
fetch-depth: 0 # otherwise, will fail to push refs to dest repo
- name: Setup Dependencies Unix
if: ${{ matrix.os_type != 'windows' }}
run: |
echo "::group::dependencies prep"
if [[ ${{ matrix.os }} == "ubuntu-18.04" ]]; then
dist="bionic"
elif [[ ${{ matrix.os }} == "ubuntu-20.04" ]]; then
dist="focal"
elif [[ ${{ matrix.os }} == "ubuntu-22.04" ]]; then
dist="jammy"
fi
package_arch="amd64"
if [[ ${{ matrix.arch }} == "aarch64" ]]; then
package_arch="arm64"
elif [[ ${{ matrix.arch }} == "powerpc64le" ]]; then
package_arch="ppc64el"
fi
mirror="http://ports.ubuntu.com/ubuntu-ports"
extra_sources=$(cat <<- VAREOF
deb [arch=$package_arch] $mirror $dist main restricted
deb [arch=$package_arch] $mirror $dist-updates main restricted
deb [arch=$package_arch] $mirror $dist universe
deb [arch=$package_arch] $mirror $dist-updates universe
deb [arch=$package_arch] $mirror $dist multiverse
deb [arch=$package_arch] $mirror $dist-updates multiverse
deb [arch=$package_arch] $mirror $dist-backports main restricted universe multiverse
deb [arch=$package_arch] $mirror $dist-security main restricted
deb [arch=$package_arch] $mirror $dist-security universe
deb [arch=$package_arch] $mirror $dist-security multiverse
VAREOF
)
echo "::endgroup::"
if [[ ${{ matrix.os_type }} == "linux" ]]; then
echo "::group::linux dependencies"
if [[ ${{ matrix.os }} == "ubuntu-20.04" ]]; then
# activate mesa backport PPA to ensure ffmpeg builds with vaSyncBuffer()
# (via libva 2.9.0 or later)
sudo add-apt-repository ppa:kisak/turtle -y
fi
if [[ $package_arch != "amd64" ]]; then
# fix original sources
sudo sed -i -e "s#deb http#deb [arch=amd64] http#g" /etc/apt/sources.list
sudo dpkg --add-architecture $package_arch
echo "$extra_sources" | sudo tee -a /etc/apt/sources.list
echo "----"
sudo cat /etc/apt/sources.list
fi
sudo apt-get update -q && sudo apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
libass-dev \
libfreetype6-dev \
libgnutls28-dev \
libmp3lame-dev \
libnuma-dev \
libopus-dev \
libsdl2-dev \
libtool \
libvorbis-dev \
libxcb1-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
meson \
nasm \
ninja-build \
pkg-config \
texinfo \
wget \
yasm \
zlib1g-dev
if [[ ${{ matrix.arch }} == "powerpc64le" ]]; then
sudo apt-get -y install \
libva-dev:$package_arch \
libva2:$package_arch \
libva-drm2:$package_arch \
libdrm2:$package_arch \
libva-glx2:$package_arch \
libgl1:$package_arch \
libglx0:$package_arch \
libglx-mesa0:$package_arch \
libglapi-mesa:$package_arch \
libgl1-mesa-dri:$package_arch \
libdrm-amdgpu1:$package_arch \
libdrm-nouveau2:$package_arch \
libdrm-radeon1:$package_arch \
libva-wayland2:$package_arch \
libva-x11-2:$package_arch
else
sudo apt-get -y install \
libva-dev:$package_arch
fi
if [[ ${{ matrix.arch }} != "x86_64" ]]; then
sudo apt-get -y install \
binutils-${{ matrix.host }} \
g++-${{ matrix.host }} \
gcc-${{ matrix.host }}
fi
echo "::endgroup::"
elif [[ ${{ matrix.os_type }} == "macos" ]]; then
echo "::group::macos dependencies"
brew install \
automake \
fdk-aac \
git \
lame \
libass \
libtool \
libvorbis \
libvpx \
nasm \
opus \
pkg-config \
sdl \
shtool \
texi2html \
theora \
wget \
yasm \
xvid
echo "::endgroup::"
fi
- name: Setup Dependencies Windows
if: ${{ matrix.os_type == 'windows' }}
uses: msys2/setup-msys2@v2
with:
update: true
install: >-
wget
- name: Update Windows dependencies
if: ${{ matrix.os_type == 'windows' }}
shell: msys2 {0}
run: |
# download working binutils
wget https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-binutils-2.40-4-any.pkg.tar.zst
# install dependencies
pacman -U --noconfirm mingw-w64-x86_64-binutils-2.40-4-any.pkg.tar.zst
pacman -Syu --noconfirm --ignore=mingw-w64-x86_64-binutils \
diffutils \
git \
make \
pkg-config \
mingw-w64-x86_64-cmake \
mingw-w64-x86_64-gcc \
mingw-w64-x86_64-onevpl \
mingw-w64-x86_64-nasm
- name: Initialize Submodules
# libx265 has issues when using the recursive method of the first checkout action
# this is after `msys2/setup-msys2@v2` because `msys2` (default) shell is not available until then.
run: |
git submodule update --init --recursive
- name: Create Directories
id: root
run: |
echo "root_path=$PWD" >> $GITHUB_OUTPUT
mkdir -p ./bin ./ffmpeg_build ./ffmpeg_sources
- name: patch
working-directory: ffmpeg_sources/ffmpeg
run: |
git apply -v --ignore-whitespace ../../ffmpeg_patches/ffmpeg/01-amf-colorspace-v3.patch
git apply -v --ignore-whitespace ../../ffmpeg_patches/ffmpeg/02-idr-on-amf.patch
git apply -v --ignore-whitespace ../../ffmpeg_patches/ffmpeg/03-amfenc-disable-buffering.patch
git apply -v --ignore-whitespace ../../ffmpeg_patches/ffmpeg/04-mfenc-lowlatency.patch
git apply -v --ignore-whitespace ../../ffmpeg_patches/ffmpeg/05-amfenc-new-av1-usages.patch
- name: Setup cross compilation
id: cross
if: ${{ matrix.arch != 'x86_64' }}
run: |
TOOLCHAIN_DIR=${{ steps.root.outputs.root_path }}/cmake/toolchain/${{ matrix.arch }}-${{ matrix.os_type }}
echo "CMAKE_TOOLCHAIN_FILE=$TOOLCHAIN_DIR/crosscompile.cmake" >> $GITHUB_OUTPUT
if [[ ${{ matrix.os_type }} == 'linux' ]]; then
echo "CCPREFIX=/usr/bin/${{ matrix.host }}-" >> $GITHUB_OUTPUT
else
CFLAGS="-arch arm64 -target ${{ matrix.host }} -march=armv8-a+crc+crypto -mcpu=generic"
echo "CFLAGS=${CFLAGS}" >> $GITHUB_OUTPUT
echo "CXXFLAGS=-std=c++11 ${CFLAGS}" >> $GITHUB_OUTPUT
echo "LDFLAGS=-arch arm64 -march=armv8-a+crc+crypto -target ${{ matrix.host }} -lc++" >> $GITHUB_OUTPUT
fi
- name: amf
if: ${{ matrix.os_type != 'macos' }}
# https://ffmpeg.org/general.html#AMD-AMF_002fVCE
run: |
mkdir -p ./ffmpeg_build/include/AMF
cp -av "./ffmpeg_sources/AMF/amf/public/include/." "./ffmpeg_build/include/AMF"
- name: av1
working-directory: ffmpeg_sources/SVT-AV1/Build
env:
root_path: ${{ steps.root.outputs.root_path }}
CCPREFIX: ${{ steps.cross.outputs.CCPREFIX }}
run: |
echo "::group::configure extra flags for cross compilation"
extra_configure=""
if [[ ${{ matrix.arch }} != "x86_64" ]]; then
if [[ ${{ matrix.os_type }} == "macos" ]]; then
export CFLAGS="${{ steps.cross.outputs.CFLAGS }}"
export CXXFLAGS="${{ steps.cross.outputs.CXXFLAGS }}"
export LDFLAGS="${{ steps.cross.outputs.LDFLAGS }}"
fi
extra_configure=$(cat <<- VAREOF
-DCMAKE_TOOLCHAIN_FILE=${{ steps.cross.outputs.CMAKE_TOOLCHAIN_FILE }}
VAREOF
)
fi
echo "$extra_configure"
echo "::endgroup::"
echo "::group::configure"
PATH="$root_path/bin:$PATH" cmake -G "${{ matrix.cmake_generator }}" \
$extra_configure \
-DCMAKE_INSTALL_PREFIX="$root_path/ffmpeg_build" \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_APPS=OFF \
-DBUILD_DEC=OFF \
-DENABLE_AVX512=ON \
-DBUILD_SHARED_LIBS=OFF \
..
echo "::endgroup::"
echo "::group::make"
PATH="$root_path/bin:$PATH" make -j$(nproc || sysctl -n hw.logicalcpu)
echo "::endgroup::"
echo "::group::make install"
make install
echo "::endgroup::"
- name: libx264
env:
root_path: ${{ steps.root.outputs.root_path }}
CCPREFIX: ${{ steps.cross.outputs.CCPREFIX }}
working-directory: ffmpeg_sources/x264
run: |
echo "::group::configure options"
./configure --help || true # this command has a non zero exit status, but we should continue anyway
echo "::endgroup::"
echo "::group::configure extra flags for cross compilation"
extra_configure=""
if [[ ${{ matrix.os_type }} == "linux" && ${{ matrix.arch }} != "x86_64" ]]; then
extra_configure=$(cat <<- VAREOF
--host=${{ matrix.arch }}-${{ matrix.os_type }}
--cross-prefix=${CCPREFIX}
VAREOF
)
elif [[ ${{ matrix.os_type }} == "macos" && ${{ matrix.arch }} != "x86_64" ]]; then
export CC="clang"
export CFLAGS="${{ steps.cross.outputs.CFLAGS }}"
extra_configure=$(cat <<- VAREOF
--host=${{ matrix.arch }}-darwin
VAREOF
)
fi
echo "$extra_configure"
echo "::endgroup::"
echo "::group::configure"
PATH="$root_path/bin:$PATH" \
PKG_CONFIG_PATH="$root_path/ffmpeg_build/lib/pkgconfig" \
./configure \
$extra_configure \
--prefix="$root_path/ffmpeg_build" \
--bindir="$root_path/bin" \
--disable-cli \
--enable-static
echo "::endgroup::"
echo "::group::make"
PATH="$root_path/bin:$PATH" make -j$(nproc || sysctl -n hw.logicalcpu)
echo "::endgroup::"
echo "::group::make install"
make install
echo "::endgroup::"
- name: libx265
env:
root_path: ${{ steps.root.outputs.root_path }}
CCPREFIX: ${{ steps.cross.outputs.CCPREFIX }}
working-directory: ffmpeg_sources/x265_git
run: |
echo "::group::configure extra flags for cross compilation"
# not currently supported in `aarch64`
extra_configure="-DENABLE_HDR10_PLUS=1"
if [[ ${{ matrix.os_type }} == "linux" && ${{ matrix.arch }} != "x86_64" ]]; then
if [[ ${{ matrix.arch }} == "powerpc64le" ]]; then
extra_configure="-DCMAKE_TOOLCHAIN_FILE=${{ steps.cross.outputs.CMAKE_TOOLCHAIN_FILE }}"
else
extra_configure="-DCMAKE_TOOLCHAIN_FILE=build/${{ matrix.arch }}-${{ matrix.os_type }}/crosscompile.cmake"
fi
elif [[ ${{ matrix.os_type }} == "macos" && ${{ matrix.arch }} != "x86_64" ]]; then
export CFLAGS="${{ steps.cross.outputs.CFLAGS }}"
export CXXFLAGS="${{ steps.cross.outputs.CXXFLAGS }}"
extra_configure=$(cat <<- VAREOF
-DENABLE_ASSEMBLY=0
-DCMAKE_TOOLCHAIN_FILE=${{ steps.cross.outputs.CMAKE_TOOLCHAIN_FILE }}
VAREOF
)
fi
echo "$extra_configure"
echo "::endgroup::"
echo "::group::configure"
PATH="$root_path/bin:$PATH" cmake -G "${{ matrix.cmake_generator }}" \
$extra_configure \
-DCMAKE_INSTALL_PREFIX="$root_path/ffmpeg_build" \
-DENABLE_CLI=OFF \
-DENABLE_SHARED=OFF \
-DSTATIC_LINK_CRT=ON \
./source
echo "::endgroup::"
echo "::group::make"
PATH="$root_path/bin:$PATH" make -j$(nproc || sysctl -n hw.logicalcpu)
echo "::endgroup::"
echo "::group::make install"
make install
echo "::endgroup::"
- name: nvenc
id: nvenc
if: ${{ matrix.os_type != 'macos' }}
env:
root_path: ${{ steps.root.outputs.root_path }}
working-directory: ffmpeg_sources/nv-codec-headers
# https://trac.ffmpeg.org/wiki/HWAccelIntro#NVENC
run: |
echo "::group::patch Makefile"
# allow `PREFIX` to be overridden
sed -i 's/PREFIX =/PREFIX ?=/g' Makefile
echo "::endgroup::"
echo "::group::make"
PREFIX=$root_path/ffmpeg_build make -j$(nproc || sysctl -n hw.logicalcpu)
echo "::endgroup::"
echo "::group::make install"
PREFIX=$root_path/ffmpeg_build make install
echo "::endgroup::"
- name: ffmpeg
env:
root_path: ${{ steps.root.outputs.root_path }}
working-directory: ffmpeg_sources/ffmpeg
run: |
echo "::group::configure options"
./configure --help || true # this command has a non zero exit status, but we should continue anyway
echo "::endgroup::"
echo "::group::configure extra flags for cross compilation"
extra_configure=""
if [[ ${{ matrix.os_type }} == "linux" && ${{ matrix.arch }} != "x86_64" ]]; then
CCPREFIX=${{ steps.cross.outputs.CCPREFIX }}
extra_configure=$(cat <<- VAREOF
--arch=${{ matrix.arch }}
--cross-prefix=${CCPREFIX}
--enable-cross-compile
--target-os=${{ matrix.os_type }}
VAREOF
)
elif [[ ${{ matrix.os_type }} == "macos" && ${{ matrix.arch }} != "x86_64" ]]; then
export CFLAGS="${{ steps.cross.outputs.CFLAGS }}"
export CXXFLAGS="${{ steps.cross.outputs.CXXFLAGS }}"
export LDFLAGS="${{ steps.cross.outputs.LDFLAGS }}"
extra_configure=$(cat <<- VAREOF
--arch=${{ matrix.arch }}
--cc=clang
--cxx=clang++
--target-os=darwin
--enable-cross-compile
--disable-neon
VAREOF
)
fi
echo "$extra_configure"
echo "::endgroup::"
echo "::group::configure"
set +e # do not fail
PATH="$root_path/bin:$PATH" \
PKG_CONFIG_PATH="$root_path/ffmpeg_build/lib/pkgconfig:/usr/lib/${{ matrix.host }}/pkgconfig" \
./configure \
$extra_configure \
--prefix="$root_path/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$root_path/ffmpeg_build/include" \
--extra-ldflags="-L$root_path/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--bindir="$root_path/bin" \
--disable-all \
--disable-autodetect \
--disable-iconv \
--enable-avcodec \
--enable-encoder=libsvtav1 \
--enable-encoder=libx264,libx265 \
--enable-gpl \
--enable-libsvtav1 \
--enable-libx264 \
--enable-libx265 \
--enable-static \
--enable-swscale \
--pkg-config=pkg-config \
${{ matrix.ffmpeg_extras }} \
|| config_error=true
set -e # reset fail on error
echo "::endgroup::"
echo "::group::config error log"
cat ./ffbuild/config.log
if [ $config_error ]
then
exit -1
fi
echo "::endgroup::"
echo "::group::make"
PATH="$root_path/bin:$PATH" make -j$(nproc || sysctl -n hw.logicalcpu)
echo "::endgroup::"
echo "::group::make install"
make install
echo "::endgroup::"
echo "::group::copy license"
cp ./COPYING.GPLv2 $root_path/ffmpeg_build/LICENSE
echo "::endgroup::"
- name: cbs
env:
root_path: ${{ steps.root.outputs.root_path }}
run: |
mkdir -p build
cd build
echo "::group::configure extra flags for cross compilation"
extra_configure=""
if [[ ${{ matrix.arch }} != "x86_64" ]]; then
if [[ ${{ matrix.os_type }} == "macos" ]]; then
export CFLAGS="${{ steps.cross.outputs.CFLAGS }}"
export CXXFLAGS="${{ steps.cross.outputs.CXXFLAGS }}"
export LDFLAGS="${{ steps.cross.outputs.LDFLAGS }}"
fi
extra_configure=$(cat <<- VAREOF
-DCMAKE_TOOLCHAIN_FILE=${{ steps.cross.outputs.CMAKE_TOOLCHAIN_FILE }}
VAREOF
)
fi
echo "$extra_configure"
echo "::endgroup::"
echo "::group::configure"
PATH="$root_path/bin:$PATH" cmake -G "${{ matrix.cmake_generator }}" \
$extra_configure \
-DCMAKE_INSTALL_PREFIX="$root_path/ffmpeg_build" \
-DFFMPEG_CBS=ON \
..
echo "::endgroup::"
echo "::group::make"
PATH="$root_path/bin:$PATH" make -j$(nproc || sysctl -n hw.logicalcpu)
echo "::endgroup::"
echo "::group::make install"
make install
echo "::endgroup::"
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: ffmpeg-${{ matrix.os_type }}-${{ matrix.arch }}
path: |
./ffmpeg_build/
- name: Get current date
id: date
run: |
echo "date=$(date +'%Y-%m-%d')"
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Prepare dependency branch
run: |
echo "::group::cleanup build"
rm -f -r ./ffmpeg_build/share
rm -f -r ./ffmpeg_build/lib/pkgconfig
echo "::endgroup::"
echo "::group::empty contents"
rm -f -r ./ffmpeg-${{ matrix.os_type }}-${{ matrix.arch }}/*
echo "::endgroup::"
echo "::group::copy build back to dependency branch"
cp -f -r ./ffmpeg_build/. ./ffmpeg-${{ matrix.os_type }}-${{ matrix.arch }}/
echo "::endgroup::"
- name: Commit build
if: >-
github.ref == 'refs/heads/master' &&
(github.event_name == 'push' || github.event_name == 'workflow_dispatch')
uses: actions-js/[email protected]
with:
github_token: ${{ secrets.GH_BOT_TOKEN }}
author_email: ${{ secrets.GH_BOT_EMAIL }}
author_name: ${{ secrets.GH_BOT_NAME }}
directory: ffmpeg-${{ matrix.os_type }}-${{ matrix.arch }}
branch: ffmpeg-${{ matrix.os_type }}-${{ matrix.arch }}
force: false
message: update-${{ steps.date.outputs.date }}
update_sunshine:
if: >-
startsWith(github.repository, 'LizardByte/') &&
github.ref == 'refs/heads/master' && github.event_name == 'push'
runs-on: ubuntu-latest
needs: [ffmpeg]
env:
update_branch: update/ffmpeg-submodules
submodule_dir: third-party
steps:
- name: Checkout Sunshine
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/Sunshine
submodules: recursive
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of the personal token
fetch-depth: 0 # otherwise, will fail to push refs to dest repo
- name: Update submodules
run: |
# list of submodules
SUBMODULES=$(cat <<- VAREOF
ffmpeg-linux-aarch64
ffmpeg-linux-powerpc64le
ffmpeg-linux-x86_64
ffmpeg-macos-aarch64
ffmpeg-macos-x86_64
ffmpeg-windows-x86_64
VAREOF
)
echo "::group::git checkout"
git branch -d ${{ env.update_branch }} || true
git checkout -b ${{ env.update_branch }}
echo "::endgroup::"
echo "::group::update submodules"
for SUBMODULE in ${SUBMODULES}; do
# add submodules if it doesn't exist or update it
git submodule add -b ${SUBMODULE} \
${{ github.event.repository.svn_url }} ${{ env.submodule_dir }}/${SUBMODULE} || \
git submodule update --remote ${{ env.submodule_dir }}/${SUBMODULE}
done
echo "::endgroup::"
- name: git diff
id: git_diff
run: |
git_diff=$(git diff)
if [[ ${git_diff} == "" ]]; then
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Commit changes
# this if statement is probably useless as it will not push if working tree is clean
if: ${{ steps.git_diff.outputs.changed == 'true' }}
uses: actions-js/[email protected]
with:
repository: ${{ github.repository_owner }}/Sunshine
github_token: ${{ secrets.GH_BOT_TOKEN }}
author_email: ${{ secrets.GH_BOT_EMAIL }}
author_name: ${{ secrets.GH_BOT_NAME }}
directory: .
branch: ${{ env.update_branch }}
force: true
message: Bump ffmpeg
# todo - this action is archived, they recommend using gh cli
- name: Create Pull Request
if: ${{ steps.git_diff.outputs.changed == 'true' }}
uses: repo-sync/pull-request@v2
with:
destination_repository: ${{ github.repository_owner }}/Sunshine
source_branch: ${{ env.update_branch }}
destination_branch: nightly # todo - change to master after default branch is changed in Sunshine
pr_title: "Bump ffmpeg"
pr_body: |
Bump ffmpeg with changes from ${{ github.repository }}
pr_assignee: ${{ secrets.GH_BOT_NAME }}
pr_draft: false
pr_label: "dependencies,submodules"
pr_allow_empty: false
github_token: ${{ secrets.GH_BOT_TOKEN }}