Skip to content

Commit

Permalink
Create build.yml
Browse files Browse the repository at this point in the history
  • Loading branch information
the0cp authored Aug 23, 2024
1 parent 8d62fc6 commit d258cfc
Showing 1 changed file with 138 additions and 0 deletions.
138 changes: 138 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
name: Build and deploy Aseprite

on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
push:
branches:
- master


env:
BUILD_TYPE: Release
ACTIONS_ALLOW_UNSECURE_COMMANDS: true

jobs:
check-version:
name: Check latest Aseprite release
runs-on: ubuntu-latest
outputs:
download_url: ${{ steps.version_info.outputs.download_url }}
latest_tag: ${{ steps.version_info.outputs.latest_tag }}
should_build: ${{ steps.should_build.outputs.should_build }}
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Get latest version info
id: version_info
run: |
data=$(curl -sL https://api.github.com/repos/aseprite/aseprite/releases/latest)
LATEST_TAG=$(echo "${data}" | jq -r '.tag_name')
DOWNLOAD_URL=$(echo "${data}" | jq -r '.assets[].browser_download_url')
VERSION_INFO=$(echo "${data}" | jq -r '.body')
echo "${LATEST_TAG}" > ${LATEST_TAG}.txt
echo "::set-output name=latest_tag::${LATEST_TAG}"
echo "::set-output name=download_url::${DOWNLOAD_URL}"
echo "::set-output name=version_info::${VERSION_INFO}"
- name: Load version from cache
id: version_check
uses: actions/cache@v2
with:
path: ${{ steps.version_info.outputs.latest_tag }}.txt
key: cached_version
- name: Should we start new build?
id: should_build
if: steps.version_check.outputs.cache-hit != 'true'
run: echo "::set-output name=should_build::true"
- name: Create Release
id: create_release
if: steps.should_build.outputs.should_build
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.version_info.outputs.latest_tag }}
release_name: Release Aseprite ${{ steps.version_info.outputs.latest_tag }}
body: |
${{ steps.version_info.outputs.version_info }}
draft: false
prerelease: false

build-aseprite:
name: Build Aseprite
needs: check-version
if: ${{ needs.check-version.outputs.should_build }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macOS-latest]
fail-fast: false
steps:
- name: (Windows) Install dependencies
if: matrix.os == 'windows-latest'
uses: seanmiddleditch/gha-setup-ninja@v1
- name: (Ubuntu) Install dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt install -y cmake ninja-build libxcursor-dev libxi-dev libgl1-mesa-dev
- name: (macOS) Install dependencies
if: matrix.os == 'macOS-latest'
run: brew install ninja p7zip
- name: Get Skia from cache
id: skia-cache
uses: actions/cache@v2
with:
path: skia
key: skia-${{ matrix.os }}-cache
- name: Download Skia if not in cache
if: steps.skia-cache.outputs.cache-hit != 'true'
run: |
curl -o Skia-${{ runner.os }}-Release-X64.zip -L https://github.com/aseprite/skia/releases/download/m81-b607b32047/Skia-${{ runner.os }}-Release-X64.zip
unzip Skia-${{ runner.os }}-Release-X64.zip -d skia
- name: Download Aseprite release
run: |
curl -o Aseprite-source.zip -L ${{ needs.check-version.outputs.download_url }}
unzip Aseprite-source.zip -d aseprite
mkdir -p aseprite/build
- name: (Windows) Set architecture for the produced binary
if: matrix.os == 'windows-latest'
shell: cmd
run: call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=x64
- name: (Windows) Setting Visual Studio build environment variables and paths
if: matrix.os == 'windows-latest'
uses: seanmiddleditch/gha-setup-vsdevenv@v1
- name: (Windows) Run CMake
if: matrix.os == 'windows-latest'
working-directory: aseprite/build
shell: cmd
run: cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DCMAKE_IGNORE_PATH='C:/ProgramData/chocolatey/bin/;C:/Strawberry/c/bin/' -DLAF_BACKEND=skia -DSKIA_DIR=../../skia -DSKIA_LIBRARY_DIR=../../skia/out/Release-x64 -G Ninja ..
- name: (Ubuntu) Run CMake
if: matrix.os == 'ubuntu-latest'
working-directory: aseprite/build
run: cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DLAF_BACKEND=skia -DSKIA_DIR=../../skia -DSKIA_LIBRARY_DIR=../../skia/out/Release-x64 -G Ninja ..
- name: (macOS) Run CMake
if: matrix.os == 'macOS-latest'
working-directory: aseprite/build
run: cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -DLAF_BACKEND=skia -DSKIA_DIR=../../skia -DSKIA_LIBRARY_DIR=../../skia/out/Release-x64 -G Ninja ..
- name: Run Ninja
working-directory: aseprite/build
run: ninja aseprite
- name: Clean up build
working-directory: aseprite/build/bin
shell: bash
run: rm -f gen modp_b64_gen gen.exe gen.exe.manifest modp_b64_gen.exe modp_b64_gen.exe.manifest
- name: (Windows) Make portable zip
working-directory: aseprite/build/bin
run: echo '# This file is here so Aseprite behaves as a portable program' > aseprite.ini
- name: Create release
working-directory: aseprite/build/bin
run: 7z -tzip a Aseprite-${{ needs.check-version.outputs.latest_tag }}-${{ runner.os }}.zip *
- name: Upload release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.check-version.outputs.upload_url }}
asset_path: aseprite/build/bin/Aseprite-${{ needs.check-version.outputs.latest_tag }}-${{ runner.os }}.zip
asset_name: Aseprite-${{ needs.check-version.outputs.latest_tag }}-${{ runner.os }}.zip
asset_content_type: application/zip

0 comments on commit d258cfc

Please sign in to comment.