Skip to content

Commit

Permalink
Update CI modified by IA
Browse files Browse the repository at this point in the history
  • Loading branch information
Lecrapouille committed Dec 5, 2024
1 parent 8cafbec commit 26cba6e
Showing 1 changed file with 101 additions and 90 deletions.
191 changes: 101 additions & 90 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,125 +1,136 @@
name: CI for GDCEF Godot 4.x
on:
workflow_dispatch:
branches:
- godot-4.x
workflow_dispatch: # Allow manual trigger
push:
branches:
- godot-4.x
tags:
- '*'
- '*' # Trigger on any tag
pull_request:
branches:
- godot-4.x

jobs:
build:
strategy:
matrix:
include:
# MacOS build configuration
- os: macos-14
name: MacOS
os_name: macos
check_files: cef_artifacts/libgdcef.dylib
install_system_packages: brew install ninja

# Linux build configuration
- os: ubuntu-20.04
name: Linux
os_name: linux
check_files: cef_artifacts/gdCefRenderProcess cef_artifacts/libgdcef.so cef_artifacts/libcef.so
install_system_packages: sudo apt-get update

# Windows build configuration
- os: windows-2022
name: Windows
os_name: windows
check_files: \a\gdcef\gdcef\cef_artifacts\gdCefRenderProcess.exe \a\gdcef\gdcef\cef_artifacts\libgdcef.dll \a\gdcef\gdcef\cef_artifacts\libcef.dll
shell: powershell

#############################################################################
### MacOS
#############################################################################
build_macos:
name: Build on MacOS
runs-on: macos-14
name: Build on ${{ matrix.name }}
runs-on: ${{ matrix.os }}
steps:
# Needed because Godot editor and godot-cpp can find cl.exe while our
# godot native modules cannot find it without this extra path
- name: Setup MSVC (Windows only)
if: matrix.os == 'windows-2022'
uses: ilammy/msvc-dev-cmd@v1.10.0

# Git checkout the gdCEF repository
- name: Checkout GDCEF
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: godot-4.x
submodules: true
- name: Install system packages

# Read the gdCEF version from the VERSION file, and set the name of the
# archive to upload on GitHub
- name: Get CI environment variables
id: archive
run: |
brew install ninja
- name: Install python packages
uses: getsentry/action-setup-venv@v2.1.0
id: venv
echo "tarball_name=gdcef-artifacts-$(cat VERSION)-godot_4-${{ matrix.os_name }}_${{ runner.arch }}.tar.gz" >> $GITHUB_OUTPUT
# Install system packages if any are specified and install python packages
- name: Install system packages
if: matrix.install_system_packages != ''
shell: bash
run: ${{ matrix.install_system_packages }}

# Setup Python Virtual Environment
- name: Setup Python Virtual Environment
uses: actions/setup-python@v5
with:
python-version: 3.10.7
python-version: '3.10.7'
cache: 'pip'
cache-dependency-path: addons/gdcef/requirements.txt
install-cmd: pip install -r addons/gdcef/requirements.txt
- name: Compile GDCEF
run: |
cd addons/gdcef
python3 build.py
- name: Check build
run: |
ls cef_artifacts/libgdcef.dylib
tar -czvf gdcef-artifacts-godot_4-macos_x86_64.tar.gz cef_artifacts
- name: Do release
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
uses: ncipollo/release-action@v1
with:
artifacts: "gdcef-artifacts-godot_4-macos_x86_64.tar.gz"

#############################################################################
### Linux
#############################################################################
build_linux:
name: Build on Linux
runs-on: ubuntu-20.04
needs: build_macos
steps:
- name: Checkout GDCEF
uses: actions/checkout@v3
with:
ref: godot-4.x
submodules: true
- name: Install system packages
# Install Python dependencies
- name: Install Python dependencies
run: |
sudo apt-get update
cd addons/gdcef
python3 -m pip install -r requirements.txt
python -m pip install --upgrade pip
pip install -r addons/gdcef/requirements.txt
# Compile GDCEF: download CEF and godot-cpp, them, compile GDCEF
- name: Compile GDCEF
shell: bash
run: |
cd addons/gdcef
python3 build.py
- name: Check build
run: |
ls cef_artifacts/gdCefRenderProcess cef_artifacts/libgdcef.so cef_artifacts/libcef.so
tar -czvf gdcef-artifacts-godot_4-linux_x86_64.tar.gz cef_artifacts
- name: Do release
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
uses: ncipollo/release-action@v1
with:
artifacts: "gdcef-artifacts-godot_4-linux_x86_64.tar.gz"

#############################################################################
### Windows
#############################################################################
build_windows:
name: Build on Windows
runs-on: windows-2022
needs: build_linux
steps:
# Add path for finding cl.exe
# FIXME: I dunno why Godot editor and godot-cpp can find cl.exe while our
# godot native modules cannot find it without this extra path
- uses: ilammy/msvc-dev-cmd@v1.10.0
- name: Checkout GDCEF
uses: actions/checkout@v4
with:
submodules: true
- name: Install system packages
shell: powershell
# Check the build: list the files and create an archive
- name: Check build (Linux/MacOS)
if: runner.os != 'Windows'
shell: bash
run: |
cd addons/gdcef
python3 -m pip install -r requirements.txt
- name: Compile GDCEF
ls ${{ matrix.check_files }}
cd cef_artifacts
tar -czvf ../${{ steps.archive.outputs.tarball_name }} .
# Check the build: check if important gdcef artifacts exist and create an archive
- name: Check build (Windows)
if: runner.os == 'Windows'
shell: powershell
run: |
cd addons/gdcef
python3 build.py
- name: Check build
run: |
cd cef_artifacts
Test-Path -Path \a\gdcef\gdcef\cef_artifacts\gdCefRenderProcess.exe
Test-Path -Path \a\gdcef\gdcef\cef_artifacts\libgdcef.dll
Test-Path -Path \a\gdcef\gdcef\cef_artifacts\libcef.dll
cd -
tar -czvf gdcef-artifacts-godot_4-windows_x86_64.tar.gz cef_artifacts
- name: Do release
foreach ($file in "${{ matrix.check_files }}".Split(" ")) {
if (!(Test-Path -Path $file)) { exit 1 }
}
tar -czvf ../${{ steps.archive.outputs.tarball_name }} .
# Upload the archive to GitHub for making a release artifact
- name: Upload artifact
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
uses: actions/upload-artifact@v4
with:
name: artifacts
path: ${{ steps.archive.outputs.tarball_name }}

# Create a GitHub release with the artifacts
release:
needs: build
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
# Download all artifacts
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
name: artifacts
path: artifacts

# Create a GitHub release with the artifacts
- name: Create Release
uses: ncipollo/release-action@v1
with:
artifacts: "gdcef-artifacts-godot_4-windows_x86_64.tar.gz"
artifacts: "artifacts/*"
allowUpdates: true
makeLatest: true

0 comments on commit 26cba6e

Please sign in to comment.