10 Commits

Author SHA1 Message Date
3c963e8ee7 Update ReadMe.md 2025-03-04 23:17:26 +01:00
bf732c604a Adjusted templates folder name (#29)
* Update entrypoint.sh

* Update entrypoint.sh
2025-03-04 23:13:13 +01:00
92a759bf66 Update entrypoint.sh (#22)
* Update entrypoint.sh

* Update entrypoint.sh

* modified to support proper requirements for godot-ci project

* Modified for testing

* added a copy of the action for testing

* test

* added ls

* added ls debug

* modified ls debug

* Last push fixes the issue with not building, both build tests work

* Modified it so we showcase Support for Testing 3.x and 4.x Godot Projects

* Modified the Github Action names to properly reflect the tests
2025-03-04 23:13:13 +01:00
7f89f866c8 Allow Spaces in projectDir (#21)
* try to fix the space issue

* change project dir

* spaced preset name
2025-03-04 23:13:13 +01:00
637752b54e Update ReadMe.md 2022-04-27 01:57:29 -04:00
a35bb31c9a Update ReadMe.md 2021-03-05 21:36:28 -05:00
9179e95ab4 Update version in example 2021-03-05 21:34:04 -05:00
1158964084 Update action.yml 2020-11-07 20:18:26 -05:00
a473f49739 Add workflow explaination 2020-09-03 00:02:22 -04:00
0fcde89bd7 Improve documentation & added contributors file 2020-09-02 23:45:06 -04:00
20 changed files with 356 additions and 27 deletions

View File

@ -1,4 +1,4 @@
name: Test Action name: Test Action 3.x
on: [push, pull_request] on: [push, pull_request]
@ -13,5 +13,5 @@ jobs:
with: with:
name: test_project name: test_project
preset: linux preset: linux
projectDir: test_project projectDir: 3.x_test_project
package: 'true' package: 'true'

18
.github/workflows/test_action_4.x.yml vendored Normal file
View File

@ -0,0 +1,18 @@
name: Test Action 4.x
on:
push:
branches: [ 'master', 'main', 'prod', 'production' ]
jobs:
TestAction:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Run Action
uses: ./
with:
name: test_project
preset: linux
projectDir: 4.x_test_project
package: 'true'

2
4.x_test_project/.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

2
4.x_test_project/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
# Godot 4+ specific ignores
.godot/

View File

@ -0,0 +1,106 @@
[preset.0]
name="linux"
platform="Linux/X11"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
script_encryption_key=""
[preset.0.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_script=1
binary_format/embed_pck=false
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""
[preset.1]
name="windows"
platform="Windows Desktop"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
script_encryption_key=""
[preset.1.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_script=1
binary_format/embed_pck=false
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
binary_format/architecture="x86_64"
codesign/enable=false
codesign/identity_type=0
codesign/identity=""
codesign/password=""
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/modify_resources=true
application/icon=""
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/file_description=""
application/copyright=""
application/trademarks=""
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
$settings = New-ScheduledTaskSettingsSet
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
Start-ScheduledTask -TaskName godot_remote_debug
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"

View File

@ -0,0 +1 @@
<svg height="128" width="128" xmlns="http://www.w3.org/2000/svg"><g transform="translate(32 32)"><path d="m-16-32c-8.86 0-16 7.13-16 15.99v95.98c0 8.86 7.13 15.99 16 15.99h96c8.86 0 16-7.13 16-15.99v-95.98c0-8.85-7.14-15.99-16-15.99z" fill="#363d52"/><path d="m-16-32c-8.86 0-16 7.13-16 15.99v95.98c0 8.86 7.13 15.99 16 15.99h96c8.86 0 16-7.13 16-15.99v-95.98c0-8.85-7.14-15.99-16-15.99zm0 4h96c6.64 0 12 5.35 12 11.99v95.98c0 6.64-5.35 11.99-12 11.99h-96c-6.64 0-12-5.35-12-11.99v-95.98c0-6.64 5.36-11.99 12-11.99z" fill-opacity=".4"/></g><g stroke-width="9.92746" transform="matrix(.10073078 0 0 .10073078 12.425923 2.256365)"><path d="m0 0s-.325 1.994-.515 1.976l-36.182-3.491c-2.879-.278-5.115-2.574-5.317-5.459l-.994-14.247-27.992-1.997-1.904 12.912c-.424 2.872-2.932 5.037-5.835 5.037h-38.188c-2.902 0-5.41-2.165-5.834-5.037l-1.905-12.912-27.992 1.997-.994 14.247c-.202 2.886-2.438 5.182-5.317 5.46l-36.2 3.49c-.187.018-.324-1.978-.511-1.978l-.049-7.83 30.658-4.944 1.004-14.374c.203-2.91 2.551-5.263 5.463-5.472l38.551-2.75c.146-.01.29-.016.434-.016 2.897 0 5.401 2.166 5.825 5.038l1.959 13.286h28.005l1.959-13.286c.423-2.871 2.93-5.037 5.831-5.037.142 0 .284.005.423.015l38.556 2.75c2.911.209 5.26 2.562 5.463 5.472l1.003 14.374 30.645 4.966z" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 919.24059 771.67186)"/><path d="m0 0v-47.514-6.035-5.492c.108-.001.216-.005.323-.015l36.196-3.49c1.896-.183 3.382-1.709 3.514-3.609l1.116-15.978 31.574-2.253 2.175 14.747c.282 1.912 1.922 3.329 3.856 3.329h38.188c1.933 0 3.573-1.417 3.855-3.329l2.175-14.747 31.575 2.253 1.115 15.978c.133 1.9 1.618 3.425 3.514 3.609l36.182 3.49c.107.01.214.014.322.015v4.711l.015.005v54.325c5.09692 6.4164715 9.92323 13.494208 13.621 19.449-5.651 9.62-12.575 18.217-19.976 26.182-6.864-3.455-13.531-7.369-19.828-11.534-3.151 3.132-6.7 5.694-10.186 8.372-3.425 2.751-7.285 4.768-10.946 7.118 1.09 8.117 1.629 16.108 1.846 24.448-9.446 4.754-19.519 7.906-29.708 10.17-4.068-6.837-7.788-14.241-11.028-21.479-3.842.642-7.702.88-11.567.926v.006c-.027 0-.052-.006-.075-.006-.024 0-.049.006-.073.006v-.006c-3.872-.046-7.729-.284-11.572-.926-3.238 7.238-6.956 14.642-11.03 21.479-10.184-2.264-20.258-5.416-29.703-10.17.216-8.34.755-16.331 1.848-24.448-3.668-2.35-7.523-4.367-10.949-7.118-3.481-2.678-7.036-5.24-10.188-8.372-6.297 4.165-12.962 8.079-19.828 11.534-7.401-7.965-14.321-16.562-19.974-26.182 4.4426579-6.973692 9.2079702-13.9828876 13.621-19.449z" fill="#478cbf" transform="matrix(4.162611 0 0 -4.162611 104.69892 525.90697)"/><path d="m0 0-1.121-16.063c-.135-1.936-1.675-3.477-3.611-3.616l-38.555-2.751c-.094-.007-.188-.01-.281-.01-1.916 0-3.569 1.406-3.852 3.33l-2.211 14.994h-31.459l-2.211-14.994c-.297-2.018-2.101-3.469-4.133-3.32l-38.555 2.751c-1.936.139-3.476 1.68-3.611 3.616l-1.121 16.063-32.547 3.138c.015-3.498.06-7.33.06-8.093 0-34.374 43.605-50.896 97.781-51.086h.066.067c54.176.19 97.766 16.712 97.766 51.086 0 .777.047 4.593.063 8.093z" fill="#478cbf" transform="matrix(4.162611 0 0 -4.162611 784.07144 817.24284)"/><path d="m0 0c0-12.052-9.765-21.815-21.813-21.815-12.042 0-21.81 9.763-21.81 21.815 0 12.044 9.768 21.802 21.81 21.802 12.048 0 21.813-9.758 21.813-21.802" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 389.21484 625.67104)"/><path d="m0 0c0-7.994-6.479-14.473-14.479-14.473-7.996 0-14.479 6.479-14.479 14.473s6.483 14.479 14.479 14.479c8 0 14.479-6.485 14.479-14.479" fill="#414042" transform="matrix(4.162611 0 0 -4.162611 367.36686 631.05679)"/><path d="m0 0c-3.878 0-7.021 2.858-7.021 6.381v20.081c0 3.52 3.143 6.381 7.021 6.381s7.028-2.861 7.028-6.381v-20.081c0-3.523-3.15-6.381-7.028-6.381" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 511.99336 724.73954)"/><path d="m0 0c0-12.052 9.765-21.815 21.815-21.815 12.041 0 21.808 9.763 21.808 21.815 0 12.044-9.767 21.802-21.808 21.802-12.05 0-21.815-9.758-21.815-21.802" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 634.78706 625.67104)"/><path d="m0 0c0-7.994 6.477-14.473 14.471-14.473 8.002 0 14.479 6.479 14.479 14.473s-6.477 14.479-14.479 14.479c-7.994 0-14.471-6.485-14.471-14.479" fill="#414042" transform="matrix(4.162611 0 0 -4.162611 656.64056 631.05679)"/></g></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bektdji2blm55"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -0,0 +1,15 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Test Project"
config/features=PackedStringArray("4.0", "Forward Plus")
config/icon="res://icon.svg"

19
Contributors.md Normal file
View File

@ -0,0 +1,19 @@
# Build Godot Action Contributors
## Maintainers
Name | Email | Twitter |
-----|-------|---------|
[Layla Manley](https://github.com/yeslayla) | -- | [@yeslayla](https://twitter.com/_yeslayla)
## Contributors
A giant thanks to everyone put in the time to improve Godot CI!
Name | Email | Twitter |
---- | ----- | ------- |
[Tomer Keren](https://github.com/Tadaboody) | [tomerpet@gmail.com](tomerpet@gmail.com) | [@Tadaboody](https://twitter.com/Tadaboody)
## Additional Credits
This action uses the [godot-ci](https://github.com/aBARICHELLO/godot-ci) docker image from [BARICHELLO](https://github.com/aBARICHELLO)

View File

@ -5,9 +5,9 @@ LABEL "com.github.actions.description"="Build a Godot project for multiple platf
LABEL "com.github.actions.icon"="loader" LABEL "com.github.actions.icon"="loader"
LABEL "com.github.actions.color"="blue" LABEL "com.github.actions.color"="blue"
LABEL repository="https://github.com/josephbmanley/build-godot-action" LABEL repository="https://github.com/yeslayla/build-godot-action"
LABEL homepage="https://cloudsumu.com/" LABEL homepage="https://cloudsumu.com/"
LABEL maintainer="Joseph Manley <joseph@cloudsumu.com>" LABEL maintainer="Layla <layla@cloudsumu.com>"
USER root USER root
ADD entrypoint.sh /entrypoint.sh ADD entrypoint.sh /entrypoint.sh

View File

@ -1,5 +1,3 @@
Copyright 2020 Joseph Manley
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

145
ReadMe.md
View File

@ -1,9 +1,143 @@
![Release Version](https://img.shields.io/github/v/release/josephbmanley/build-godot-action) ![Test Action](https://github.com/josephbmanley/build-godot-action/workflows/Test%20Action/badge.svg) This project is not currently being maintained. If you want to build Godot projects with GitHub Actions, I'd recommend taking a look at https://github.com/marketplace/actions/godot-ci
# Build Godot Project ---
![Release Version](https://img.shields.io/github/v/release/yeslayla/build-godot-action) ![Test Action](https://github.com/yeslayla/build-godot-action/workflows/Test%20Action/badge.svg)
![Build Godot Project](logo.png)
This action builds the godot project in your `$GITHUB_WORKSPACE`, so that you can easily automate builds. This action builds the godot project in your `$GITHUB_WORKSPACE`, so that you can easily automate builds.
Table of Contents:
- [Quickstart](#Quickstart)
- [Usage](#Usage)
- [Contributors](Contributors.md)
## Quickstart
### Step 1: Configure Export Presets
In Godot create export templates for `linux`, `windows`, and `mac`.
The name of the Windows export would be of type `Windows Desktop` and have the name `windows`. For Mac, the name would `mac` and type `Mac OSX`. Then for linux, `Linux/X11`
Once you verify that `export_presets.cfg` is located in the same directory as your `project.godot` file, you can push your changes.
### Step 2: Setup Worfklow on GitHub
Add the following workflow file to your repository. An example file name would be `.github/workflows/build.yml`
```yaml
name: Build Godot Project
on:
push: {}
pull_request: {}
jobs:
Godot:
runs-on: ubuntu-latest
strategy:
matrix:
platform: [linux, windows, mac]
steps:
- uses: actions/checkout@v2
with:
lfs: true
- name: Build
id: build
uses: manleydev/build-godot-action@v1.4.1
with:
name: example
preset: ${{ matrix.platform }}
debugMode: "true"
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: Client - ${{ matrix.platform }}
path: ${{ github.workspace }}/${{ steps.build.outputs.build }}
```
#### Workflow Explaination
This workflow has three steps:
- **Checkout**: The Checkout step clones the project on the GitHub actions runner.
- **Build**: This step uses this action to build the Godot project.
- **Upload Artifact**: The Upload Artifact step uploads the output from the build step.
**Matrix Explaination**: The matrix object runs the job for EACH possible value. So in this job, we are using a `platform` matrix to automatically run our workflow for the values `linux`, `windows`, and `mac`.
#### Simple Changes
##### Change Exports
In this workflow, since it's using a matrix you can just add or remove export names from the `platform` matrix. The value being passed MUST have the same name as the preset.
```yaml
Godot:
runs-on: ubuntu-latest
strategy:
matrix:
platform: [win32, win64] # This project will only export using the export presets `win32` and `win64`
```
Additionally if you are not using a matrix, you can set the export preset as the parameter `preset`:
```yaml
- name: Build
id: build
uses: manleydev/build-godot-action@v1.4.1
with:
name: example
preset: win32
```
##### Change Project Name
To change the export name, you can the `name` parameter to whatever you want your project to export as.
```yaml
- name: Build
id: build
uses: manleydev/build-godot-action@v1.4.1
with:
name: test # This project will export with the name "test"
```
##### Disable Debug Mode
This example is set to build with debug mode enable. To disable debug, either set `debugMode` to `false` or remove the field entirely.
```yaml
- name: Build
id: build
uses: manleydev/build-godot-action@v1.4.1
with:
name: example
preset: ${{ matrix.platform }}
debugMode: "false" # This project will not build in debug mode
```
##### Change Project Directory
If your project is located in a subdirectory, you can use the `projectDir` to change build directories.
```yaml
- name: Build
id: build
uses: manleydev/build-godot-action@v1.4.1
with:
name: example
preset: ${{ matrix.platform }}
projectDir: "test" # The project in the `test` directory will be built
```
### Step 3: Test your workflow!
Now, whenever you make a push or pull request in that repository, GitHub Actions will build . You see and download your project in the `Actions` tab of your repository.
## Usage ## Usage
This action will create a `build` folder an outputed build. You must have the export preset configured for the target platform to successfully export. This action will create a `build` folder an outputed build. You must have the export preset configured for the target platform to successfully export.
@ -12,7 +146,7 @@ Example:
```yaml ```yaml
steps: steps:
- uses: josephbmanley/build-godot-action@[VERSION] - uses: manleydev/build-godot-action@[VERSION]
with: with:
name: godot-project name: godot-project
preset: HTML5 preset: HTML5
@ -61,8 +195,3 @@ steps:
#### artifact #### artifact
The location the outputed artifact is placed relative to GitHub Workspace. The location the outputed artifact is placed relative to GitHub Workspace.
## Credits
This action uses the [godot-ci](https://github.com/aBARICHELLO/godot-ci) docker image from [BARICHELLO](https://github.com/aBARICHELLO)

View File

@ -1,6 +1,6 @@
name: "Build Godot" name: "Build Godot"
description: "Build a Godot project for multiple platforms" description: "Build a Godot project for multiple platforms"
author: josephbmanley author: yeslayla
inputs: inputs:
name: name:
description: 'Name of the exported binary' description: 'Name of the exported binary'
@ -16,7 +16,7 @@ inputs:
default: false default: false
projectDir: projectDir:
description: 'Location of Godot project in repository' description: 'Location of Godot project in repository'
default: "" default: "."
debugMode: debugMode:
description: 'Whether or not to use `--export-debug`' description: 'Whether or not to use `--export-debug`'
default: false default: false

View File

@ -2,14 +2,16 @@
set -e set -e
# Move godot templates already installed from the docker image to home # Move godot templates already installed from the docker image to home
mv -n /root/.local ~ mkdir -v -p ~/.local/share/godot/export_templates
cp -a /root/.local/share/godot/export_templates/. ~/.local/share/godot/export_templates/
if [ "$3" != "" ] if [ "$3" != "" ]
then then
SubDirectoryLocation="$3/" SubDirectoryLocation="$3/"
fi fi
mode="export" mode="export-release"
if [ "$6" = "true" ] if [ "$6" = "true" ]
then then
echo "Exporting in debug mode!" echo "Exporting in debug mode!"
@ -19,8 +21,8 @@ fi
# Export for project # Export for project
echo "Building $1 for $2" echo "Building $1 for $2"
mkdir -p $GITHUB_WORKSPACE/build/${SubDirectoryLocation:-""} mkdir -p $GITHUB_WORKSPACE/build/${SubDirectoryLocation:-""}
cd ${5-"$GITHUB_WORKSPACE"} cd "$GITHUB_WORKSPACE/$5"
godot --${mode} $2 $GITHUB_WORKSPACE/build/${SubDirectoryLocation:-""}$1 godot --headless --${mode} "$2" $GITHUB_WORKSPACE/build/${SubDirectoryLocation:-""}$1
echo "Build Done" echo "Build Done"
echo ::set-output name=build::build/${SubDirectoryLocation:-""} echo ::set-output name=build::build/${SubDirectoryLocation:-""}

BIN
logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB