From 9e4d25419cb16d042590017f92015f447c1dd1b6 Mon Sep 17 00:00:00 2001 From: Michalis Kamburelis Date: Mon, 25 Mar 2024 23:39:33 +0100 Subject: [PATCH] Build with GH Actions --- .github/FUNDING.yml | 12 +++++ .github/dependabot.yml | 10 ++++ .github/workflows/build.yml | 97 +++++++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 .github/FUNDING.yml create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..d7f5a04 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [castle-engine, michaliskambi] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: castleengine # Replace with a single Patreon username +open_collective: castle-engine # Replace with a single Open Collective username +# ko_fi: # Replace with a single Ko-fi username +# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +# liberapay: # Replace with a single Liberapay username +# issuehunt: # Replace with a single IssueHunt username +# otechie: # Replace with a single Otechie username +# custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..b2e40e3 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +# Check that GitHub Actions use latest versions of plugins. +# See https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot . + +version: 2 +updates: + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..1003225 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,97 @@ +# ---------------------------------------------------------------------------- +# GitHub Actions workflow to build this application. +# Using latest Castle Game Engine ( https://castle-engine.io/ ) snapshot. +# For multiple platforms (Linux, Windows, macOS, Android). +# +# This uses GitHub-hosted runners, that is: you don't need to set up any server +# infrastructure, GitHub provides it all for free for open-source projects. +# +# See docs: +# - https://castle-engine.io/github_actions +# - https://docs.github.com/en/actions +# ---------------------------------------------------------------------------- + +name: Build +on: [push, pull_request] + +jobs: + # Build for platforms supported by + # CGE Docker image https://hub.docker.com/r/kambi/castle-engine-cloud-builds-tools/ . + # + # Since setting up Docker image takes majority of time (5-6 mins) + # compared to actually getting and compiling CGE (1 min) + # and building application (~1 min for each platform), + # we build all platforms possible within one job. + build-using-docker: + name: Build Using Docker + runs-on: ubuntu-latest + container: kambi/castle-engine-cloud-builds-tools:cge-none + steps: + - uses: actions/checkout@v4 + # Set env CASTLE_ENGINE_PATH following + # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#environment-files + # https://brandur.org/fragments/github-actions-env-vars-in-env-vars + - name: Castle Game Engine - Setup environment + run: echo "CASTLE_ENGINE_PATH=$GITHUB_WORKSPACE/castle-engine" >> $GITHUB_ENV + - name: Castle Game Engine - Clone snapshot + run: git clone --depth 1 --single-branch --branch snapshot https://github.com/castle-engine/castle-engine/ + - name: Castle Game Engine - Build + run: cd $CASTLE_ENGINE_PATH/tools/build-tool/ && ./castle-engine_compile.sh + + - name: Package Windows + run: $CASTLE_ENGINE_PATH/tools/build-tool/castle-engine package --os=win64 --cpu=x86_64 --verbose + - name: Archive Artifacts + # See https://github.com/actions/upload-artifact + uses: actions/upload-artifact@v4 + with: + name: windows-build + # Note: Keep paths that start with asterisk in double qoutes, to avoid misinterpreting as YAML reference. + # See https://stackoverflow.com/questions/19109912/yaml-do-i-need-quotes-for-strings-in-yaml + # https://yamlchecker.com/ + path: "*-win64-x86_64.zip" + if-no-files-found: error + + - name: Package Linux + run: $CASTLE_ENGINE_PATH/tools/build-tool/castle-engine package --os=linux --cpu=x86_64 --verbose + - name: Archive Artifacts + uses: actions/upload-artifact@v4 + with: + name: linux-build + path: "*-linux-x86_64.tar.gz" + if-no-files-found: error + + - name: Package Android + run: $CASTLE_ENGINE_PATH/tools/build-tool/castle-engine package --target=android --verbose + - name: Archive Artifacts + uses: actions/upload-artifact@v4 + with: + name: android-build + path: "*.apk" + if-no-files-found: error + + # Build for platforms supported from macOS. + # This means to build for macOS and (maybe in the future) iOS. + build-macos: + name: Build Using macOS + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Install FPC+Lazarus + uses: gcarreno/setup-lazarus@v3.2.17 + with: + lazarus-version: stable + - name: Castle Game Engine - Setup environment + run: echo "CASTLE_ENGINE_PATH=$GITHUB_WORKSPACE/castle-engine" >> $GITHUB_ENV + - name: Castle Game Engine - Clone snapshot + run: git clone --depth 1 --single-branch --branch snapshot https://github.com/castle-engine/castle-engine/ + - name: Castle Game Engine - Build + run: cd $CASTLE_ENGINE_PATH/tools/build-tool/ && ./castle-engine_compile.sh + + - name: Package macOS + run: $CASTLE_ENGINE_PATH/tools/build-tool/castle-engine package --os=darwin --cpu=x86_64 --verbose + - name: Archive Artifacts + uses: actions/upload-artifact@v4 + with: + name: macos-build + path: "*-darwin-x86_64.zip" + if-no-files-found: error