Skip to content

Commit

Permalink
Merge pull request #1 from josephbmanley/refactor/build
Browse files Browse the repository at this point in the history
Refactor/build
  • Loading branch information
yeslayla authored Dec 28, 2019
2 parents 4940f3b + 7286d00 commit e327189
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 49 deletions.
43 changes: 28 additions & 15 deletions ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,50 @@ This action builds the godot project in your `$GITHUB_WORKSPACE`, so that you ca

## Usage

This action will create a `build` folder with subdirectories for linux, windows, and mac. You must have the export preset configured for each 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.

Example:

```yaml
steps:
- uses: josephbmanley/build-godot-action@master
env:
PROJECT: godot-project
SUBDIRECTORY: project
- uses: josephbmanley/build-godot-action@[VERSION]
with:
name: godot-project
preset: HTML5
```
### Environment Variables
### Inputs
- #### PROJECT **REQUIRED**
#### name **required**
Name of the project files to output.
The name of the exported package/binary
Eg. `godot-project` will export to `godot-project.exe`
#### preset **required**
- #### SUBDIRECTORY
The name of the preset found in `export_presets.cfg` you would like to build.

Subdirectory to export project into.
#### subdirectory

Eg. `project` will export to `$GITHUB_WORKSPACE/build/windows/project/godot-project.exe`
*Optional*

- #### PACKAGE
The subdirectory in the `build` folder to output build to, can be useful for self packaging.

Boolean value on whether or not to zip game files. Packages will be placed in the `$GITHUB_WORKSPACE/package` directory.
#### package

*Optional*

Boolean value, when set to true, builds artficat zip file.

### Outputs

#### build

The location the outputed build is placed.

#### artifact

The location the outputed artifact is placed.

Default Value: `false`

## Credits

Expand Down
18 changes: 18 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,27 @@
name: "Build Godot"
description: "Build a Godot project for multiple platforms"
author: josephbmanley
inputs:
name:
description: 'Name of the exported binary'
required: true
preset:
description: 'Name of the preset in `export_presets.cfg` to use'
required: true
subdirectory:
description: 'Optional name of the subdirectory to put exported project in'
required: false
package:
description: 'Set true to output an artifact zip file'
required: false
runs:
using: docker
image: Dockerfile
args:
- ${{ inputs.name }}
- ${{ inputs.preset }}
- ${{ inputs.subdirectory }}
- ${{ inputs.package }}
branding:
icon: loader
color: blue
46 changes: 12 additions & 34 deletions entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
set -e

workDir=`pwd`
platforms="linux windows mac html5"

# Install export templates
wget https://downloads.tuxfamily.org/godotengine/3.1.1/Godot_v3.1.1-stable_export_templates.tpz --quiet
mkdir ~/.cache
mkdir -p ~/.config/godot
Expand All @@ -12,44 +12,22 @@ unzip Godot_v3.1.1-stable_export_templates.tpz
mv templates/* ~/.local/share/godot/templates/3.1.1.stable
rm -f Godot_v3.1.1-stable_export_templates.tpz

if [ "${SUBDIRECTORY}" != "" ]
if [ "$3" != "" ]
then
SubDirectoryLocation="${SUBDIRECTORY}/"
SubDirectoryLocation="$3/"
fi

# Export for Linux
# Export for project
echo "Building ${PROJECT} for Linux"
mkdir -p ./build/linux/${SubDirectoryLocation:-""}
godot --export Linux/X11 ./build/linux/${SubDirectoryLocation:-""}${PROJECT}
mkdir -p `pwd`/build/${SubDirectoryLocation:-""}
godot --export $2 `pwd`/build/${SubDirectoryLocation:-""}$1

# Export for Windows
echo "Building ${PROJECT} for Windows"
mkdir -p ./build/windows/${SubDirectoryLocation:-""}
godot --export "Windows Desktop" ./build/windows/${SubDirectoryLocation:-""}${PROJECT}.exe
echo ::set-output name=build::`pwd`/build/${SubDirectoryLocation:-""}

# Export for OSX
echo "Building ${PROJECT} for OSX"
mkdir -p ./build/mac/${SubDirectoryLocation:-""}
godot --export "Mac OSX" ./build/mac/${SubDirectoryLocation:-""}${PROJECT}

# Export for HTML5
echo "Building ${PROJECT} for HTML5"
mkdir -p ./build/html5/${SubDirectoryLocation:-""}
godot --export "HTML5" ./build/html5/${SubDirectoryLocation:-""}index.html

mkdir ${workDir}/package
if [ ${PACKAGE:-"false"} = "true" ]
if [ "$4" = "true" ]
then
for platform in $platforms
do
if [ "$(ls -A ${workDir}/build/${platform})" ]; then
echo $platform
pwd
ls
cd ${workDir}/build/${platform}
zip ${workDir}/package/${PROJECT}-${platform}.zip ${SUBDIRECTORY:-"*"} -r
else
echo "${platform} did not build!"
fi
done
mkdir `pwd`/package
cd `pwd`/build
zip `pwd`/package/artifact.zip ${SubDirectoryLocation:-"*"} -r
echo ::set-output name=artifact::`pwd`/package/artifact.zip
fi

0 comments on commit e327189

Please sign in to comment.