|
|
|
|
@ -14,9 +14,85 @@ env:
|
|
|
|
|
ACTIONS_STEP_DEBUG: true
|
|
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
|
prepare-build:
|
|
|
|
|
name: Prepare Build Assets
|
|
|
|
|
runs-on: ubuntu-22.04
|
|
|
|
|
steps:
|
|
|
|
|
|
|
|
|
|
# Ensure dl link is provided before starting build process
|
|
|
|
|
- name: Check Gitea Variables
|
|
|
|
|
run: |
|
|
|
|
|
if [ -z "${{ secrets.EXPORT_TEMPLATE_DOWNLOAD_LINK }}" ]; then
|
|
|
|
|
echo "No export template download link provided, cancelling build"
|
|
|
|
|
echo "Please set the EXPORT_TEMPLATE_DOWNLOAD_LINK secret in Gitea"
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
|
|
|
|
echo "Found EXPORT_TEMPLATE_DOWNLOAD_LINK"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# By default ubuntu-22.04 has nodejs 12, but we need a more modern version for the actions/checkout@v4
|
|
|
|
|
# Should make my docker image for this step in the future
|
|
|
|
|
- name: Install Dependencies
|
|
|
|
|
run: |
|
|
|
|
|
apt-get update
|
|
|
|
|
apt-get install -y curl
|
|
|
|
|
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
|
|
|
|
|
apt-get install -y nodejs unzip git git-lfs
|
|
|
|
|
git lfs install
|
|
|
|
|
|
|
|
|
|
- name: Checkout
|
|
|
|
|
uses: https://gitea.com/actions/checkout@v4
|
|
|
|
|
with:
|
|
|
|
|
lfs: true
|
|
|
|
|
|
|
|
|
|
# Update the version_info.gd file with info about this build.
|
|
|
|
|
# If it isn't in the expected spot of game/scripts/version_info.gd skip it
|
|
|
|
|
- name: Populate Version Text
|
|
|
|
|
run: |
|
|
|
|
|
VERSION_FILE="${PROJECT_PATH}/game/scripts/version_info.gd"
|
|
|
|
|
if [ -f "$VERSION_FILE" ]; then
|
|
|
|
|
PROJECT_NAME="${EXPORT_NAME}"
|
|
|
|
|
COMMIT_NUMBER="${GITHUB_RUN_NUMBER}"
|
|
|
|
|
BRANCH_NAME="${GITHUB_REF_NAME}"
|
|
|
|
|
SHORT_SHA=$(echo $GITHUB_SHA | cut -c1-8)
|
|
|
|
|
|
|
|
|
|
sed -i "s/var project_name: String = \"X\"/var project_name: String = \"${PROJECT_NAME}\"/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var commit_number: int = 0/var commit_number: int = ${COMMIT_NUMBER}/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var branch_name: String = \"X\"/var branch_name: String = \"${BRANCH_NAME}\"/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var short_sha: String = \"X\"/var short_sha: String = \"${SHORT_SHA}\"/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var build_override: bool = false/var build_override: bool = true/" "$VERSION_FILE"
|
|
|
|
|
|
|
|
|
|
echo "Updated version_info.gd:"
|
|
|
|
|
cat "$VERSION_FILE"
|
|
|
|
|
else
|
|
|
|
|
echo "version_info.gd not found at $VERSION_FILE, skipping."
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Download the exprot templates from the link provided in the secrets
|
|
|
|
|
# The expected format is a zip that contains windows and linux export and debug templates
|
|
|
|
|
- name: Download Export Templates
|
|
|
|
|
run: |
|
|
|
|
|
mkdir -p "$PROJECT_PATH/build/build_dependencies/export_templates"
|
|
|
|
|
curl -L "${{ secrets.EXPORT_TEMPLATE_DOWNLOAD_LINK }}" -o "$PROJECT_PATH/build/build_dependencies/export_templates/export_templates.zip"
|
|
|
|
|
unzip -o "$PROJECT_PATH/build/build_dependencies/export_templates/export_templates.zip" -d "$PROJECT_PATH/build/build_dependencies/export_templates/"
|
|
|
|
|
rm "$PROJECT_PATH/build/build_dependencies/export_templates/export_templates.zip"
|
|
|
|
|
|
|
|
|
|
# Debug to see if the export templates were downloaded correctly
|
|
|
|
|
echo "Export templates downloaded to $PROJECT_PATH/build/build_dependencies/export_templates/"
|
|
|
|
|
ls -la "$PROJECT_PATH/build/build_dependencies/export_templates/"
|
|
|
|
|
|
|
|
|
|
- name: Upload Prepared Assets
|
|
|
|
|
uses: https://gitea.com/actions/upload-artifact@v3
|
|
|
|
|
with:
|
|
|
|
|
name: prepared-assets
|
|
|
|
|
path: |
|
|
|
|
|
game/scripts/version_info.gd
|
|
|
|
|
build/build_dependencies/export_templates/
|
|
|
|
|
|
|
|
|
|
export-windows:
|
|
|
|
|
name: Windows Export
|
|
|
|
|
runs-on: ubuntu-22.04 # Use 22.04 with godot 4
|
|
|
|
|
runs-on: ubuntu-22.04 # Use 22.04 with godot 4
|
|
|
|
|
needs: prepare-build
|
|
|
|
|
container:
|
|
|
|
|
image: barichello/godot-ci:mono-4.4.1 # change to mono
|
|
|
|
|
steps:
|
|
|
|
|
@ -33,52 +109,12 @@ jobs:
|
|
|
|
|
uses: https://gitea.com/actions/checkout@v4
|
|
|
|
|
with:
|
|
|
|
|
lfs: true
|
|
|
|
|
- name: Setup
|
|
|
|
|
run: |
|
|
|
|
|
mkdir -v -p ~/.local/share/godot/export_templates/
|
|
|
|
|
mkdir -v -p ~/.config/
|
|
|
|
|
|
|
|
|
|
# Update the version_text.gd file with info about this build.
|
|
|
|
|
# If it isn't in the expected spot of game/scripts/version_text.gd skip it
|
|
|
|
|
- name: Populate Version Text
|
|
|
|
|
run: |
|
|
|
|
|
VERSION_FILE="${PROJECT_PATH}/game/scripts/version_text.gd"
|
|
|
|
|
if [ -f "$VERSION_FILE" ]; then
|
|
|
|
|
PROJECT_NAME="${EXPORT_NAME}"
|
|
|
|
|
COMMIT_NUMBER="${GITHUB_RUN_NUMBER}"
|
|
|
|
|
BRANCH_NAME="${GITHUB_REF_NAME}"
|
|
|
|
|
SHORT_SHA=$(echo $GITHUB_SHA | cut -c1-8)
|
|
|
|
|
|
|
|
|
|
sed -i "s/var project_name: String = \"X\"/var project_name: String = \"${PROJECT_NAME}\"/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var commit_number: int = 0/var commit_number: int = ${COMMIT_NUMBER}/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var branch_name: String = \"X\"/var branch_name: String = \"${BRANCH_NAME}\"/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var short_sha: String = \"X\"/var short_sha: String = \"${SHORT_SHA}\"/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var build_override: bool = false/var build_override: bool = true/" "$VERSION_FILE"
|
|
|
|
|
|
|
|
|
|
echo "Updated version_text.gd:"
|
|
|
|
|
cat "$VERSION_FILE"
|
|
|
|
|
else
|
|
|
|
|
echo "version_text.gd not found at $VERSION_FILE, skipping."
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
- name: Download Export Templates
|
|
|
|
|
run: |
|
|
|
|
|
# Download from zip from ${{ secrets.EXPORT_TEMPLATE_DOWNLOAD_LINK }}
|
|
|
|
|
# Unzip downloaded file to $PROJECT_PATH/build/build_dependencies/export_templates/
|
|
|
|
|
# If the directory doesn't exist, create it
|
|
|
|
|
|
|
|
|
|
if [ -z "${{ secrets.EXPORT_TEMPLATE_DOWNLOAD_LINK }}" ]; then
|
|
|
|
|
echo "No export template download link provided, cancelling build"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
mkdir -p "$PROJECT_PATH/build/build_dependencies/export_templates"
|
|
|
|
|
curl -L "${{ secrets.EXPORT_TEMPLATE_DOWNLOAD_LINK }}" -o "$PROJECT_PATH/build/build_dependencies/export_templates/export_templates.zip"
|
|
|
|
|
unzip -o "$PROJECT_PATH/build/build_dependencies/export_templates/export_templates.zip" -d "$PROJECT_PATH/build/build_dependencies/export_templates/"
|
|
|
|
|
rm "$PROJECT_PATH/build/build_dependencies/export_templates/export_templates.zip"
|
|
|
|
|
|
|
|
|
|
# Debug to see if the export templates were downloaded correctly
|
|
|
|
|
ls -la "$PROJECT_PATH/build/build_dependencies/export_templates/"
|
|
|
|
|
- name: Download Prepared Assets
|
|
|
|
|
uses: https://gitea.com/actions/download-artifact@v3
|
|
|
|
|
with:
|
|
|
|
|
name: prepared-assets
|
|
|
|
|
path: .
|
|
|
|
|
|
|
|
|
|
- name: Windows Build
|
|
|
|
|
run: |
|
|
|
|
|
@ -93,12 +129,12 @@ jobs:
|
|
|
|
|
name: windows
|
|
|
|
|
path: build/bin/windows
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export-linux:
|
|
|
|
|
name: Linux Export
|
|
|
|
|
runs-on: ubuntu-22.04 # Use 22.04 with godot 4
|
|
|
|
|
needs: prepare-build
|
|
|
|
|
container:
|
|
|
|
|
image: barichello/godot-ci:4.4
|
|
|
|
|
image: barichello/godot-ci:mono-4.4.1 # change to mono
|
|
|
|
|
steps:
|
|
|
|
|
# Doing this becuase barichello/godot-ci:4.4 doesn't have nodejs installed, may need to make own docker image in the future
|
|
|
|
|
# By default ubuntu-22.04 has nodejs 12, but we need a more modern version for the actions/checkout@v4
|
|
|
|
|
@ -114,32 +150,11 @@ jobs:
|
|
|
|
|
with:
|
|
|
|
|
lfs: true
|
|
|
|
|
|
|
|
|
|
- name: Setup
|
|
|
|
|
run: |
|
|
|
|
|
mkdir -v -p ~/.local/share/godot/export_templates/
|
|
|
|
|
|
|
|
|
|
# Update the version_text.gd file with info about this build.
|
|
|
|
|
# If it isn't in the expected spot of game/scripts/version_text.gd skip it
|
|
|
|
|
- name: Populate Version Text
|
|
|
|
|
run: |
|
|
|
|
|
VERSION_FILE="${PROJECT_PATH}/game/scripts/version_text.gd"
|
|
|
|
|
if [ -f "$VERSION_FILE" ]; then
|
|
|
|
|
PROJECT_NAME="${EXPORT_NAME}"
|
|
|
|
|
COMMIT_NUMBER="${GITHUB_RUN_NUMBER}"
|
|
|
|
|
BRANCH_NAME="${GITHUB_REF_NAME}"
|
|
|
|
|
SHORT_SHA=$(echo $GITHUB_SHA | cut -c1-8)
|
|
|
|
|
|
|
|
|
|
sed -i "s/var project_name: String = \"X\"/var project_name: String = \"${PROJECT_NAME}\"/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var commit_number: int = 0/var commit_number: int = ${COMMIT_NUMBER}/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var branch_name: String = \"X\"/var branch_name: String = \"${BRANCH_NAME}\"/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var short_sha: String = \"X\"/var short_sha: String = \"${SHORT_SHA}\"/" "$VERSION_FILE"
|
|
|
|
|
sed -i "s/var build_override: bool = false/var build_override: bool = true/" "$VERSION_FILE"
|
|
|
|
|
|
|
|
|
|
echo "Updated version_text.gd:"
|
|
|
|
|
cat "$VERSION_FILE"
|
|
|
|
|
else
|
|
|
|
|
echo "version_text.gd not found at $VERSION_FILE, skipping."
|
|
|
|
|
fi
|
|
|
|
|
- name: Download Prepared Assets
|
|
|
|
|
uses: https://gitea.com/actions/download-artifact@v3
|
|
|
|
|
with:
|
|
|
|
|
name: prepared-assets
|
|
|
|
|
path: .
|
|
|
|
|
|
|
|
|
|
- name: Linux Build
|
|
|
|
|
run: |
|
|
|
|
|
@ -159,8 +174,36 @@ jobs:
|
|
|
|
|
runs-on: ubuntu-22.04
|
|
|
|
|
needs: [export-windows, export-linux]
|
|
|
|
|
steps:
|
|
|
|
|
|
|
|
|
|
# Ensure steam info is provided
|
|
|
|
|
- name: Check Gitea Variables
|
|
|
|
|
run: |
|
|
|
|
|
if [ -z "${{ vars.STEAM_BUILD_USERNAME }}" ]; then
|
|
|
|
|
echo "No Steam Username variable, cancelling build"
|
|
|
|
|
echo "Please set the STEAM_BUILD_USERNAME variable in Gitea"
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
|
|
|
|
echo "Found STEAM_BUILD_USERNAME"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -z "${{ secrets.STEAM_BUILD_PASSWORD }}" ]; then
|
|
|
|
|
echo "No Steam Password secret, cancelling build"
|
|
|
|
|
echo "Please set the STEAM_BUILD_PASSWORD secret in Gitea"
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
|
|
|
|
echo "Found STEAM_BUILD_PASSWORD"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -z "${{ secrets.STEAM_GUARD_CODE }}" ]; then
|
|
|
|
|
echo "No Steam Guard Code secret, cancelling build"
|
|
|
|
|
echo "Please set the STEAM_GUARD_CODE secret in Gitea"
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
|
|
|
|
echo "Found STEAM_GUARD_CODE"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# I can't use the c2msnetwork/steamcmd bc I need to instlal git and nodejs for the actions/checkout@v4 to work
|
|
|
|
|
# and I would need root access to install them, which breaks saving the cache file
|
|
|
|
|
# and I would need root access to install them, which root breaks saving the cache file
|
|
|
|
|
# So here we setup the dependencies for the missing steamcmd image, nodejs, and git manually
|
|
|
|
|
- name: Install Dependencies
|
|
|
|
|
run: |
|
|
|
|
|
@ -246,7 +289,7 @@ jobs:
|
|
|
|
|
|
|
|
|
|
~/steamcmd/steamcmd.sh +set_steam_guard_code "${{ secrets.STEAM_GUARD_CODE }}" +login "${{ vars.STEAM_BUILD_USERNAME }}" "${{ secrets.STEAM_BUILD_PASSWORD }}" +run_app_build "$PWD/build/build_dependencies/steam/app_build_2739610.vdf" +quit
|
|
|
|
|
|
|
|
|
|
# Sanitys check make sure file exists
|
|
|
|
|
# Sanity check make sure file exists
|
|
|
|
|
- name: Debug Post-Cache
|
|
|
|
|
run: |
|
|
|
|
|
echo "Checking for config file in :~/Steam/config/config.vdf"
|
|
|
|
|
|