Microsoft took this link down. It's still up on web.archive.org, but it might not be necessary anyway since now we compile our own deps. Going to try without it.
390 lines
13 KiB
YAML
390 lines
13 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '.github/ISSUE_TEMPLATE/**'
|
|
- '.github/FUNDING.yml'
|
|
- 'docker/**'
|
|
- 'CONTRIBUTING.md'
|
|
- 'README.md'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '.github/ISSUE_TEMPLATE/**'
|
|
- '.github/FUNDING.yml'
|
|
- 'docker/**'
|
|
- 'CONTRIBUTING.md'
|
|
- 'README.md'
|
|
|
|
env:
|
|
DOWNLOAD_TOOL: curl -fLOSs --retry 2 --retry-delay 60
|
|
UPLOAD_TOOL: curl -X POST --retry 2 --retry-delay 60
|
|
|
|
jobs:
|
|
linux:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- build-type: RelWithDebInfo
|
|
cc-compiler: gcc
|
|
cxx-compiler: g++
|
|
compiler-name: GCC 9.3.1
|
|
cmake-gen: Ninja
|
|
os-name: Linux (CentOS 7)
|
|
- build-type: RelWithDebInfo
|
|
cc-compiler: clang
|
|
cxx-compiler: clang++
|
|
compiler-name: Clang 10.0.0
|
|
cmake-gen: Ninja
|
|
os-name: Linux (CentOS 7)
|
|
name: |
|
|
${{ matrix.os-name }}
|
|
<${{ matrix.compiler-name }},
|
|
${{ matrix.build-type }},
|
|
${{ matrix.cmake-gen }}>
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: olivevideoeditor/ci-olive:2021.3
|
|
|
|
steps:
|
|
- name: Checkout Source Code
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Configure CMake
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake .. -G "${{ matrix.cmake-gen }}" \
|
|
-DCMAKE_BUILD_TYPE="${{ matrix.build-type }}" \
|
|
-DCMAKE_C_COMPILER="${{ matrix.cc-compiler }}" \
|
|
-DCMAKE_CXX_COMPILER="${{ matrix.cxx-compiler }}"
|
|
|
|
- name: Build
|
|
working-directory: build
|
|
run: |
|
|
cmake --build .
|
|
|
|
- name: Test
|
|
working-directory: build
|
|
run: |
|
|
ctest -C ${{ matrix.build-type }}
|
|
|
|
- name: Create Package
|
|
id: package
|
|
working-directory: build
|
|
env:
|
|
ARCH: x86_64
|
|
run: |
|
|
# Create install tree
|
|
cmake --install app --prefix appdir/usr
|
|
|
|
# Inject custom AppRun (linuxdeployqt won't replace if it already exists)
|
|
cp $GITHUB_WORKSPACE/app/packaging/linux/AppRun appdir
|
|
|
|
# Process AppDir
|
|
/usr/local/linuxdeployqt-x86_64.AppImage \
|
|
appdir/usr/share/applications/org.olivevideoeditor.Olive.desktop \
|
|
-exclude-libs=libQt5Pdf.so,libQt5Qml.so,libQt5QmlModels.so,libQt5Quick.so,libQt5VirtualKeyboard.so \
|
|
-bundle-non-qt-libs \
|
|
-executable=appdir/usr/bin/crashpad_handler \
|
|
-executable=appdir/usr/bin/minidump_stackwalk \
|
|
-executable=appdir/usr/bin/olive-crashhandler \
|
|
--appimage-extract-and-run
|
|
|
|
# Dump Crashpad symbols
|
|
dump_syms appdir/usr/bin/olive-editor > olive-editor.sym
|
|
# HACK: For some reason, minidump_stackwalk reads identifier as all 0s
|
|
SYM_DIR=appdir/usr/share/olive-editor/symbols/olive-editor/000000000000000000000000000000000
|
|
mkdir -p "$SYM_DIR"
|
|
mv olive-editor.sym "$SYM_DIR"
|
|
|
|
# Package AppImage
|
|
$DOWNLOAD_TOOL https://github.com/AppImage/AppImageKit/releases/download/12/appimagetool-x86_64.AppImage
|
|
chmod +x appimagetool-x86_64.AppImage
|
|
VERSION=${GITHUB_SHA::8} ./appimagetool-x86_64.AppImage appdir --appimage-extract-and-run
|
|
|
|
# Set env variables
|
|
filename=$(echo Olive*.AppImage)
|
|
pkgname="${filename/x86_64/Linux-x86_64}"
|
|
mv "${filename}" "${pkgname}"
|
|
echo "::set-output name=pkgname::${pkgname}"
|
|
echo "::set-output name=artifact::${filename/x86_64/Linux-x86_64-${{ matrix.cc-compiler }}}"
|
|
|
|
- name: Upload Artifact to GitHub
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: ${{ steps.package.outputs.artifact }}
|
|
path: build/Olive*.AppImage
|
|
|
|
- name: Upload Packages to Nightly Page
|
|
working-directory: build
|
|
env:
|
|
GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }}
|
|
PKGNAME: ${{ steps.package.outputs.pkgname }}
|
|
if: github.event_name == 'push' && matrix.cc-compiler == 'gcc'
|
|
run: |
|
|
$UPLOAD_TOOL \
|
|
-F file="@$PKGNAME" \
|
|
-F key="$GH_AUTH_KEY" \
|
|
-F hash="$GITHUB_SHA" \
|
|
-F time="$(git show -s --format=%ct)" \
|
|
-F comment="$(git show -s --format=%B)" \
|
|
https://ci.olivevideoeditor.org/push.php
|
|
|
|
windows:
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- build-type: RelWithDebInfo
|
|
compiler-name: MSVC 16.x
|
|
os-name: Windows
|
|
os-arch: x86_64
|
|
os: windows-latest
|
|
cmake-gen: Ninja
|
|
name: |
|
|
${{ matrix.os-name }}
|
|
<${{ matrix.compiler-name }},
|
|
${{ matrix.build-type }},
|
|
${{ matrix.cmake-gen }}>
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout Source Code
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Automatically Generate Package Name
|
|
shell: bash
|
|
env:
|
|
PLATFORM: ${{ matrix.os-name }}
|
|
ARCH: ${{ matrix.os-arch }}
|
|
run: |
|
|
echo "PKGNAME=$(echo Olive-${GITHUB_SHA::8}-${PLATFORM}-${ARCH})" >> $GITHUB_ENV
|
|
|
|
- name: Create Build Folder
|
|
run: |
|
|
cmake -E make_directory ${{ runner.workspace }}/build
|
|
|
|
- name: Enable Developer Command Prompt (Windows)
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
|
|
- name: Acquire Dependencies
|
|
shell: bash
|
|
working-directory: ${{ runner.workspace }}
|
|
run: |
|
|
$DOWNLOAD_TOOL https://github.com/olive-editor/dependencies/releases/download/continuous/olive-dep-win32.tar.gz
|
|
tar xzf olive-dep-win32.tar.gz
|
|
|
|
- name: Configure CMake
|
|
shell: bash
|
|
env:
|
|
DEP_LOCATION: ${{ runner.workspace }}/install
|
|
working-directory: ${{ runner.workspace }}/build
|
|
run: |
|
|
PATH=$DEP_LOCATION:$DEP_LOCATION/crashpad:$PATH \
|
|
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -G "${{ matrix.cmake-gen }}"
|
|
|
|
- name: Build
|
|
working-directory: ${{ runner.workspace }}/build
|
|
shell: bash
|
|
run: |
|
|
cmake --build .
|
|
|
|
- name: Test
|
|
working-directory: ${{ runner.workspace }}/build
|
|
shell: bash
|
|
env:
|
|
DEP_LOCATION: ${{ runner.workspace }}/install
|
|
run: |
|
|
PATH=$PATH:$DEP_LOCATION/bin ctest -C ${{ matrix.build-type }}
|
|
|
|
- name: Create Package
|
|
working-directory: ${{ runner.workspace }}/build
|
|
shell: bash
|
|
env:
|
|
DEP_LOCATION: ${{ runner.workspace }}/install
|
|
run: |
|
|
mkdir olive-editor
|
|
cp app/olive-editor.exe olive-editor
|
|
cp app/crashhandler/olive-crashhandler.exe olive-editor
|
|
cp app/olive-editor.pdb olive-editor
|
|
$DEP_LOCATION/bin/windeployqt olive-editor/olive-crashhandler.exe
|
|
$DEP_LOCATION/bin/windeployqt olive-editor/olive-editor.exe
|
|
cp $(cygpath $DEP_LOCATION)/bin/*.dll olive-editor
|
|
cp $(cygpath $DEP_LOCATION)/crashpad/out/Default/crashpad_handler.exe olive-editor
|
|
cp $(cygpath $DEP_LOCATION)/bin/minidump_stackwalk.exe olive-editor
|
|
|
|
- name: Export Crashpad symbols
|
|
working-directory: ${{ runner.workspace }}/build
|
|
shell: bash
|
|
run: |
|
|
curl -fLSs https://github.com/google/breakpad/blob/master/src/tools/windows/binaries/dump_syms.exe?raw=true > dump_syms.exe
|
|
./dump_syms app/olive-editor.pdb > olive-editor.sym
|
|
SYM_HEADER=($(head -n 1 olive-editor.sym)) # Read first line of symbol file
|
|
SYM_DIR=olive-editor/symbols/olive-editor.pdb/${SYM_HEADER[3]}
|
|
mkdir -p "$SYM_DIR"
|
|
mv olive-editor.sym "$SYM_DIR"
|
|
|
|
- name: Deploy Packages
|
|
working-directory: ${{ runner.workspace }}/build
|
|
shell: bash
|
|
run: |
|
|
# Create Installer Executable
|
|
#$DOWNLOAD_TOOL http://web.archive.org/web/20210226132532/http://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe
|
|
cp $(cygpath $GITHUB_WORKSPACE)/app/packaging/windows/nsis/* .
|
|
cp $(cygpath $GITHUB_WORKSPACE)/LICENSE .
|
|
$DOWNLOAD_TOOL https://nsis.sourceforge.io/mediawiki/images/c/c7/ShellExecAsUser.zip
|
|
7z x ShellExecAsUser.zip ShellExecAsUser.dll
|
|
makensis -V4 -DX64 "-XOutFile $PKGNAME.exe" "-X!AddPluginDir $(pwd -W)" olive.nsi
|
|
|
|
# Create Portable ZIP
|
|
echo -n > olive-editor/portable
|
|
7z a $PKGNAME.zip olive-editor
|
|
|
|
- name: Upload Installer Artifact to GitHub
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: ${{ env.PKGNAME }}.exe
|
|
path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.exe
|
|
|
|
- name: Upload Portable Artifact to GitHub
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: ${{ env.PKGNAME }}.zip
|
|
path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.zip
|
|
|
|
- name: Upload Packages to Nightly Page
|
|
shell: bash
|
|
working-directory: ${{ runner.workspace }}/build
|
|
env:
|
|
GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }}
|
|
if: github.event_name == 'push'
|
|
run: |
|
|
$UPLOAD_TOOL \
|
|
-F file=@$PKGNAME.exe \
|
|
-F key="$GH_AUTH_KEY" \
|
|
-F hash="$GITHUB_SHA" \
|
|
-F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \
|
|
-F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \
|
|
https://ci.olivevideoeditor.org/push.php
|
|
|
|
$UPLOAD_TOOL \
|
|
-F file=@$PKGNAME.zip \
|
|
-F key="$GH_AUTH_KEY" \
|
|
-F hash="$GITHUB_SHA" \
|
|
-F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \
|
|
-F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \
|
|
https://ci.olivevideoeditor.org/push.php
|
|
|
|
macos:
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- build-type: RelWithDebInfo
|
|
compiler-name: Clang LLVM
|
|
os-name: macOS
|
|
os-arch: x86_64
|
|
os: macos-latest
|
|
cmake-gen: Ninja
|
|
env:
|
|
DEP_LOCATION: /opt/olive-editor
|
|
name: |
|
|
${{ matrix.os-name }}
|
|
<${{ matrix.compiler-name }},
|
|
${{ matrix.build-type }},
|
|
${{ matrix.cmake-gen }}>
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout Source Code
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Automatically Generate Package Name
|
|
shell: bash
|
|
env:
|
|
PLATFORM: ${{ matrix.os-name }}
|
|
ARCH: ${{ matrix.os-arch }}
|
|
run: |
|
|
echo "PKGNAME=$(echo Olive-${GITHUB_SHA::8}-${PLATFORM}-${ARCH})" >> $GITHUB_ENV
|
|
|
|
- name: Create Build Folder
|
|
run: |
|
|
cmake -E make_directory ${{ runner.workspace }}/build
|
|
|
|
- name: Acquire Dependencies
|
|
shell: bash
|
|
working-directory: ${{ runner.workspace }}
|
|
run: |
|
|
$DOWNLOAD_TOOL https://github.com/olive-editor/dependencies/releases/download/continuous/olive-dep-mac-x86_64.tar.gz
|
|
sudo tar xzf olive-dep-mac-x86_64.tar.gz -C /
|
|
|
|
- name: Configure CMake
|
|
shell: bash
|
|
working-directory: ${{ runner.workspace }}/build
|
|
run: |
|
|
brew install ninja
|
|
PATH=$DEP_LOCATION:$DEP_LOCATION/crashpad:$PATH \
|
|
cmake $GITHUB_WORKSPACE -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -G "${{ matrix.cmake-gen }}" -DCMAKE_INSTALL_PREFIX=$DEP_LOCATION
|
|
|
|
- name: Build
|
|
working-directory: ${{ runner.workspace }}/build
|
|
shell: bash
|
|
run: |
|
|
cmake --build .
|
|
|
|
- name: Test
|
|
working-directory: ${{ runner.workspace }}/build
|
|
shell: bash
|
|
run: |
|
|
ctest -C ${{ matrix.build-type }}
|
|
|
|
- name: Create Package
|
|
working-directory: ${{ runner.workspace }}/build
|
|
env:
|
|
BUNDLE_NAME: "Olive.app"
|
|
shell: bash
|
|
run: |
|
|
# Use macdeployqt and macdeployqt to bundle dependencies
|
|
mv app/$BUNDLE_NAME .
|
|
$DEP_LOCATION/bin/macdeployqt $BUNDLE_NAME -executable=$BUNDLE_NAME/Contents/MacOS/olive-crashhandler
|
|
$DOWNLOAD_TOOL https://github.com/arl/macdeployqtfix/raw/master/macdeployqtfix.py
|
|
python2 macdeployqtfix.py $BUNDLE_NAME/Contents/MacOS/Olive $DEP_LOCATION
|
|
|
|
# Crashpad symbols
|
|
$DEP_LOCATION/bin/dump_syms $BUNDLE_NAME/Contents/MacOS/Olive > Olive.sym
|
|
SYM_HEADER=($(head -n 1 Olive.sym)) # Read first line of symbol file
|
|
SYM_DIR=$BUNDLE_NAME/Contents/Resources/symbols/Olive/${SYM_HEADER[3]}
|
|
mkdir -p "$SYM_DIR"
|
|
mv Olive.sym "$SYM_DIR"
|
|
|
|
- name: Deploy Packages
|
|
working-directory: ${{ runner.workspace }}/build
|
|
shell: bash
|
|
run: |
|
|
zip -r $PKGNAME.zip Olive.app
|
|
|
|
- name: Upload Artifact to GitHub
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: ${{ env.PKGNAME }}.zip
|
|
path: ${{ runner.workspace }}/build/${{ env.PKGNAME }}.zip
|
|
|
|
- name: Upload Packages to Nightly Page
|
|
shell: bash
|
|
working-directory: ${{ runner.workspace }}/build
|
|
env:
|
|
GH_AUTH_KEY: ${{ secrets.GH_AUTH_KEY }}
|
|
if: github.event_name == 'push'
|
|
run: |
|
|
$UPLOAD_TOOL \
|
|
-F file=@$PKGNAME.zip \
|
|
-F key="$GH_AUTH_KEY" \
|
|
-F hash="$GITHUB_SHA" \
|
|
-F time="$(git -C $GITHUB_WORKSPACE show -s --format=%ct)" \
|
|
-F comment="$(git -C $GITHUB_WORKSPACE show -s --format=%B)" \
|
|
https://ci.olivevideoeditor.org/push.php
|