Update unittests.yml #116
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run Unit Tests | |
on: | |
push: | |
branches: [ "dev" ] | |
pull_request: | |
branches: [ "dev" ] | |
workflow_dispatch: | |
env: | |
LINUX_64_TARGET: x86_64-unknown-linux-gnu | |
LINUX_64_LIB: libglecs.so | |
WINDOWS_64_TARGET: x86_64-pc-windows-gnu | |
WINDOWS_64_LIB: libglecs.dll | |
jobs: | |
build_linux_x86_64: | |
strategy: | |
matrix: | |
include: | |
# - os: ubuntu-latest | |
# target: x86_64-unknown-linux-gnu | |
# glecs_lib: libglecs.so | |
- os: ubuntu-latest | |
target: x86_64-pc-windows-gnu | |
glecs_lib: libglecs.dll | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: π Settup git environment | |
uses: actions/checkout@v4 | |
- name: π³οΈ Initialize git submodules | |
run: git submodule update --init --recursive | |
- name: πΎ Rust cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: "./addons/glecs/rust/glecs" | |
cache-on-failure: true | |
- name: ποΈ Update Rust | |
run: | | |
rustup update | |
rustup target add ${{ matrix.target }} | |
- name: πͺ Install mingw for Windows build | |
if: ${{ matrix.target }} == x86_64-pc-windows-gnu | |
run: | | |
sudo apt install gcc-mingw-w64 | |
- name: π¦ Build Rust code | |
run: | | |
cargo build \ | |
--release \ | |
--manifest-path ./addons/glecs/rust/glecs/Cargo.toml \ | |
--features compile_bindings \ | |
--target-dir ./addons/glecs/bin \ | |
--target ${{ matrix.target }} | |
# Copy library for use in test suite | |
cp -r ./addons/glecs/bin/${TARGET}/release ./addons/glecs/bin/debug | |
- name: π€ Setup Godot | |
uses: chickensoft-games/setup-godot@v1 | |
with: | |
# Version must include major, minor, and patch, and be >= 4.0.0 | |
version: 4.2.1 | |
# This shouldn't be needed because the important files from .godot are | |
# included, but we run the import process just in case. | |
- name: π§ Run Godot import | |
run: | | |
godot --headless --editor --quit-after 100 | |
- name: βοΈ Run unittests | |
run: | | |
godot -s res://addons/gut/gut_cmdln.gd --headless -gdir="res://unittests" -gexit | |
- name: πΎ Cache compiled library | |
uses: actions/cache/[email protected] | |
with: | |
# A list of files, directories, and wildcard patterns to cache and restore | |
path: ./addons/glecs/bin/${{ matrix.target }}/release/${{ matrix.glecs_lib }} | |
# An explicit key for restoring and saving the cache | |
key: glecslib.${{ matrix.target }} | |
update_nightly: | |
needs: build_linux_x86_64 | |
runs-on: windows-latest | |
steps: | |
# Run only if new commits were pushed | |
- name: π Proceed if action is "push" | |
if: ${{ github.action }} != "push" | |
run: | | |
exit 0 | |
- name: π Settup git environment | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
persist-credentials: false | |
- name: π§ Load compiled library, Linux x86_64 | |
uses: actions/cache/[email protected] | |
with: | |
# A list of files, directories, and wildcard patterns to cache and restore | |
path: ./addons/glecs/bin/${{ env.LINUX_64_TARGET }}/release/${{ env.LINUX_64_LIB }} | |
# An explicit key for restoring and saving the cache | |
key: glecslib.${{ env.LINUX_64_TARGET }} | |
# An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms | |
enableCrossOsArchive: true | |
- name: πͺ Load compiled library, Windows x86_64 | |
uses: actions/cache/[email protected] | |
with: | |
# A list of files, directories, and wildcard patterns to cache and restore | |
path: ./addons/glecs/bin/${{ env.WINDOWS_64_TARGET }}/release/${{ env.WINDOWS_64_LIB }} | |
# An explicit key for restoring and saving the cache | |
key: glecslib.${{ env.WINDOWS_64_TARGET }} | |
# An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms | |
enableCrossOsArchive: true | |
- name: π Setup Python | |
uses: actions/[email protected] | |
with: | |
python-version: 3.11.2 | |
cache: pip | |
- name: π£ββοΈ Convert dev plugin to nightly format | |
run: | | |
cd addons/glecs | |
pip install regex | |
python _build_for_nightly.py | |
- name: π Clone nightly branch | |
run: | | |
git clone https://github.com/${{ github.repository }} ../nightly_tmp -b nightly | |
mkdir ../nightly | |
mkdir ../nightly/.git | |
cp -r ../nightly_tmp/.git/* ../nightly/.git/ | |
cp ../nightly_tmp/README.md ../nightly/README.md | |
cp ../nightly_tmp/.gitignore ../nightly/.gitignore | |
- name: π¨οΈ Copy dev branch plugin to nightly | |
run: | | |
cp -r -force ./addons/glecs/* ../nightly/ | |
- name: β Add / Commit to nightly | |
id: add-and-commit | |
continue-on-error: true | |
run: | | |
cd ../nightly | |
git config --global user.name github-actions[bot] | |
git config --global user.email [email protected] | |
git add . | |
git commit --all -m "(AUTO) ${{ github.event.head_commit.message }}" | |
# Prevent error | |
echo "" | |
- name: π€ Push to nightly | |
if: steps.add-and-commit.outcome == 'success' | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
repository: ${{ github.repository }} | |
branch: nightly | |
directory: ../nightly | |
- name: π Finish | |
run: exit 0 |