tools for exporting godot projects via Github Actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: "export"
on:
  workflow_call:
    inputs:
      godot-version:
        description: the godot version
        default: 3.5
        required: true
        type: number
      image:
        description: the container to use
        default: ghcr.io/bend-n/godot-2d:3.5
        type: string
        required: true
      export-name:
        description: the name of the exec. ($export-name.exe)
        default: ${{ github.event.repository.name }}
        required: false
        type: string
      platforms:
        description: space seperated platform list
        default: "windows linux web android mac"
        required: false
        type: string
      project-root-path:
        description: the directory that project.godot is in
        default: "."
        required: false
        type: string
      github-pages:
        description: to deploy to github pages or not to deploy to github pages
        default: "true"
        required: false
        type: string # shut
      itch-path:
        description: "the itch.io path to export to, eg: bendn/chess"
        default: "${{ github.repository_owner }}/${{ github.event.repository.name }}"
        required: false
        type: string
    secrets:
      android-keystore-base64:
        description: For signing the apk, will be filled with andrid debug keystore if left blank
        required: false
      android-keystore-password:
        description: For signing the apk, will be filled with andrid debug keystore if left blank
        required: false
      butler-api-key:
        description: For deploying to itch.io
        required: false

env:
  GODOT_VERSION: ${{ inputs.godot-version }}
  PROJECT_PATH: ${{ inputs.project-root-path }}
  NAME: ${{ inputs.export-name }}

jobs:
  linux:
    runs-on: ubuntu-latest
    if: contains(inputs.platforms, 'linux')
    container:
      image: ${{ inputs.image }}
    name: Linux
    steps:
      - name: Build
        uses: bend-n/godot-actions/.github/actions/export-linux@main

  windows:
    runs-on: ubuntu-latest
    if: contains(inputs.platforms, 'windows')
    container:
      image: ${{ inputs.image }}
    name: Windows
    steps:
      - name: Build
        uses: bend-n/godot-actions/.github/actions/export-windows@main

  mac:
    runs-on: ubuntu-latest
    if: contains(inputs.platforms, 'mac')
    container:
      image: ${{ inputs.image }}
    name: macOS
    steps:
      - name: Build
        uses: bend-n/godot-actions/.github/actions/export-mac@main

  web:
    runs-on: ubuntu-latest
    if: contains(inputs.platforms, 'web')
    container:
      image: ${{ inputs.image }}
    name: HTML5
    steps:
      - name: Build
        uses: bend-n/godot-actions/.github/actions/export-web@main
        with:
          github-pages: ${{ inputs.github-pages }}

  android:
    runs-on: ubuntu-latest
    if: contains(inputs.platforms, 'android')
    container:
      image: ${{ inputs.image }}
    name: Android
    steps:
      - name: Build
        uses: bend-n/godot-actions/.github/actions/export-android@main
        with:
          android-keystore-base64: ${{ secrets.android-keystore-base64 }}
          android-password: ${{ secrets.android-keystore-password }}

  push-itch:
    needs: [linux, android, windows, mac, web]
    if: always() # run even if the previous jobs were skipped
    name: Push to itch.io
    runs-on: ubuntu-20.04
    steps:
      - name: check
        id: secret
        run: |
          function output() { echo "secret=$1" >> "$GITHUB_OUTPUT"; }
          if [[ -n "${{ secrets.butler-api-key }}" ]]; 
            then output "true";
            else output "false";
          fi

      - name: Push
        if: steps.secret.outputs.secret == 'true'
        uses: bend-n/godot-actions/.github/actions/itch-push@main
        with:
          api-key: ${{ secrets.butler-api-key }}
          itch-path: ${{ inputs.itch-path }}