diff options
author | Spartan322 <Megacake1234@gmail.com> | 2023-07-07 18:26:54 +0200 |
---|---|---|
committer | Spartan322 <Megacake1234@gmail.com> | 2023-07-09 01:18:04 +0200 |
commit | ae16937f45a4d339d579294b7b53e84beec4749e (patch) | |
tree | 50800449a7a936cd68e4ba437004929ed166df8f /.github | |
parent | 5838c2508682bc3f6e35e44056f9ba229bca4571 (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.yml | 18 | ||||
-rw-r--r-- | .github/actions/openvic-build/action.yml | 32 | ||||
-rw-r--r-- | .github/actions/openvic-cache/action.yml | 22 | ||||
-rw-r--r-- | .github/workflows/builds.yml | 17 |
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' }} |