-
Notifications
You must be signed in to change notification settings - Fork 31
142 lines (126 loc) · 4.63 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: CI for GDCEF Godot 4.x
on:
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
check_files: cef_artifacts/libgdcef.dylib
install_system_packages: brew install ninja
shell: bash
# Linux build configuration
- os: ubuntu-20.04
name: Linux
check_files: cef_artifacts/gdCefRenderProcess cef_artifacts/libgdcef.so cef_artifacts/libcef.so
install_system_packages: sudo apt-get update
shell: bash
# Windows build configuration
- os: windows-2022
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
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@v4
with:
ref: godot-4.x
submodules: true
# 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
shell: bash
run: |
echo "tarball_name=gdCEF-$(cat VERSION)_Godot-4_${{ runner.os }}_${{ 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 != ''
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'
cache: 'pip'
cache-dependency-path: addons/gdcef/requirements.txt
# Install Python dependencies
- name: Install Python dependencies
run: |
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
run: |
cd addons/gdcef
python3 build.py
# Check the build: list the files and create an archive
- name: Check build (Linux/MacOS)
if: runner.os != 'Windows'
run: |
ls ${{ matrix.check_files }}
cd cef_artifacts
# Check the build: check if important gdcef artifacts exist and create an archive
- name: Check build (Windows)
if: runner.os == 'Windows'
run: |
cd cef_artifacts
foreach ($file in "${{ matrix.check_files }}".Split(" ")) {
if (!(Test-Path -Path $file)) { exit 1 }
}
# Create cef_artifacts archive
- name: Create cef_artifacts archive
shell: bash
run: |
tar -czvf ../${{ steps.archive.outputs.tarball_name }} cef_artifacts
# Allows to save the generated tarballs from different the isolated OS onto
# the GitHub Actions server (temporary folder). Tha
- name: Upload artifact
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
uses: actions/upload-artifact@v4
with:
retention-days: 1
compression-level: 0
name: ${{ steps.archive.outputs.tarball_name }}
path: ${{ steps.archive.outputs.tarball_name }}
# Create a GitHub release with the artifacts.
# This job needs build jobs to be finished for starting.
release:
needs: build
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
# Download all artifacts from previous jobs inside a temporary folder of this current job.
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
pattern: gdCEF-*
path: artifacts
# Publish releases into the GitHub Releases page
- name: Create Release
uses: ncipollo/release-action@v1
with:
artifacts: "artifacts/*"
allowUpdates: true
makeLatest: true