diff --git a/.bumpversion.cfg b/.bumpversion.cfg
new file mode 100644
index 0000000..8d9fa76
--- /dev/null
+++ b/.bumpversion.cfg
@@ -0,0 +1,11 @@
+[bumpversion]
+current_version = 0.0.0
+commit = False
+tag = True
+tag_name = {new_version}
+
+[semver]
+main_branches = master
+major_branches =
+minor_branches = feature
+patch_branches = hotfix, bugfix
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 49beecc..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,3 +0,0 @@
-# Auto detect text files and perform LF normalization
-* text=auto
-* eol=lf
diff --git a/.github/workflows/test_action_3.x.yml b/.github/workflows/test_action_3.x.yml
new file mode 100644
index 0000000..5d8aa9e
--- /dev/null
+++ b/.github/workflows/test_action_3.x.yml
@@ -0,0 +1,17 @@
+name: Test Action 3.x
+
+on: [push, pull_request]
+
+jobs:
+ TestAction:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v1
+ - name: Run Action
+ uses: ./
+ with:
+ name: test_project
+ preset: linux
+ projectDir: 3.x_test_project
+ package: 'true'
\ No newline at end of file
diff --git a/.github/workflows/test_action_4.x.yml b/.github/workflows/test_action_4.x.yml
new file mode 100644
index 0000000..6e685cd
--- /dev/null
+++ b/.github/workflows/test_action_4.x.yml
@@ -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'
\ No newline at end of file
diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml
new file mode 100644
index 0000000..b70c1f9
--- /dev/null
+++ b/.github/workflows/version.yml
@@ -0,0 +1,30 @@
+name: Version & Release
+
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ CheckVersion:
+ runs-on: ubuntu-latest
+ container:
+ image: rightbrainnetworks/auto-semver
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v1
+ - name: Run Auto-Semver
+ id: semver
+ uses: RightBrain-Networks/semver-action@1.0.0
+ - name: Create Release
+ id: create_release
+ uses: actions/create-release@v1
+ if: steps['semver']['outputs']['RETURN_STATUS'] == '0'
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: ${{ steps.semver.outputs.SEMVER_NEW_VERSION }}
+ release_name: ${{ steps.semver.outputs.SEMVER_NEW_VERSION }}
+ body: Release Version ${{ steps.semver.outputs.SEMVER_NEW_VERSION }}
+ draft: false
+ prerelease: false
\ No newline at end of file
diff --git a/3.x_test_project/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 b/3.x_test_project/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5
new file mode 100644
index 0000000..a111eea
--- /dev/null
+++ b/3.x_test_project/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5
@@ -0,0 +1,3 @@
+source_md5="0167658bc4406f0d0fe437e0197c415a"
+dest_md5="64b0613b3173e1e1c96dd18b6569e62d"
+
diff --git a/3.x_test_project/default_env.tres b/3.x_test_project/default_env.tres
new file mode 100644
index 0000000..20207a4
--- /dev/null
+++ b/3.x_test_project/default_env.tres
@@ -0,0 +1,7 @@
+[gd_resource type="Environment" load_steps=2 format=2]
+
+[sub_resource type="ProceduralSky" id=1]
+
+[resource]
+background_mode = 2
+background_sky = SubResource( 1 )
diff --git a/3.x_test_project/empty_scene.tscn b/3.x_test_project/empty_scene.tscn
new file mode 100644
index 0000000..b171e8d
--- /dev/null
+++ b/3.x_test_project/empty_scene.tscn
@@ -0,0 +1,3 @@
+[gd_scene format=2]
+
+[node name="Node2D" type="Node2D"]
diff --git a/3.x_test_project/export_presets.cfg b/3.x_test_project/export_presets.cfg
new file mode 100644
index 0000000..15d23b4
--- /dev/null
+++ b/3.x_test_project/export_presets.cfg
@@ -0,0 +1,25 @@
+[preset.0]
+
+name="linux"
+platform="Linux/X11"
+runnable=true
+custom_features=""
+export_filter="all_resources"
+include_filter=""
+exclude_filter=""
+export_path="../../test_project.x86_64"
+patch_list=PoolStringArray( )
+script_export_mode=1
+script_encryption_key=""
+
+[preset.0.options]
+
+texture_format/bptc=false
+texture_format/s3tc=true
+texture_format/etc=false
+texture_format/etc2=false
+texture_format/no_bptc_fallbacks=true
+binary_format/64_bits=true
+binary_format/embed_pck=false
+custom_template/release=""
+custom_template/debug=""
diff --git a/3.x_test_project/project.godot b/3.x_test_project/project.godot
new file mode 100644
index 0000000..f645dad
--- /dev/null
+++ b/3.x_test_project/project.godot
@@ -0,0 +1,23 @@
+; 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=4
+
+_global_script_classes=[ ]
+_global_script_class_icons={
+
+}
+
+[application]
+
+config/name="test_project"
+run/main_scene="res://empty_scene.tscn"
+
+[rendering]
+
+environment/default_environment="res://default_env.tres"
diff --git a/4.x_test_project/.gitattributes b/4.x_test_project/.gitattributes
new file mode 100644
index 0000000..8ad74f7
--- /dev/null
+++ b/4.x_test_project/.gitattributes
@@ -0,0 +1,2 @@
+# Normalize EOL for all files that Git considers text files.
+* text=auto eol=lf
diff --git a/4.x_test_project/.gitignore b/4.x_test_project/.gitignore
new file mode 100644
index 0000000..4709183
--- /dev/null
+++ b/4.x_test_project/.gitignore
@@ -0,0 +1,2 @@
+# Godot 4+ specific ignores
+.godot/
diff --git a/4.x_test_project/export_presets.cfg b/4.x_test_project/export_presets.cfg
new file mode 100644
index 0000000..d503ea3
--- /dev/null
+++ b/4.x_test_project/export_presets.cfg
@@ -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}'"
diff --git a/4.x_test_project/icon.svg b/4.x_test_project/icon.svg
new file mode 100644
index 0000000..adc26df
--- /dev/null
+++ b/4.x_test_project/icon.svg
@@ -0,0 +1 @@
+
diff --git a/4.x_test_project/icon.svg.import b/4.x_test_project/icon.svg.import
new file mode 100644
index 0000000..58c0fb1
--- /dev/null
+++ b/4.x_test_project/icon.svg.import
@@ -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
diff --git a/4.x_test_project/project.godot b/4.x_test_project/project.godot
new file mode 100644
index 0000000..1d26b4f
--- /dev/null
+++ b/4.x_test_project/project.godot
@@ -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"
diff --git a/Contributors.md b/Contributors.md
new file mode 100644
index 0000000..fe0b3a0
--- /dev/null
+++ b/Contributors.md
@@ -0,0 +1,19 @@
+# Build Godot Action Contributors
+
+## Maintainers
+
+Name | Email | Twitter |
+-----|-------|---------|
+[Joseph Manley](https://github.com/josephbmanley) | [joseph@cloudsumu.com](mailto:joseph@cloudsumu.com) | [@josephbmanley](https://twitter.com/josephbmanley)
+
+## 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)
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index b7b8031..94ea8a7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -5,7 +5,11 @@ LABEL "com.github.actions.description"="Build a Godot project for multiple platf
LABEL "com.github.actions.icon"="loader"
LABEL "com.github.actions.color"="blue"
+LABEL repository="https://github.com/josephbmanley/build-godot-action"
+LABEL homepage="https://cloudsumu.com/"
+LABEL maintainer="Joseph Manley "
+
USER root
ADD entrypoint.sh /entrypoint.sh
RUN chmod +x entrypoint.sh
-ENTRYPOINT ["/entrypoint.sh"]
+ENTRYPOINT ["/entrypoint.sh"]
\ No newline at end of file
diff --git a/README.md b/ReadMe.md
similarity index 86%
rename from README.md
rename to ReadMe.md
index d91f808..d6f6f6f 100644
--- a/README.md
+++ b/ReadMe.md
@@ -1,13 +1,13 @@
-
+ 

This action builds the godot project in your `$GITHUB_WORKSPACE`, so that you can easily automate builds.
Table of Contents:
-
-- [Quickstart](#quickstart)
-- [Usage](#usage)
+- [Quickstart](#Quickstart)
+- [Usage](#Usage)
+- [Contributors](Contributors.md)
## Quickstart
@@ -42,7 +42,7 @@ jobs:
lfs: true
- name: Build
id: build
- uses: felix-schindler/build-godot-action@v2.0.0
+ uses: manleydev/build-godot-action@v1.4.1
with:
name: example
preset: ${{ matrix.platform }}
@@ -60,7 +60,6 @@ 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.
- > You could also use something like [softprops/action-gh-release](https://github.com/softprops/action-gh-release) to create automated releases of your game, instead of just uploading it as a artifact.
**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`.
@@ -83,7 +82,7 @@ Additionally if you are not using a matrix, you can set the export preset as the
```yaml
- name: Build
id: build
- uses: felix-schindler/build-godot-action@v2.0.0
+ uses: manleydev/build-godot-action@v1.4.1
with:
name: example
preset: win32
@@ -96,7 +95,7 @@ To change the export name, you can the `name` parameter to whatever you want you
```yaml
- name: Build
id: build
- uses: felix-schindler/build-godot-action@v2.0.0
+ uses: manleydev/build-godot-action@v1.4.1
with:
name: test # This project will export with the name "test"
```
@@ -108,7 +107,7 @@ This example is set to build with debug mode enable. To disable debug, either se
```yaml
- name: Build
id: build
- uses: felix-schindler/build-godot-action@v2.0.0
+ uses: manleydev/build-godot-action@v1.4.1
with:
name: example
preset: ${{ matrix.platform }}
@@ -122,7 +121,7 @@ If your project is located in a subdirectory, you can use the `projectDir` to ch
```yaml
- name: Build
id: build
- uses: felix-schindler/build-godot-action@v2.0.0
+ uses: manleydev/build-godot-action@v1.4.1
with:
name: example
preset: ${{ matrix.platform }}
@@ -143,7 +142,7 @@ Example:
```yaml
steps:
-- uses: felix-schindler/build-godot-action@[VERSION]
+- uses: manleydev/build-godot-action@[VERSION]
with:
name: godot-project
preset: HTML5
@@ -159,6 +158,12 @@ steps:
The name of the preset found in `export_presets.cfg` you would like to build.
+#### subdirectory
+
+ *Optional*
+
+ The subdirectory in the `build` folder to output build to, can be useful for self packaging.
+
#### package
*Optional*
diff --git a/action.yml b/action.yml
index 043b96e..51d3ed0 100644
--- a/action.yml
+++ b/action.yml
@@ -1,4 +1,4 @@
-name: "Build Godot Games"
+name: "Build Godot"
description: "Build a Godot project for multiple platforms"
author: josephbmanley
inputs:
@@ -9,7 +9,7 @@ inputs:
description: 'Name of the preset in `export_presets.cfg` to use'
required: true
subdirectory:
- description: 'This has been removed, please do not use.'
+ description: 'Optional name of the subdirectory to put exported project in'
default: ""
package:
description: 'Set true to output an artifact zip file'
diff --git a/entrypoint.sh b/entrypoint.sh
index 62ee593..5617260 100644
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -3,14 +3,12 @@ set -e
# Move godot templates already installed from the docker image to home
mkdir -v -p ~/.local/share/godot/export_templates
-mkdir ./Builds
-# cp -a -f /root/.local/share/godot/export_templates/. ~/.local/share/godot/export_templates/
+cp -a /root/.local/share/godot/export_templates/. ~/.local/share/godot/export_templates/
if [ "$3" != "" ]
then
- echo "SubDirectories are no longer supported."
- exit 1
+ SubDirectoryLocation="$3/"
fi
mode="export-release"
@@ -22,27 +20,20 @@ fi
# Export for project
echo "Building $1 for $2"
+mkdir -p $GITHUB_WORKSPACE/build/${SubDirectoryLocation:-""}
cd "$GITHUB_WORKSPACE/$5"
-godot ./project.godot --headless --${mode} "$2"
+godot --headless --${mode} "$2" $GITHUB_WORKSPACE/build/${SubDirectoryLocation:-""}$1
echo "Build Done"
-ls -la ./Builds
-
-if [ "$5" != "" ]
-then
- BUILD_PATH="$GITHUB_WORKSPACE/$5/build/"
-else
- BUILD_PATH="$GITHUB_WORKSPACE/build/"
-fi
-echo build=$BUILD_PATH >> $GITHUB_OUTPUT
+echo ::set-output name=build::build/${SubDirectoryLocation:-""}
if [ "$4" = "true" ]
then
echo "Packing Build"
mkdir -p $GITHUB_WORKSPACE/package
- cd ./Builds
- zip $GITHUB_WORKSPACE/package/artifact.zip . -r
- echo artifact=package/artifact.zip >> $GITHUB_OUTPUT
+ cd $GITHUB_WORKSPACE/build
+ zip $GITHUB_WORKSPACE/package/artifact.zip ${SubDirectoryLocation:-"."} -r
+ echo ::set-output name=artifact::package/artifact.zip
echo "Done"
fi