Skip to content

Commit

Permalink
Update automation
Browse files Browse the repository at this point in the history
- Fix rcedit and wine not working
- Add web builds
- Add comments
- Cache Godot binaries
- Use Godot 4.2.2-rc3
- Run exports in parallel
- Report error if no artifacts are uploaded
- General overhaul
  • Loading branch information
Kiisu-Master committed Apr 12, 2024
1 parent eb8cb30 commit e63f95e
Show file tree
Hide file tree
Showing 7 changed files with 178 additions and 62 deletions.
9 changes: 9 additions & 0 deletions .github/actions/godot-export/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: Export Godot project
runs:
using: composite
steps:
- name: Export
shell: bash
run: |
mkdir -v -p ~/build/${BUILD_NAME}
godot --headless --export-release "${PLATFORM}" ~/build/${BUILD_NAME}/${PROJECT_NAME}.${EXTENSION}
39 changes: 39 additions & 0 deletions .github/actions/set-up-godot/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Set up Godot
runs:
using: composite
steps:
- name: Make folders
shell: bash
run: |
# Set up folders for Godot editor and export templates.
# This is done before the download step because this uses caching and doesn't always need to download.
# The ~/godot directory is for the editor, so it can be added to PATH.
mkdir -v -p ~/.local/share/godot/export_templates/${GODOT_VERSION}.${GODOT_RELEASE}
mkdir -v -p ~/godot
- name: Use cache
id: godot-cache
uses:
actions/cache@v4
with:
key: ${{ env.GODOT_VERSION }}-${{ env.GODOT_RELEASE }}
path: |
~/.local/share/godot/export_templates/${{ env.GODOT_VERSION }}.${{ env.GODOT_RELEASE }}
~/godot
- name: Download Godot
if: ${{ steps.godot-cache.outputs.cache-hit != 'true' }}
shell: bash
run: |
# Download Godot editor and export templates from godot-builds repo.
wget -q https://github.com/godotengine/godot-builds/releases/download/${GODOT_VERSION}-${GODOT_RELEASE}/Godot_v${GODOT_VERSION}-${GODOT_RELEASE}_export_templates.tpz &
wget -q https://github.com/godotengine/godot-builds/releases/download/${GODOT_VERSION}-${GODOT_RELEASE}/Godot_v${GODOT_VERSION}-${GODOT_RELEASE}_linux.x86_64.zip &
wait
# Unpack the files.
unzip Godot_v${GODOT_VERSION}-${GODOT_RELEASE}_linux.x86_64.zip -d ~ &
unzip Godot_v${GODOT_VERSION}-${GODOT_RELEASE}_export_templates.tpz -d ~ &
wait
# Move to correct places.
mv ~/templates/* ~/.local/share/godot/export_templates/${GODOT_VERSION}.${GODOT_RELEASE}
mv ~/Godot_v${GODOT_VERSION}-${GODOT_RELEASE}_linux.x86_64 ~/godot/godot
- name: Add Godot to path
shell: bash
run: echo "~/godot" >> $GITHUB_PATH
59 changes: 0 additions & 59 deletions .github/workflows/dev-build.yml

This file was deleted.

84 changes: 84 additions & 0 deletions .github/workflows/dev-desktop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: dev-desktop

on:
workflow_dispatch:
push:
branches: [ main ]
pull_request:
branches: [ main ]


env:
GODOT_VERSION: 4.2.2
GODOT_RELEASE: rc3
PROJECT_NAME: GodSVG


jobs:
export-windows:
name: Export GodSVG for Windows
runs-on: ubuntu-latest
env:
PLATFORM: "Windows Desktop"
EXTENSION: "exe"
BUILD_NAME: "windows-64bit"
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set up Godot
uses: ./.github/actions/set-up-godot
- name: Set up WINE and rcedit for Windows export
run: |
# Download rcedit and intall wine.
wget -q https://github.com/electron/rcedit/releases/download/v1.1.1/rcedit-x64.exe
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y wine-stable
sudo apt-get install -y wine32
# Move rcedit to different place.
mkdir -v -p ~/.local/share/rcedit
mv rcedit-x64.exe ~/.local/share/rcedit
# CD out of project directory so Godot doesn't load it.
cd ~
# Run Godot to generate editor config file.
godot --headless --quit
# Add wine and rcedit paths to Godot config.
echo 'export/windows/wine = "/usr/bin/wine"' >> ~/.config/godot/editor_settings-4.tres
echo 'export/windows/rcedit = "/home/runner/.local/share/rcedit/rcedit-x64.exe"' >> ~/.config/godot/editor_settings-4.tres
- name: Export project
uses: ./.github/actions/godot-export
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.BUILD_NAME }}
path: ~/build/${{ env.BUILD_NAME }}/
if-no-files-found: error
retention-days: 14

export-linux:
name: Export GodSVG for Linux
runs-on: ubuntu-latest
env:
PLATFORM: "Linux/X11"
EXTENSION: "x86_64"
BUILD_NAME: "linux-64bit"
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set up Godot
uses: ./.github/actions/set-up-godot
- name: Export project
uses: ./.github/actions/godot-export
- name: Make Linux export runnable
run: |
# Set run permission.
chmod +x ~/build/${BUILD_NAME}/${PROJECT_NAME}.x86_64
cd ~/build
tar zcvf ${BUILD_NAME}.tar.gz ${BUILD_NAME}
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.BUILD_NAME }}
path: ~/build/${{ env.BUILD_NAME }}.tar.gz
if-no-files-found: error
retention-days: 14
43 changes: 43 additions & 0 deletions .github/workflows/dev-web.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: dev-web

on:
workflow_dispatch:
push:
branches: [ main ]


env:
GODOT_VERSION: 4.2.2
GODOT_RELEASE: rc3
PROJECT_NAME: GodSVG


jobs:
export-web:
name: Export GodSVG for web and publish.
runs-on: ubuntu-latest
env:
PLATFORM: "Web"
EXTENSION: "html"
BUILD_NAME: "web"
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set up Godot
uses: ./.github/actions/set-up-godot
- name: Export project
uses: ./.github/actions/godot-export
- name: Finish up Web build.
run: |
cd ~/build/${BUILD_NAME}/
# Rename main html file to index.html so browsers can find it.
mv ${PROJECT_NAME}.html index.html
# Add service worker so project loads on github pages. This can maybe be removed when switch to Godot 4.3.
wget https://github.com/gzuidhof/coi-serviceworker/raw/master/coi-serviceworker.js
# This adds the line in index.html that loads the service worker script. It does that by first finding the main script tag and adding to it.
sed -i 's#\( <script src="${{ env.PROJECT_NAME }}.js"></script>\)# <script src="coi-serviceworker.js"></script>\n\1#g' index.html
- name: Publish on Github pages
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: ~/build/${{ env.BUILD_NAME }}
target-folder: dev
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Download the version you want from [the list of GodSVG releases](https://github.

Note that if you're on MacOS, you need to [disable Gatekeeper](https://disable-gatekeeper.github.io/) if you haven't yet. I don't have the time or money to deal with Apple's gatekeeping.

Link to the web build: https://mewpurpur.github.io/GodSVG/web-build (Currently experimental)
Link to the web build: https://mewpurpur.github.io/GodSVG/dev (Currently experimental)

To run the latest unreleased version, you can download Godot from https://godotengine.org (v4.2.2.rc2 required). After getting the repository files on your machine, you must open Godot, click the "Import" button, and import the `project.godot` folder. If there are a lot of errors which some people have reported, it's Godot's fault. Try closing and opening the project a few times, changing small things on the code that errors out, etc. until the errors hopefully clear.

Expand Down
4 changes: 2 additions & 2 deletions export_presets.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ export_filter="exclude"
export_files=PackedStringArray()
include_filter=""
exclude_filter="web-build/*, *.md, *.ico, visual/editor_only/*"
export_path="../GodSVG meta/GodSVG exports/GodSVG.html"
export_path=""
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
Expand All @@ -226,7 +226,7 @@ encrypt_directory=false
[preset.3.options]

custom_template/debug=""
custom_template/release="/home/volter/Desktop/godot/bin/web_release.zip"
custom_template/release=""
variant/extensions_support=false
vram_texture_compression/for_desktop=true
vram_texture_compression/for_mobile=false
Expand Down

0 comments on commit e63f95e

Please sign in to comment.