From 0df63cb0af66e98ba4a58bc54462ba9cb6f2fb82 Mon Sep 17 00:00:00 2001 From: Michael Fabian 'Xaymar' Dirks Date: Wed, 30 Oct 2019 09:57:17 +0100 Subject: [PATCH 1/3] ci: Add packaging and artifacts to Github Actions Github Actions is going to replace AppVeyor in the long term for all release archives, simply because it integrates better with GitHub. --- .github/workflows/main.yml | 26 ++++++++++++++++++-------- ci/builder.js | 13 +++++-------- ci/packager.js | 32 +++++++++++++++++++------------- 3 files changed, 42 insertions(+), 29 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 438da76..f012c6b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,32 +3,42 @@ name: CI on: [push, pull_request] jobs: - build: + windows: strategy: matrix: os: [windows-2016, windows-2019] include: - os: windows-2016 generator_32: "Visual Studio 15 2017" - generator_64: "Visual Studio 15 2017 Win64" + generator_64: "Visual Studio 15 2017" sysversion: "10.0.17763.0" - os: windows-2019 - generator_32: + generator_32: "Visual Studio 16 2019" generator_64: "Visual Studio 16 2019" sysversion: "10.0.18362.0" runs-on: ${{ matrix.os }} steps: - - name: Clone Repository - uses: actions/checkout@v1 - - name: Update Submodules - run: git submodule update --init --force --recursive + - name: "Clone Repository" + uses: actions/checkout@v1 - name: Install Node.JS 10.x uses: actions/setup-node@v1 with: node-version: 10 - - name: Build + - name: Configure & Compile env: CMAKE_GENERATOR_32: ${{ matrix.generator_32 }} CMAKE_GENERATOR_64: ${{ matrix.generator_64 }} CMAKE_SYSTEM_VERSION: ${{ matrix.sysversion }} run: node ./ci/builder.js + - name: Package + env: + CMAKE_GENERATOR_32: ${{ matrix.generator_32 }} + CMAKE_GENERATOR_64: ${{ matrix.generator_64 }} + run: | + mkdir build/package + node ./ci/packager.js + - name: "Upload Artifacts" + uses: actions/upload-artifact@v1 + with: + name: ${{ matrix.os }} + path: build/package diff --git a/ci/builder.js b/ci/builder.js index 50cc7a9..a873a79 100644 --- a/ci/builder.js +++ b/ci/builder.js @@ -13,7 +13,7 @@ if ((process.platform == "win32") || (process.platform == "win64")) { `-DCMAKE_SYSTEM_VERSION=${process.env.CMAKE_SYSTEM_VERSION}`, `-DCMAKE_PACKAGE_NAME=obs-ffmpeg-encoder`, '-DCMAKE_INSTALL_PREFIX="build/distrib/"', - '-DCMAKE_PACKAGE_PREFIX="build/"', + '-DCMAKE_PACKAGE_PREFIX="build/package/"', ]; let extra_build = [ @@ -26,9 +26,8 @@ if ((process.platform == "win32") || (process.platform == "win64")) { if ((process.env.CMAKE_GENERATOR_32 !== undefined) && (process.env.CMAKE_GENERATOR_32 !== "")) { x32_steps.push( [ 'cmake', [ - '-H.', - '-Bbuild/32', - `-G"${process.env.CMAKE_GENERATOR_32}"`, + '-H.', '-Bbuild/32', + `-G"${process.env.CMAKE_GENERATOR_32}"`, '-AWin32', '-T"host=x64"', ].concat(extra_conf), env ] ); x32_steps.push( @@ -42,10 +41,8 @@ if ((process.platform == "win32") || (process.platform == "win64")) { if ((process.env.CMAKE_GENERATOR_64 !== undefined) && (process.env.CMAKE_GENERATOR_64 !== "")) { x64_steps.push( [ 'cmake', [ - '-H.', - '-Bbuild/64', - `-G"${process.env.CMAKE_GENERATOR_64}"`, - '-T"host=x64"' + '-H.', '-Bbuild/64', + `-G"${process.env.CMAKE_GENERATOR_64}"`, '-Ax64', '-T"host=x64"', ].concat(extra_conf), env ] ); x64_steps.push( diff --git a/ci/packager.js b/ci/packager.js index efb2ae8..e73becb 100644 --- a/ci/packager.js +++ b/ci/packager.js @@ -2,20 +2,8 @@ const process = require('process'); const runner = require('./runner.js'); - -function runRunners(runnerArray, name) { - return new Promise(async (resolve, reject) => { - let local = runnerArray.reverse(); - while (local.length > 0) { - let task = local.pop(); - let work = new runner(name, task[0], task[1], task[2]); - await work.run(); - } - resolve(0); - }); -} - let env = process.env; + let steps = []; if ((process.env.CMAKE_GENERATOR_64 !== undefined) && (process.env.CMAKE_GENERATOR_64 !== "")) { @@ -50,6 +38,24 @@ if ((process.env.CMAKE_GENERATOR_64 !== undefined) && (process.env.CMAKE_GENERAT ); } +function runRunners(runnerArray, name) { + return new Promise(async (resolve, reject) => { + let local = runnerArray.reverse(); + while (local.length > 0) { + try { + let task = local.pop(); + let work = new runner(name, task[0], task[1], task[2]); + await work.run(); + } catch (e) { + reject(e); + return; + } + } + resolve(0); + }); +} + + let promises = []; promises.push(runRunners(steps, "32-Bit")); Promise.all(promises).then( -- 2.52.0 From 65bf265badf7de3007024b1d913847230a9a1388 Mon Sep 17 00:00:00 2001 From: Michael Fabian 'Xaymar' Dirks Date: Wed, 30 Oct 2019 11:16:26 +0100 Subject: [PATCH 2/3] ci: Also build InnoSetup installer on Github Actions --- .github/workflows/main.yml | 9 ++++++++- CMakeLists.txt | 9 +++++++++ cmake/installer.iss.in | 6 +++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f012c6b..854d073 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,8 +37,15 @@ jobs: run: | mkdir build/package node ./ci/packager.js + - name: "Package Installer (Prereqs)" + run: | + curl "-kL" "https://cdn.xaymar.com/ci/innosetup-6.0.3.exe" "-f" "--retry" "5" "-o" "inno.exe" + .\inno.exe /VERYSILENT /SP- /SUPPRESSMSGBOXES /NORESTART + - name: "Package Installer (Compile)" + run: | + & 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe' /Qp ".\build\64\installer.iss" - name: "Upload Artifacts" uses: actions/upload-artifact@v1 with: name: ${{ matrix.os }} - path: build/package + path: build/package \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 8354103..f2cb83d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,18 +116,27 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/") configure_file( "${PROJECT_SOURCE_DIR}/cmake/version.hpp.in" "${PROJECT_BINARY_DIR}/source/version.hpp" + @ONLY ) configure_file( "${PROJECT_SOURCE_DIR}/cmake/module.cpp.in" "${PROJECT_BINARY_DIR}/source/module.cpp" + @ONLY ) # Windows if (WIN32) ## Installer (InnoSetup) + get_filename_component(ISS_FILES_DIR "${CMAKE_INSTALL_PREFIX}" ABSOLUTE) + file(TO_NATIVE_PATH "${ISS_FILES_DIR}" ISS_FILES_DIR) + get_filename_component(ISS_PACKAGE_DIR "${CMAKE_PACKAGE_PREFIX}" ABSOLUTE) + file(TO_NATIVE_PATH "${ISS_PACKAGE_DIR}" ISS_PACKAGE_DIR) + get_filename_component(ISS_SOURCE_DIR "${PROJECT_SOURCE_DIR}" ABSOLUTE) + file(TO_NATIVE_PATH "${ISS_SOURCE_DIR}" ISS_SOURCE_DIR) configure_file( "${PROJECT_SOURCE_DIR}/cmake/installer.iss.in" "${PROJECT_BINARY_DIR}/installer.iss" + @ONLY ) # Windows Specific Resource Definition diff --git a/cmake/installer.iss.in b/cmake/installer.iss.in index 45ed283..680ce5e 100644 --- a/cmake/installer.iss.in +++ b/cmake/installer.iss.in @@ -21,8 +21,8 @@ AppUpdatesURL={#MyAppURL} DefaultDirName={code:GetDirName} DefaultGroupName={#MyAppName} AllowNoIcons=yes -LicenseFile="@PROJECT_SOURCE_DIR@/LICENSE" -OutputDir="@CMAKE_INSTALL_PREFIX@/../" +LicenseFile="@ISS_SOURCE_DIR@/LICENSE" +OutputDir="@ISS_PACKAGE_DIR@" OutputBaseFilename=obs-ffmpeg-encoder-{#MyAppVersion} Compression=lzma SolidCompression=yes @@ -34,7 +34,7 @@ VersionInfoDescription={#MyAppName} Setup Name: "english"; MessagesFile: "compiler:Default.isl" [Files] -Source: "@CMAKE_INSTALL_PREFIX@/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "@ISS_FILES_DIR@/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] -- 2.52.0 From 0b403d4d3933c38f66d196d96f336341bbf19137 Mon Sep 17 00:00:00 2001 From: Michael Fabian 'Xaymar' Dirks Date: Thu, 31 Oct 2019 05:27:24 +0100 Subject: [PATCH 3/3] ci: Remove AppVeyor scripts --- appveyor.yml | 74 ----------------------------------------- ci/appveyor-install.bat | 9 ----- ci/appveyor-package.bat | 3 -- 3 files changed, 86 deletions(-) delete mode 100644 appveyor.yml delete mode 100644 ci/appveyor-install.bat delete mode 100644 ci/appveyor-package.bat diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 439a9bc..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,74 +0,0 @@ -# Generic Settings -version: '{build}-{branch}' - -matrix: - fast_finish: true - -# Build Image & Environment -platform: x64 - -# Build Tags only -skip_non_tags: true - -image: - - Visual Studio 2017 - -environment: - CMAKE_SYSTEM_VERSION: 10.0.17134.0 - CMAKE_GENERATOR_32: "Visual Studio 15 2017" - CMAKE_GENERATOR_64: "Visual Studio 15 2017 Win64" - PACKAGE_PREFIX: obs-ffmpeg-encoder - INNOSETUP_URL: http://www.jrsoftware.org/download.php/is.exe - CURL_VERSION: 7.39.0 - -# Resource Cache -cache: - - inno.exe - - build/32/libobs-download - - build/32/libobs-src - - build/64/libobs-download - - build/64/libobs-src - -# Building -install: -- cmd: ci/appveyor-install.bat - -build_script: -- cmd: node ci/builder.js - -after_build: -- cmd: node ci/packager.js -- cmd: ci/appveyor-package.bat - -# Testing -test: off - -# Artifacts -artifacts: - - path: build/obs-ffmpeg-encoder-*.zip - - path: build/obs-ffmpeg-encoder-*.7z - - path: build/obs-ffmpeg-encoder-*.exe - -# Deploying -deploy: - - provider: GitHub - auth_token: - secure: diGN1FzupARljI1iJsiAdZHut8aXODkUC6YDDi2oDRikEp5Ic8kQd8SSRDyA4pAJ - draft: true - prerelease: false - force_update: true - on: - appveyor_repo_tag: true - -# Notifications -notifications: - - provider: Webhook - url: - secure: PTtt5ALhmK0q42jYyx4/Qa1Uf18+gLMXKGdzJjDISJt8IE/K0Zyp58UYmDDbbyLp4pBRf/Ylj8rn/zYL/mqBoDVRIH5zasPqIvBD0ZhtvNjTOxQ3QoRkAmxgpWeMowm3A3I1rLizA2H4EctPpoAJGrvQ1G2HEYn9tVsGYeetFTo= - on_build_success: false - on_build_failure: false - on_build_status_changed: true - body: >- - { - "content": "**Build {{status}}**: [{{commitId}}] {{commitMessage}}\nBy {{commitAuthor}} on {{commitDate}}\n{{buildUrl}}" - } diff --git a/ci/appveyor-install.bat b/ci/appveyor-install.bat deleted file mode 100644 index 0745982..0000000 --- a/ci/appveyor-install.bat +++ /dev/null @@ -1,9 +0,0 @@ -@ECHO OFF -git submodule update --init --force --recursive - -IF EXIST inno.exe ( - curl -kL "%INNOSETUP_URL%" -f --retry 5 -o inno.exe -z inno.exe -) else ( - curl -kL "%INNOSETUP_URL%" -f --retry 5 -o inno.exe -) -inno.exe /VERYSILENT /NORETART /SP- /SUPPRESSMSGBOXES \ No newline at end of file diff --git a/ci/appveyor-package.bat b/ci/appveyor-package.bat deleted file mode 100644 index def1417..0000000 --- a/ci/appveyor-package.bat +++ /dev/null @@ -1,3 +0,0 @@ -@ECHO OFF -ECHO -- Building Installer -- -"C:\Program Files (x86)\Inno Setup 5\ISCC.exe" /Qp ".\build\64\installer.iss" > nul -- 2.52.0