Skip to content

Commit

Permalink
Merge pull request #41 from gilzoide/feature/github-actions
Browse files Browse the repository at this point in the history
Add GitHub actions for building native libraries
  • Loading branch information
gilzoide authored Jan 14, 2025
2 parents e9d2a33 + 29fb151 commit 661852b
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 5 deletions.
57 changes: 57 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Build native libraries
on: [push, pull_request]
defaults:
run:
shell: bash

env:
DOCKER_CACHE: ${{ github.workspace }}/.docker-cache

jobs:
build_with_docker:
name: ${{ matrix.platform }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- platform: windows
target: docker-all-windows-llvm
- platform: linux
target: docker-all-linux
- platform: android
target: docker-all-android
- platform: webgl
target: docker-all-webgl
steps:
- uses: actions/checkout@v3
- name: Cache Docker files
uses: actions/cache@v4
with:
path: $DOCKER_CACHE
key: ${{ matrix.platform }}
- name: Build
run: make -C Plugins ${{ matrix.target }} DOCKER_BUILD_ARGS="--cache-from type=gha --cache-to type=gha,mode=max"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: gilzoide-sqlite-net-${{ matrix.platform }}
path: |
Plugins/lib/${{ matrix.platform }}/**/*.bc
Plugins/lib/${{ matrix.platform }}/**/*.dll
Plugins/lib/${{ matrix.platform }}/**/*.dylib
Plugins/lib/${{ matrix.platform }}/**/*.so
build_with_macos:
name: macOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Build
run: make -C Plugins all-apple
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: gilzoide-sqlite-net-macos
path: |
Plugins/lib/macos/*.dylib
28 changes: 23 additions & 5 deletions Plugins/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
EMCC ?= emcc
# Android setup
ANDROID_NDK_ROOT ?=
# WebGL/Emscripten setup
EMCC ?= emcc
# macOS code signing setup
CODESIGN ?= codesign
MACOS_CODESIGN_SIGNATURE ?=
# Download GitHub Action releases
GITHUB_CLI_BIN ?= gh
GITHUB_REPO ?= gilzoide/unity-sqlite-net
RUN_ID ?=

ifeq ($(DEBUG),1)
CFLAGS += -O0 -g -DDEBUG
Expand Down Expand Up @@ -130,16 +137,27 @@ all-windows-llvm-mingw: windows-mingw-x86_64 windows-mingw-x86 windows-mingw-arm

# Dockerized builds
docker-all-android:
docker build -f tools~/Dockerfile.build.android --platform=linux/amd64 -t gilzoide-sqlite-net-build-android:latest .
docker build -f tools~/Dockerfile.build.android --platform=linux/amd64 -t gilzoide-sqlite-net-build-android:latest $(DOCKER_BUILD_ARGS) .
docker run --rm -v "$(CURDIR)":/src -w /src --platform=linux/amd64 gilzoide-sqlite-net-build-android:latest make all-android
docker-all-linux:
docker build -f tools~/Dockerfile.build.linux --platform=linux/amd64 -t gilzoide-sqlite-net-build-linux:latest .
docker build -f tools~/Dockerfile.build.linux --platform=linux/amd64 -t gilzoide-sqlite-net-build-linux:latest $(DOCKER_BUILD_ARGS) .
docker run --rm -v "$(CURDIR)":/src -w /src --platform=linux/amd64 gilzoide-sqlite-net-build-linux:latest make all-linux
docker-all-webgl:
docker build -f tools~/Dockerfile.build.webgl -t gilzoide-sqlite-net-build-webgl:latest .
docker build -f tools~/Dockerfile.build.webgl -t gilzoide-sqlite-net-build-webgl:latest $(DOCKER_BUILD_ARGS) .
docker run --rm -v "$(CURDIR)":/src -w /src gilzoide-sqlite-net-build-webgl:latest make all-webgl
docker-all-windows:
docker build -f tools~/Dockerfile.build.windows -t gilzoide-sqlite-net-build-windows:latest .
docker build -f tools~/Dockerfile.build.windows -t gilzoide-sqlite-net-build-windows:latest $(DOCKER_BUILD_ARGS) .
docker run --rm -v "$(CURDIR)":/src -w /src gilzoide-sqlite-net-build-windows:latest make all-windows-mingw
docker-all-windows-llvm:
docker run --rm -v "$(CURDIR)":/src -w /src mstorsjo/llvm-mingw:latest make all-windows-llvm-mingw

# Download builds from GitHub Actions
download-latest-build:
$(eval TMPDIR := $(shell mktemp -d))
$(GITHUB_CLI_BIN) run download $(RUN_ID) --repo $(GITHUB_REPO) -p gilzoide-sqlite-net-* -D $(TMPDIR)
rsync -r $(TMPDIR)/gilzoide-sqlite-net-windows/* lib/windows/
rsync -r $(TMPDIR)/gilzoide-sqlite-net-linux/* lib/linux/
rsync -r $(TMPDIR)/gilzoide-sqlite-net-android/* lib/android/
rsync -r $(TMPDIR)/gilzoide-sqlite-net-macos/* lib/macos/
rsync -r $(TMPDIR)/gilzoide-sqlite-net-webgl/* lib/webgl/
$(RM) -r $(TMPDIR)

0 comments on commit 661852b

Please sign in to comment.