# 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 # The container is no longer needed # container: # image: cm2network/steamcmd:root needs: [export-windows, export-linux] steps: - name: Install Dependencies run: | sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install -y --no-install-recommends \ lib32gcc-s1 \ lib32stdc++6 \ curl \ nodejs \ git \ git-lfs git lfs install - name: Setup SteamCMD run: | mkdir -p ~/steamcmd curl -fsSL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar xvzf - -C ~/steamcmd # Run once to initialize ~/steamcmd/steamcmd.sh +quit - 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 - name: Restore Cache uses: https://gitea.com/actions/cache@v3 with: path: | ~/steamcmd/config/ ~/steamcmd/ssfn* ./steam_build_output/ key: steam-cache-${{ runner.os }}-${{ github.ref_name }}-v2 restore-keys: | steam-cache-${{ runner.os }}- steam-cache- - name: Read Cache run: | # The Read Cache step is now handled by the actions/cache@v3 restore process. # This step can be removed or left for debugging. echo "Files in steamcmd directory:" ls -la ~/steamcmd/ echo "Files in steamcmd config directory:" ls -la ~/steamcmd/config/ - 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 # Try without Steam Guard first (for cached auth) ~/steamcmd/steamcmd.sh +login "${{ vars.STEAM_BUILD_USERNAME }}" "${{ secrets.STEAM_BUILD_PASSWORD }}" +run_app_build "$PWD/build/build_dependencies/steam/app_build_2739610.vdf" +quit || { echo "Login failed, trying with Steam Guard" # If that fails, use Steam Guard in single session ~/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 } - name: Write Cache run: | # The Write Cache step is now handled by the actions/cache@v3 save process. # This step can be removed or left for debugging. echo "Files in steamcmd directory to be cached:" ls -la ~/steamcmd/ ls -la ~/steamcmd/config/