Skip to content

Nightly

Nightly #439

Workflow file for this run

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Nightly
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
permissions:
contents: write
jobs:
build-resources:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: 'Install dependencies'
run: |
sudo apt-get update
sudo apt-get install gettext
mkdir out/
- name: 'Generate i18n'
run: |
# Build translations
mkdir otl/
sudo chmod +x ./gentl.sh
./gentl.sh
cp out/* otl/
- name: Make Artifact
uses: actions/upload-artifact@v3
with:
name: translations
path: otl/*
retention-days: 1
linux-zip:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: dlang-community/setup-dlang@4c99aa991ce7d19dd3064de0a4f2f6b2f152e2d7
with:
compiler: ldc-latest
- name: "Get build dependencies"
run: |
sudo apt install libsdl2-dev libfreetype6-dev gettext
- name: 'Generate i18n'
run: |
sudo chmod +x ./gentl.sh
./gentl.sh
- name: "Clone dependencies & set versions"
run: |
git clone https://github.com/Inochi2D/i2d-imgui.git --recurse-submodules
git clone https://github.com/Inochi2D/inochi2d.git
git clone https://github.com/Inochi2D/dcv-i2d
dub add-local i2d-imgui/ "0.8.0"
dub add-local inochi2d/ "0.8.0"
dub add-local dcv-i2d/ "0.3.0"
- name: 'Build Inochi Creator'
run: |
# Build metadata (like version information and icons)
dub build --config=meta
# Build the project, with its main file included, without unittests
dub build --compiler=ldc2 --config=linux-nightly --debug=InExperimental
- name: Archive Zip
uses: thedoctor0/zip-release@main
with:
type: 'zip'
filename: 'inochi-creator-linux-x86_64.zip'
directory: 'out/'
path: '*'
- name: Release to nightly tag
uses: softprops/action-gh-release@v1
with:
name: 'Nightly Build'
tag_name: nightly
files: |
out/inochi-creator-linux-x86_64.zip
generate_release_notes: true
windows:
runs-on: windows-latest
needs: build-resources
steps:
- uses: actions/checkout@v3
- uses: dlang-community/setup-dlang@4c99aa991ce7d19dd3064de0a4f2f6b2f152e2d7
with:
compiler: ldc-latest
- name: Download translations
uses: actions/download-artifact@v3
with:
name: translations
path: out/i18n/
- name: "Clone dependencies & set versions"
run: |
git clone https://github.com/Inochi2D/i2d-imgui.git --recurse-submodules
git clone https://github.com/Inochi2D/inochi2d.git
git clone https://github.com/Inochi2D/dcv-i2d
dub add-local i2d-imgui/ "0.8.0"
dub add-local inochi2d/ "0.8.0"
dub add-local dcv-i2d/ "0.3.0"
- name: 'Build Inochi Creator'
run: |
function Invoke-VSDevEnvironment {
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
$installationPath = & $vswhere -prerelease -legacy -latest -property installationPath
$Command = Join-Path $installationPath "Common7\Tools\vsdevcmd.bat"
& "${env:COMSPEC}" /s /c "`"$Command`" -no_logo && set" | Foreach-Object {
if ($_ -match '^([^=]+)=(.*)') {
[System.Environment]::SetEnvironmentVariable($matches[1], $matches[2])
}
}
}
Invoke-VSDevEnvironment
Remove-Item 'C:/Strawberry' -Recurse
# Build metadata (like version information and icons)
dub build --config=meta
# Build the project, with its main file included, without unittests
dub build --compiler=ldc2 --config=win32-nightly --debug=InExperimental
- name: Archive Zip
uses: thedoctor0/zip-release@main
with:
type: 'zip'
filename: 'inochi-creator-win32-x86_64.zip'
directory: 'out/'
path: '*'
- name: 'Add msbuild to PATH'
uses: microsoft/[email protected]
- name: 'Build MSI'
run: |
cd build-aux/windows/wix
# Install required dependency
mkdir packages/
nuget install WixToolset.UI.wixext -version 4.0.0 -OutputDirectory packages/
# Build solution
msbuild "Inochi Creator.sln" -property:Configuration=Release
# Copy installer out
mv "bin/Release/Inochi Creator.msi" "../../../out/inochi-creator-win32-x86_64.msi"
cd ../../../
- name: 'Release to nightly tag'
uses: softprops/action-gh-release@v1
with:
tag_name: nightly
files: |
out/inochi-creator-win32-x86_64.msi
out/inochi-creator-win32-x86_64.zip
macOS-dmg:
runs-on: macos-12
steps:
- uses: actions/checkout@v3
- uses: LunaTheFoxgirl/setup-dlang@v1
with:
compiler: ldc-latest
- name: "Prepare for DMG packing"
continue-on-error: true
run: |
export HOMEBREW_NO_INSTALL_CLEANUP=1
brew update
brew install create-dmg gettext
- name: "Remove conflicting brew packages"
continue-on-error: true
run: |
# Remove conflicting brew items
brew remove --ignore-dependencies aom cairo composer curl fontconfig freetype gd ghostscript httpd imagemagick jpeg-xl libavif libheif libxft [email protected] mongosh node@16 openjpeg php r sox webp libpng brotli
- name: "Remove final conflicting files"
continue-on-error: true
run: |
# Delete fake harfbuzz if need be
if [ -f "/usr/local/lib/libharfbuzz.dylib" ]; then
sudo rm -r /usr/local/lib/libharfbuzz.dylib
fi
# And the .a for it as well
if [ -f "/usr/local/lib/libharfbuzz.a" ]; then
sudo rm -r /usr/local/lib/libharfbuzz.a
fi
- name: 'Generate i18n'
run: |
sudo chmod +x ./gentl.sh
./gentl.sh
- name: "Clone dependencies & set versions"
run: |
git clone https://github.com/Inochi2D/i2d-imgui.git --recurse-submodules
git clone https://github.com/Inochi2D/inochi2d.git
git clone https://github.com/Inochi2D/dcv-i2d
dub add-local i2d-imgui/ "0.8.0"
dub add-local inochi2d/ "0.8.0"
dub add-local dcv-i2d/ "0.3.0"
- name: 'Build Inochi Creator'
env:
DFLAGS: "-g -force-dwarf-frame-section=false"
run: |
# Build metadata (like version information and icons)
dub build --config=meta
# First build ARM64 version...
echo "Building arm64 binary..."
dub build --config=osx-nightly --arch=arm64-apple-macos
mv "out/Inochi Creator.app/Contents/MacOS/inochi-creator" "out/Inochi Creator.app/Contents/MacOS/inochi-creator-arm64"
# Then the X86_64 version...
echo "Building x86_64 binary..."
dub build --config=osx-nightly --arch=x86_64-apple-macos
mv "out/Inochi Creator.app/Contents/MacOS/inochi-creator" "out/Inochi Creator.app/Contents/MacOS/inochi-creator-x86_64"
# Glue them together with lipo
echo "Gluing them together..."
lipo "out/Inochi Creator.app/Contents/MacOS/inochi-creator-x86_64" "out/Inochi Creator.app/Contents/MacOS/inochi-creator-arm64" -output "out/Inochi Creator.app/Contents/MacOS/inochi-creator" -create
# Print some nice info
echo "Done!"
lipo -info "out/Inochi Creator.app/Contents/MacOS/inochi-creator"
# Cleanup and bundle
echo "Cleaning up..."
rm "out/Inochi Creator.app/Contents/MacOS/inochi-creator-x86_64" "out/Inochi Creator.app/Contents/MacOS/inochi-creator-arm64"
./build-aux/osx/osxbundle.sh
- name: 'Build DMG'
run: |
./build-aux/osx/gendmg.sh
- name: Release to nightly tag
uses: softprops/action-gh-release@v1
with:
name: 'Nightly Build'
tag_name: nightly
files: 'out/Install_Inochi_Creator.dmg'
build-flatpak:
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:freedesktop-22.08
options: --privileged
env:
MANIFEST_PATH: build-aux/flatpak/nightly/com.inochi2d.inochi-creator.yml
FLATPAK_BRANCH: nightly
FLATPAK_BUILD_DIR: build-dir
FLATPAK_BUILD_REPO: build-repo
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Dump canonical manifest
run: |
set -e
flatpak-builder --show-manifest ${MANIFEST_PATH} > canonical-manifest.json
- name: Download flatpak SDK and sources
run: |
set -e
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak-builder --default-branch=${FLATPAK_BRANCH} --install-deps-from=flathub --install-deps-only --user /dev/null ${MANIFEST_PATH}
flatpak-builder --default-branch=${FLATPAK_BRANCH} --download-only /dev/null ${MANIFEST_PATH}
- name: Prime cache
uses: actions/cache@v3
with:
path: |
.flatpak-builder/ccache
key: flatpak-builder-${{ hashFiles('canonical-manifest.json') }}
restore-keys: |
flatpak-builder-
- name: Build flatpak
run: |
set -e
flatpak-builder --default-branch=${FLATPAK_BRANCH} --ccache --repo=${FLATPAK_BUILD_REPO} ${FLATPAK_BUILD_DIR} ${MANIFEST_PATH}
- name: Upload flatpak repo
uses: actions/upload-artifact@v3
with:
name: ${{ env.FLATPAK_BUILD_REPO }}
path: |
${{ env.FLATPAK_BUILD_REPO }}
!${{ env.FLATPAK_BUILD_REPO }}/.lock
publish-flatpak-bundle:
runs-on: ubuntu-latest
needs: build-flatpak
env:
APP_ID: com.inochi2d.inochi-creator
FLATPAK_BUNDLE: inochi-creator
FLATPAK_BRANCH: nightly
FLATPAK_BUILD_REPO: build-repo
steps:
- uses: actions/checkout@v2
- name: Install flatpak
run: |
set -e
sudo apt install -y flatpak
- name: Download flatpak repo
uses: actions/download-artifact@v1
with:
name: ${{ env.FLATPAK_BUILD_REPO }}
- name: Create flatpak bundle
run: |
set -e
mkdir -p ${FLATPAK_BUILD_REPO}/{extensions,refs/{mirrors,remotes},state,tmp/cache}
flatpak build-bundle --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo ${FLATPAK_BUILD_REPO} ${FLATPAK_BUNDLE}.flatpak ${APP_ID} ${FLATPAK_BRANCH}
- name: Release to nightly tag
uses: softprops/action-gh-release@v1
with:
name: 'Nightly Build'
tag_name: nightly
files: |
${{ env.FLATPAK_BUNDLE }}.flatpak