Switch to Github Actions from AppVeyor #7
@@ -3,32 +3,49 @@ name: CI
|
|||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
windows:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [windows-2016, windows-2019]
|
os: [windows-2016, windows-2019]
|
||||||
include:
|
include:
|
||||||
- os: windows-2016
|
- os: windows-2016
|
||||||
generator_32: "Visual Studio 15 2017"
|
generator_32: "Visual Studio 15 2017"
|
||||||
generator_64: "Visual Studio 15 2017 Win64"
|
generator_64: "Visual Studio 15 2017"
|
||||||
sysversion: "10.0.17763.0"
|
sysversion: "10.0.17763.0"
|
||||||
- os: windows-2019
|
- os: windows-2019
|
||||||
generator_32:
|
generator_32: "Visual Studio 16 2019"
|
||||||
generator_64: "Visual Studio 16 2019"
|
generator_64: "Visual Studio 16 2019"
|
||||||
sysversion: "10.0.18362.0"
|
sysversion: "10.0.18362.0"
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Clone Repository
|
- name: "Clone Repository"
|
||||||
uses: actions/checkout@v1
|
uses: actions/checkout@v1
|
||||||
- name: Update Submodules
|
|
||||||
run: git submodule update --init --force --recursive
|
|
||||||
- name: Install Node.JS 10.x
|
- name: Install Node.JS 10.x
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 10
|
node-version: 10
|
||||||
- name: Build
|
- name: Configure & Compile
|
||||||
env:
|
env:
|
||||||
CMAKE_GENERATOR_32: ${{ matrix.generator_32 }}
|
CMAKE_GENERATOR_32: ${{ matrix.generator_32 }}
|
||||||
CMAKE_GENERATOR_64: ${{ matrix.generator_64 }}
|
CMAKE_GENERATOR_64: ${{ matrix.generator_64 }}
|
||||||
CMAKE_SYSTEM_VERSION: ${{ matrix.sysversion }}
|
CMAKE_SYSTEM_VERSION: ${{ matrix.sysversion }}
|
||||||
run: node ./ci/builder.js
|
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: "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
|
||||||
@@ -116,18 +116,27 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
|
|||||||
configure_file(
|
configure_file(
|
||||||
"${PROJECT_SOURCE_DIR}/cmake/version.hpp.in"
|
"${PROJECT_SOURCE_DIR}/cmake/version.hpp.in"
|
||||||
"${PROJECT_BINARY_DIR}/source/version.hpp"
|
"${PROJECT_BINARY_DIR}/source/version.hpp"
|
||||||
|
@ONLY
|
||||||
)
|
)
|
||||||
configure_file(
|
configure_file(
|
||||||
"${PROJECT_SOURCE_DIR}/cmake/module.cpp.in"
|
"${PROJECT_SOURCE_DIR}/cmake/module.cpp.in"
|
||||||
"${PROJECT_BINARY_DIR}/source/module.cpp"
|
"${PROJECT_BINARY_DIR}/source/module.cpp"
|
||||||
|
@ONLY
|
||||||
)
|
)
|
||||||
|
|
||||||
# Windows
|
# Windows
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
## Installer (InnoSetup)
|
## 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(
|
configure_file(
|
||||||
"${PROJECT_SOURCE_DIR}/cmake/installer.iss.in"
|
"${PROJECT_SOURCE_DIR}/cmake/installer.iss.in"
|
||||||
"${PROJECT_BINARY_DIR}/installer.iss"
|
"${PROJECT_BINARY_DIR}/installer.iss"
|
||||||
|
@ONLY
|
||||||
)
|
)
|
||||||
|
|
||||||
# Windows Specific Resource Definition
|
# Windows Specific Resource Definition
|
||||||
|
|||||||
@@ -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}}"
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
@ECHO OFF
|
|
||||||
ECHO -- Building Installer --
|
|
||||||
"C:\Program Files (x86)\Inno Setup 5\ISCC.exe" /Qp ".\build\64\installer.iss" > nul
|
|
||||||
+5
-8
@@ -13,7 +13,7 @@ if ((process.platform == "win32") || (process.platform == "win64")) {
|
|||||||
`-DCMAKE_SYSTEM_VERSION=${process.env.CMAKE_SYSTEM_VERSION}`,
|
`-DCMAKE_SYSTEM_VERSION=${process.env.CMAKE_SYSTEM_VERSION}`,
|
||||||
`-DCMAKE_PACKAGE_NAME=obs-ffmpeg-encoder`,
|
`-DCMAKE_PACKAGE_NAME=obs-ffmpeg-encoder`,
|
||||||
'-DCMAKE_INSTALL_PREFIX="build/distrib/"',
|
'-DCMAKE_INSTALL_PREFIX="build/distrib/"',
|
||||||
'-DCMAKE_PACKAGE_PREFIX="build/"',
|
'-DCMAKE_PACKAGE_PREFIX="build/package/"',
|
||||||
];
|
];
|
||||||
let extra_build = [
|
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 !== "")) {
|
if ((process.env.CMAKE_GENERATOR_32 !== undefined) && (process.env.CMAKE_GENERATOR_32 !== "")) {
|
||||||
x32_steps.push(
|
x32_steps.push(
|
||||||
[ 'cmake', [
|
[ 'cmake', [
|
||||||
'-H.',
|
'-H.', '-Bbuild/32',
|
||||||
'-Bbuild/32',
|
`-G"${process.env.CMAKE_GENERATOR_32}"`, '-AWin32', '-T"host=x64"',
|
||||||
`-G"${process.env.CMAKE_GENERATOR_32}"`,
|
|
||||||
].concat(extra_conf), env ]
|
].concat(extra_conf), env ]
|
||||||
);
|
);
|
||||||
x32_steps.push(
|
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 !== "")) {
|
if ((process.env.CMAKE_GENERATOR_64 !== undefined) && (process.env.CMAKE_GENERATOR_64 !== "")) {
|
||||||
x64_steps.push(
|
x64_steps.push(
|
||||||
[ 'cmake', [
|
[ 'cmake', [
|
||||||
'-H.',
|
'-H.', '-Bbuild/64',
|
||||||
'-Bbuild/64',
|
`-G"${process.env.CMAKE_GENERATOR_64}"`, '-Ax64', '-T"host=x64"',
|
||||||
`-G"${process.env.CMAKE_GENERATOR_64}"`,
|
|
||||||
'-T"host=x64"'
|
|
||||||
].concat(extra_conf), env ]
|
].concat(extra_conf), env ]
|
||||||
);
|
);
|
||||||
x64_steps.push(
|
x64_steps.push(
|
||||||
|
|||||||
+19
-13
@@ -2,20 +2,8 @@
|
|||||||
|
|
||||||
const process = require('process');
|
const process = require('process');
|
||||||
const runner = require('./runner.js');
|
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 env = process.env;
|
||||||
|
|
||||||
let steps = [];
|
let steps = [];
|
||||||
|
|
||||||
if ((process.env.CMAKE_GENERATOR_64 !== undefined) && (process.env.CMAKE_GENERATOR_64 !== "")) {
|
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 = [];
|
let promises = [];
|
||||||
promises.push(runRunners(steps, "32-Bit"));
|
promises.push(runRunners(steps, "32-Bit"));
|
||||||
Promise.all(promises).then(
|
Promise.all(promises).then(
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ AppUpdatesURL={#MyAppURL}
|
|||||||
DefaultDirName={code:GetDirName}
|
DefaultDirName={code:GetDirName}
|
||||||
DefaultGroupName={#MyAppName}
|
DefaultGroupName={#MyAppName}
|
||||||
AllowNoIcons=yes
|
AllowNoIcons=yes
|
||||||
LicenseFile="@PROJECT_SOURCE_DIR@/LICENSE"
|
LicenseFile="@ISS_SOURCE_DIR@/LICENSE"
|
||||||
OutputDir="@CMAKE_INSTALL_PREFIX@/../"
|
OutputDir="@ISS_PACKAGE_DIR@"
|
||||||
OutputBaseFilename=obs-ffmpeg-encoder-{#MyAppVersion}
|
OutputBaseFilename=obs-ffmpeg-encoder-{#MyAppVersion}
|
||||||
Compression=lzma
|
Compression=lzma
|
||||||
SolidCompression=yes
|
SolidCompression=yes
|
||||||
@@ -34,7 +34,7 @@ VersionInfoDescription={#MyAppName} Setup
|
|||||||
Name: "english"; MessagesFile: "compiler:Default.isl"
|
Name: "english"; MessagesFile: "compiler:Default.isl"
|
||||||
|
|
||||||
[Files]
|
[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
|
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||||
|
|
||||||
[Icons]
|
[Icons]
|
||||||
|
|||||||
Reference in New Issue
Block a user