aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
author Spartan322 <Megacake1234@gmail.com>2023-07-07 18:26:54 +0200
committer Spartan322 <Megacake1234@gmail.com>2023-07-09 01:18:04 +0200
commitae16937f45a4d339d579294b7b53e84beec4749e (patch)
tree50800449a7a936cd68e4ba437004929ed166df8f /.github
parent5838c2508682bc3f6e35e44056f9ba229bca4571 (diff)
Add scons-cache support for extension build
Copies how Godot handles scons-cache Add openvic-build action Add openvic-cache action Add mingw-cache action Add verbose and progress Scons options to SConstruct This is completely based on how Godot implemented caching with Scons
Diffstat (limited to '.github')
-rw-r--r--.github/actions/mingw-cache/action.yml18
-rw-r--r--.github/actions/openvic-build/action.yml32
-rw-r--r--.github/actions/openvic-cache/action.yml22
-rw-r--r--.github/workflows/builds.yml17
4 files changed, 85 insertions, 4 deletions
diff --git a/.github/actions/mingw-cache/action.yml b/.github/actions/mingw-cache/action.yml
new file mode 100644
index 0000000..e92962d
--- /dev/null
+++ b/.github/actions/mingw-cache/action.yml
@@ -0,0 +1,18 @@
+name: Setup MinGW Cache
+description: Setup MinGW Cache
+inputs:
+ cache-key:
+ description: Name for MinGW cache key.
+ default: "mingw-cache"
+runs:
+ using: "composite"
+ steps:
+ # Upload cache on completion and check it out now
+ - name: Load MinGW Cache
+ id: cache-mingw
+ uses: actions/cache@v3
+ with:
+ path: C:\ProgramData\chocolatey\lib\mingw
+ key: ${{inputs.cache-key}}
+ - name: Setup MinGW for build
+ uses: egor-tensin/setup-mingw@v2 \ No newline at end of file
diff --git a/.github/actions/openvic-build/action.yml b/.github/actions/openvic-build/action.yml
new file mode 100644
index 0000000..a4b3507
--- /dev/null
+++ b/.github/actions/openvic-build/action.yml
@@ -0,0 +1,32 @@
+name: Build OpenVic Extension
+description: Build OpenVic Extension with provided options.
+inputs:
+ target:
+ description: Build target (editor, template_release, template_debug).
+ default: "template_release"
+ platform:
+ description: Target platform.
+ required: false
+ sconsflags:
+ default: ""
+ scons-cache:
+ description: The scons cache path.
+ default: "${{ github.workspace }}/.scons-cache/"
+ scons-cache-limit:
+ description: The scons cache size limit.
+ # actions/cache has 10 GiB limit, and GitHub runners have a 14 GiB disk.
+ # Limit to 7 GiB to avoid having the extracted cache fill the disk.
+ default: 7168
+runs:
+ using: "composite"
+ steps:
+ - name: Scons Build
+ shell: sh
+ env:
+ SCONSFLAGS: ${{ inputs.sconsflags }}
+ SCONS_CACHE: ${{ inputs.scons-cache }}
+ SCONS_CACHE_LIMIT: ${{ inputs.scons-cache-limit }}
+ run: |
+ echo "Building with flags:" platform=${{ inputs.platform }} target=${{ inputs.target }} ${{ env.SCONSFLAGS }}
+ scons platform=${{ inputs.platform }} target=${{ inputs.target }} ${{ env.SCONSFLAGS }}
+ ls -l game/bin/openvic/ \ No newline at end of file
diff --git a/.github/actions/openvic-cache/action.yml b/.github/actions/openvic-cache/action.yml
new file mode 100644
index 0000000..b4164eb
--- /dev/null
+++ b/.github/actions/openvic-cache/action.yml
@@ -0,0 +1,22 @@
+name: Setup OpenVic Build Cache
+description: Setup OpenVic Build Cache
+inputs:
+ cache-name:
+ description: The cache base name (job name by default).
+ default: "${{github.job}}"
+ scons-cache:
+ description: The scons cache path.
+ default: "${{github.workspace}}/.scons-cache/"
+runs:
+ using: "composite"
+ steps:
+ # Upload cache on completion and check it out now
+ - name: Load .scons_cache directory
+ uses: actions/cache@v3
+ with:
+ path: ${{inputs.scons-cache}}
+ key: ${{inputs.cache-name}}-${{env.OPENVIC_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
+ restore-keys: |
+ ${{inputs.cache-name}}-${{env.OPENVIC_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
+ ${{inputs.cache-name}}-${{env.OPENVIC_BASE_BRANCH}}-${{github.ref}}
+ ${{inputs.cache-name}}-${{env.OPENVIC_BASE_BRANCH}} \ No newline at end of file
diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml
index 79f04aa..9944a9c 100644
--- a/.github/workflows/builds.yml
+++ b/.github/workflows/builds.yml
@@ -7,6 +7,7 @@ env:
GODOT_VERSION_PREFIX: Godot_v
GODOT_VERSION_SUFFIX: stable
GODOT_VERSION: 4.1
+ OPENVIC_BASE_BRANCH: master
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-macos
@@ -67,6 +68,12 @@ jobs:
with:
submodules: recursive
+ - name: Setup OpenVic build cache
+ uses: ./.github/actions/openvic-cache
+ with:
+ cache-name: ${{ matrix.identifier }}
+ continue-on-error: true
+
- name: Setup Environment
uses: ./.github/actions/openvic-env
@@ -94,12 +101,14 @@ jobs:
- name: Setup MinGW for Windows/MinGW build
if: ${{ matrix.platform == 'windows' }}
- uses: egor-tensin/setup-mingw@v2
+ uses: ./.github/actions/mingw-cache
- name: Compile Extension
- shell: sh
- run: |
- scons target='${{ matrix.target }}' platform='${{ matrix.platform }}' arch='${{ matrix.arch }}'
+ uses: ./.github/actions/openvic-build
+ with:
+ platform: ${{ matrix.platform }}
+ target: ${{ matrix.target }}
+ sconsflags: arch=${{ matrix.arch }}
- name: Delete compilation files
if: ${{ matrix.platform == 'windows' }}