101 lines
3.8 KiB
ERB
101 lines
3.8 KiB
ERB
# Generated pipeline — WarpEngine /build/config (platform: godot, name: <%= name %>)
|
|
steps:
|
|
- name: version
|
|
image: alpine
|
|
commands:
|
|
- apk add --no-cache git jq
|
|
- |
|
|
if [ -f metadata.json ]; then
|
|
VERSION=$(jq -r '.version' metadata.json)
|
|
else
|
|
VERSION=$(git rev-parse --short HEAD)
|
|
fi
|
|
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
|
if [ "$BRANCH" != "main" ] && [ "$BRANCH" != "master" ]; then
|
|
VERSION="dev-$VERSION-$BRANCH"
|
|
fi
|
|
echo "VERSION is: $VERSION"
|
|
echo $VERSION > .version
|
|
|
|
- name: build
|
|
image: <%= builder %>
|
|
commands:
|
|
- |
|
|
VERSION=$(cat .version)
|
|
echo "==> Importing project"
|
|
godot --headless --import
|
|
echo "==> Exporting web build (Web preset)"
|
|
mkdir -p dist/web
|
|
godot --headless --export-release "Web" dist/web/index.html
|
|
echo "==> Packaging web build for $VERSION"
|
|
(cd dist/web && zip -r "../../<%= name %>-$VERSION.html.zip" .)
|
|
rm -rf dist/web
|
|
- |
|
|
VERSION=$(cat .version)
|
|
# exports a win/linux target + zips it with a single root folder
|
|
# (embed_pck makes the export a single executable)
|
|
binary_build() {
|
|
B_PRESET="$1"; B_EXT="$2"; B_TARGET="$3"
|
|
PKG_DIR="<%= name %>-$VERSION-$B_TARGET"
|
|
echo "==> Building $PKG_DIR"
|
|
rm -rf "$PKG_DIR" "$PKG_DIR.zip"
|
|
mkdir -p "$PKG_DIR"
|
|
godot --headless --export-release "$B_PRESET" "$(pwd)/$PKG_DIR/<%= name %>$B_EXT"
|
|
if [ -f LICENSE ]; then cp LICENSE "$PKG_DIR/"; fi
|
|
if [ -f README.md ]; then cp README.md "$PKG_DIR/"; fi
|
|
zip -r "$PKG_DIR.zip" "$PKG_DIR" >/dev/null
|
|
rm -rf "$PKG_DIR"
|
|
echo "==> $PKG_DIR.zip kesz"
|
|
}
|
|
# mac: from linux Godot can only export macOS into a .zip (holding the
|
|
# .app); repackage it to the root-folder convention (zip -ry keeps
|
|
# exec bits and symlinks)
|
|
binary_build_mac() {
|
|
B_PRESET="$1"; B_TARGET="$2"
|
|
PKG_DIR="<%= name %>-$VERSION-$B_TARGET"
|
|
echo "==> Building $PKG_DIR"
|
|
rm -rf "$PKG_DIR" "$PKG_DIR.zip"
|
|
mkdir -p "$PKG_DIR"
|
|
godot --headless --export-release "$B_PRESET" "$(pwd)/$PKG_DIR/<%= name %>-mac-tmp.zip"
|
|
(cd "$PKG_DIR" && unzip -q "<%= name %>-mac-tmp.zip" && rm "<%= name %>-mac-tmp.zip")
|
|
if [ -f LICENSE ]; then cp LICENSE "$PKG_DIR/"; fi
|
|
if [ -f README.md ]; then cp README.md "$PKG_DIR/"; fi
|
|
zip -ry "$PKG_DIR.zip" "$PKG_DIR" >/dev/null
|
|
rm -rf "$PKG_DIR"
|
|
echo "==> $PKG_DIR.zip kesz"
|
|
}
|
|
binary_build "Windows x86" ".exe" "win-x86"
|
|
binary_build "Windows x64" ".exe" "win-x64"
|
|
binary_build "Linux x64" "" "linux-x64"
|
|
binary_build_mac "Mac universal" "mac-universal"
|
|
|
|
- name: upload
|
|
image: alpine
|
|
environment:
|
|
UPDATE_SERVER: <%= update_server %>
|
|
UPDATE_SECRET:
|
|
from_secret: application_token
|
|
commands:
|
|
- apk add --no-cache curl
|
|
- |
|
|
VERSION=$(cat .version)
|
|
cp metadata.json "<%= name %>-$VERSION.metadata.json"
|
|
BINS=$(ls <%= name %>-$VERSION-*.zip 2>/dev/null || true)
|
|
for f in "<%= name %>-$VERSION.html.zip" "<%= name %>-$VERSION.metadata.json" $BINS; do
|
|
curl -fsS -H "X-Update-Secret: $UPDATE_SECRET" \
|
|
-F "file=@$f" \
|
|
"$UPDATE_SERVER/build/upload?name=<%= name %>&version=$VERSION" || exit 1
|
|
done
|
|
|
|
- name: publish
|
|
image: alpine
|
|
environment:
|
|
UPDATE_SERVER: <%= update_server %>
|
|
UPDATE_SECRET:
|
|
from_secret: application_token
|
|
commands:
|
|
- apk add --no-cache curl
|
|
- |
|
|
VERSION=$(cat .version)
|
|
curl -fsS -X POST -H "X-Update-Secret: $UPDATE_SECRET" "$UPDATE_SERVER/build/publish?name=<%= name %>&platform=godot&version=$VERSION"
|