154 lines
5.5 KiB
YAML
154 lines
5.5 KiB
YAML
# This is an edtied version of abarichello's automation script for gitea and godot mono
|
|
# https://github.com/abarichello/godot-ci/blob/master/.github/workflows/godot-ci.yml
|
|
|
|
name: "godot-ci export"
|
|
on: push
|
|
|
|
# NOTE: If your `project.godot` is at the repository root, set `PROJECT_PATH` below to ".".
|
|
|
|
env:
|
|
GODOT_VERSION: 4.4.1
|
|
EXPORT_NAME: videogame
|
|
PROJECT_PATH: "."
|
|
ACTIONS_RUNNER_DEBUG: true
|
|
ACTIONS_STEP_DEBUG: true
|
|
|
|
jobs:
|
|
export-windows:
|
|
name: Windows Export
|
|
runs-on: ubuntu-22.04 # Use 22.04 with godot 4
|
|
container:
|
|
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
|
|
- name: Install Node.js
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y curl
|
|
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
|
|
apt-get install -y nodejs
|
|
- name: Checkout
|
|
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/
|
|
- name: Windows Build
|
|
run: |
|
|
mkdir -v -p build/bin/windows
|
|
EXPORT_DIR="$(readlink -f build/bin)"
|
|
cd $PROJECT_PATH
|
|
godot --headless --verbose --export-release "Windows Desktop" "$EXPORT_DIR/windows/$EXPORT_NAME.exe"
|
|
|
|
- name: Upload Artifact
|
|
uses: https://gitea.com/actions/upload-artifact@v3 # using v3 ad v4 has issues wwith gitea
|
|
with:
|
|
name: windows
|
|
path: build/bin/windows
|
|
|
|
|
|
export-linux:
|
|
name: Linux Export
|
|
runs-on: ubuntu-22.04 # Use 22.04 with godot 4
|
|
container:
|
|
image: barichello/godot-ci:4.4
|
|
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
|
|
- name: Install Node.js
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y curl
|
|
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
|
|
apt-get install -y nodejs
|
|
- name: Checkout
|
|
uses: https://gitea.com/actions/checkout@v4
|
|
with:
|
|
lfs: true
|
|
- name: Setup
|
|
run: |
|
|
mkdir -v -p ~/.local/share/godot/export_templates/
|
|
- name: Linux Build
|
|
run: |
|
|
mkdir -v -p build/bin/linux
|
|
EXPORT_DIR="$(readlink -f build/bin)"
|
|
cd $PROJECT_PATH
|
|
godot --headless --verbose --export-release "Linux" "$EXPORT_DIR/linux/$EXPORT_NAME.x86_64"
|
|
- name: Upload Artifact
|
|
uses: https://gitea.com/actions/upload-artifact@v3 # using v3 ad v4 has issues wwith gitea
|
|
with:
|
|
name: linux
|
|
path: build/bin/linux
|
|
|
|
steam-publish:
|
|
name: Steam Publish
|
|
runs-on: ubuntu-22.04
|
|
container:
|
|
image: cm2network/steamcmd:root
|
|
needs: [export-windows, export-linux]
|
|
steps:
|
|
# Need to install nodejs and git, and initalize git lfs for checkout
|
|
- name: Install node.js and git
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y curl
|
|
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
|
|
apt-get install -y nodejs git git-lfs
|
|
git lfs install
|
|
- name: Checkout
|
|
uses: https://gitea.com/actions/checkout@v4
|
|
with:
|
|
lfs: true
|
|
|
|
# Download artifacts, this isn't done automatially like it was in gitlab
|
|
- name: Download Windows Artifacts
|
|
uses: https://gitea.com/actions/download-artifact@v3
|
|
with:
|
|
name: windows
|
|
path: build/bin/windows
|
|
|
|
- name: Download Linux Artifacts
|
|
uses: https://gitea.com/actions/download-artifact@v3
|
|
with:
|
|
name: linux
|
|
path: build/bin/linux
|
|
|
|
# Restore Steam cache
|
|
- name: Restore Steam Cache
|
|
uses: https://gitea.com/actions/cache@v3
|
|
with:
|
|
path: |
|
|
./steam_cache/
|
|
./steam_build_output/
|
|
key: steam-cache-${{ runner.os }}-${{ github.ref_name }}
|
|
restore-keys: |
|
|
steam-cache-${{ runner.os }}-
|
|
steam-cache-
|
|
|
|
# Read Cache
|
|
- name: Read Cache
|
|
run: |
|
|
mkdir -p ./steam_cache
|
|
cp ./steam_cache/config.vdf /home/steam/Steam/config/ 2>/dev/null || echo "No cached config file"
|
|
cp ./steam_cache/ssfn* /home/steam/Steam/ 2>/dev/null || echo "No cached sentry file"
|
|
|
|
- name: Update VDF
|
|
run: |
|
|
cd $PROJECT_PATH
|
|
SHORT_SHA=$(echo $GITHUB_SHA | cut -c1-8)
|
|
sed -i -e "s/STEAM_DESCRIPTION/${GITHUB_REF_NAME} - ${SHORT_SHA}/" build/build_dependencies/steam/app_build_2739610.vdf
|
|
|
|
- name: Publish to Steam
|
|
run: |
|
|
cd $PROJECT_PATH
|
|
/home/steam/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
|
|
|
|
# Write cache
|
|
- name: Cache Config and sentry
|
|
run: |
|
|
mkdir -p ./steam_cache
|
|
cp /home/steam/Steam/config/config.vdf ./steam_cache/ 2>/dev/null || echo "No config file to cache"
|
|
cp /home/steam/Steam/ssfn* ./steam_cache/ 2>/dev/null || echo "No sentry files to cache" |