Murphy’s Dad's Substack

Share this post
Godot CI to Publish From Github to Itch.io
murphysdad.substack.com

Godot CI to Publish From Github to Itch.io

HaywardMorihara
Jul 22, 2022
Share this post
Godot CI to Publish From Github to Itch.io
murphysdad.substack.com

Pre-Requisites:

  • Github Repo

  • Itch Game Page

Steps:

1. Setup export_presets.cfg

Setup  export_presets.cfg in your Godot project and make sure it is NOT part of the .gitignore. This file defines how your game is being exported (HTML, Windows, Mac, Linux, etc.). This file should be generated when you export your game via the Godot UI.

Here's an example of what it looks like for Survive the Island (an HTML export):

[preset.0]  
name="HTML5" 
platform="HTML5" 
runnable=true 
custom_features="" 
export_filter="all_resources" 
include_filter="api_key.env" 
exclude_filter="" 
export_path="../exported/SurviveTheIsland/Survive the Island.html" 
script_export_mode=1
script_encryption_key=""
 
[preset.0.options]  
custom_template/debug="" 
custom_template/release="" 
variant/export_type=0 
vram_texture_compression/for_desktop=true 
vram_texture_compression/for_mobile=false 
html/export_icon=true 
html/custom_html_shell="" 
html/head_include="" 
html/canvas_resize_policy=2 
html/focus_canvas_on_start=true 
html/experimental_virtual_keyboard=true 
progressive_web_app/enabled=false 
progressive_web_app/offline_page="" 
progressive_web_app/display=1 
progressive_web_app/orientation=0 
progressive_web_app/icon_144x144="" 
progressive_web_app/icon_180x180="" 
progressive_web_app/icon_512x512="" 
progressive_web_app/background_color=Color( 0, 0, 0, 1 )

https://github.com/HaywardMorihara/SurviveTheIsland/blob/main/export_presets.cfg

2. Get Your Butler API Key from Itch.io

Go to https://itch.io/user/settings/api-keys and click "Generate new API key". Copy the generated key.

3. Put Your Butler API Key on Github

Go to the settings page of your game’s repository

Select  Secrets > Actions

Click "New repository secret"

Provide the key that you copied from Itch.io.

4. Setup the Github Action

Add the .github/workflows/deploy.yml file to your Github repo. You can use this as a template:

name: godot-ci
on:
  push:     
    branches: [ main ]
env:
  EXPORT_NAME: <<YOUR_GODOT_GAME_NAME>>
  GODOT_VERSION: <<GODOT_VERSION>>
jobs:
  export-web:
    name: Web Export
    runs-on: ubuntu-20.04
    container:
      image: barichello/godot-ci:${GODOT_VERSION}
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:     
          lfs: true
      - name: Setup
        run: |
          mkdir -v -p ~/.local/share/godot/templates
          mv /root/.local/share/godot/templates/${GODOT_VERSION}.stable ~/.local/share/godot/templates/${GODOT_VERSION}.stable
      - name: Web Build
        run: |           
          mkdir -v -p build/web
          godot -v --export "HTML5" ./build/web/index.html
      - name: Upload Artifacts
        uses: actions/upload-artifact@v2
        with:
          name: web
          path: build/web
      - name: Install rsync 📚         
        run: |           
          apt-get update && apt-get install -y rsync
      - name: Publish to itch.io
        uses: manleydev/butler-publish-itchio-action@master
        env:
          BUTLER_CREDENTIALS: ${{ secrets.BUTLER_API_KEY }}
          CHANNEL: web
          ITCH_GAME: <<YOUR_ITCH_GAME_NAME>>
          ITCH_USER: <<YOUR_ITCH_USERNAME>>
          PACKAGE: build/web

Replacing:

  • <<YOUR_GODOT_GAME_NAME>> with the name of your game in Godot

  • <<GODOT_VERSION>> with the version of Godot that you're using

  • <<YOUR_ITCH_GAME_NAME>> with the name of your game in Itch

  • <<YOUR_ITCH_USERNAME>> with your Itch username

See Survive the Island's as a reference: https://github.com/HaywardMorihara/SurviveTheIsland/blob/main/.github/workflows/...
Note that it has a few extra configurations beyond the minimal configuration above, including a notification to post to Discord and an API key for using SilentWolf leaderboard services.

Links for Additional Info

  • Another  Helpful Tutorial: https://dev.to/jeremyckahn/automating-godot-game-releases-to-itchio-1a96

  • godot-ci Github  Action: https://github.com/marketplace/actions/godot-ci

    • Source Code: https://github.com/abarichello/godot-ci

    • Docker Hub: https://hub.docker.com/r/barichello/godot-ci

    • Official Example Config: https://github.com/aBARICHELLO/godot-ci/blob/master/.github/workflows/godot-ci.y...

  • Butler Github Action: https://github.com/marketplace/actions/butler-push

    • Source Code: https://github.com/manleydev/butler-publish-itchio-action

Share this post
Godot CI to Publish From Github to Itch.io
murphysdad.substack.com
Comments
TopNew

No posts

Ready for more?

© 2023 HaywardMorihara
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing