mirror of
https://github.com/godotengine/godot-cpp-template.git
synced 2026-01-04 14:09:57 +03:00
GitHub Workflow: Use new setup-godot-cpp github action from godot-cpp submodule.
This commit is contained in:
117
README.md
117
README.md
@@ -26,121 +26,8 @@ For getting started after cloning your own copy to your local machine, you shoul
|
||||
|
||||
## Usage - Actions
|
||||
|
||||
The actions builds `godot-cpp` at a specified location, and then builds the `gdextension` at a configurable location. It builds for desktop, mobile and web and allows for configuration on what platforms you need. It also supports configuration for debug and release builds, and for double builds.
|
||||
|
||||
The action uses SConstruct for both godot-cpp and the GDExtension that is built.
|
||||
|
||||
To reuse the build actions, in a github actions yml file, do the following:
|
||||
|
||||
```yml
|
||||
name: Build GDExtension
|
||||
on:
|
||||
workflow_call:
|
||||
push:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- platform: linux
|
||||
arch: x86_64
|
||||
os: ubuntu-20.04
|
||||
- platform: windows
|
||||
arch: x86_32
|
||||
os: windows-latest
|
||||
- platform: windows
|
||||
arch: x86_64
|
||||
os: windows-latest
|
||||
- platform: macos
|
||||
arch: universal
|
||||
os: macos-latest
|
||||
- platform: android
|
||||
arch: arm64
|
||||
os: ubuntu-20.04
|
||||
- platform: android
|
||||
arch: arm32
|
||||
os: ubuntu-20.04
|
||||
- platform: android
|
||||
arch: x86_64
|
||||
os: ubuntu-20.04
|
||||
- platform: android
|
||||
arch: x86_32
|
||||
os: ubuntu-20.04
|
||||
- platform: ios
|
||||
arch: arm64
|
||||
os: macos-latest
|
||||
- platform: web
|
||||
arch: wasm32
|
||||
os: ubuntu-20.04
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
- name: 🔗 GDExtension Build
|
||||
uses: godotengine/godot-cpp-template/.github/actions/build@main
|
||||
with:
|
||||
platform: ${{ matrix.platform }}
|
||||
arch: ${{ matrix.arch }}
|
||||
float-precision: single
|
||||
build-target-type: template_release
|
||||
- name: 🔗 GDExtension Build
|
||||
uses: ./.github/actions/build
|
||||
with:
|
||||
platform: ${{ matrix.platform }}
|
||||
arch: ${{ matrix.arch }}
|
||||
float-precision: ${{ matrix.float-precision }}
|
||||
build-target-type: template_debug
|
||||
- name: Mac Sign
|
||||
if: ${{ matrix.platform == 'macos' && env.APPLE_CERT_BASE64 }}
|
||||
env:
|
||||
APPLE_CERT_BASE64: ${{ secrets.APPLE_CERT_BASE64 }}
|
||||
uses: godotengine/godot-cpp-template/.github/actions/sign@main
|
||||
with:
|
||||
FRAMEWORK_PATH: bin/macos/macos.framework
|
||||
APPLE_CERT_BASE64: ${{ secrets.APPLE_CERT_BASE64 }}
|
||||
APPLE_CERT_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }}
|
||||
APPLE_DEV_PASSWORD: ${{ secrets.APPLE_DEV_PASSWORD }}
|
||||
APPLE_DEV_ID: ${{ secrets.APPLE_DEV_ID }}
|
||||
APPLE_DEV_TEAM_ID: ${{ secrets.APPLE_DEV_TEAM_ID }}
|
||||
APPLE_DEV_APP_ID: ${{ secrets.APPLE_DEV_APP_ID }}
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: GDExtension-${{ matrix.platform }}-${{ matrix.arch }}
|
||||
path: |
|
||||
${{ github.workspace }}/bin/**
|
||||
merge:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
steps:
|
||||
- name: Merge Artifacts
|
||||
uses: actions/upload-artifact/merge@v4
|
||||
with:
|
||||
name: GDExtension-all
|
||||
pattern: GDExtension-*
|
||||
delete-merged: true
|
||||
```
|
||||
|
||||
The above example is a lengthy one, so we will go through it action by action to see what is going on.
|
||||
|
||||
In the `Checkout` step, we checkout the code.
|
||||
In the `🔗 GDExtension Build` step, we are using the reusable action:
|
||||
```yml
|
||||
uses: godotengine/godot-cpp-template/.github/actions/build@main
|
||||
with:
|
||||
platform: ${{ matrix.platform }}
|
||||
arch: ${{ matrix.arch }}
|
||||
float-precision: single
|
||||
build-target-type: template_release
|
||||
```
|
||||
with the parameters from the matrix.
|
||||
|
||||
As a result of this step, the binaries will be built in the `bin` folder (as specified in the SConstruct file). After all builds are completed, all individual builds will be merged into one common GDExtension-all zip that you can download.
|
||||
This repository comes with a GitHub action that builds the GDExtension for cross-platform use. It triggers automatically for each pushed change. You can find and edit it in [builds.yml](.github/workflows/builds.yml).
|
||||
After a workflow run is complete, you can find the file `godot-cpp-template.zip` on the `Actions` tab on GitHub.
|
||||
|
||||
Note: for macos, you will have to build the binary as a `.dylib` in a `EXTENSION-NAME.framework` folder. The framework folder should also have a `Resources` folder with a file called `Info.plist`. Without this file, signing will fail.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user