gowalk-cicd 1.0.18 → 1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -103,6 +103,22 @@ in Play Console; every later run detects API readiness and uploads to the
103
103
  `internal` track automatically. Override the track or status with repository
104
104
  variables `GOOGLE_PLAY_TRACK` and `GOOGLE_PLAY_STATUS`.
105
105
 
106
+ ### Runner disk space
107
+
108
+ An `ubuntu-24.04` runner leaves roughly 14 GB free on `/`, and a release Flutter
109
+ build — Gradle caches, build intermediates, and a 100–200 MB AAB — does not
110
+ reliably fit. The failure surfaces far from its cause:
111
+
112
+ ```
113
+ > java.io.IOException: No space left on device
114
+ zip I/O error: No space left on device
115
+ ```
116
+
117
+ The Android job removes the preinstalled toolchains a Flutter build never uses
118
+ (.NET, the Android NDK, GHC, PowerShell, Swift, Chromium, global node modules)
119
+ and prunes Docker images, reclaiming roughly 25 GB in a few seconds. It prints
120
+ `df -h /` before and after. Linux only; skipped in Bitrise mode.
121
+
106
122
  ### Private git dependencies (Flutter)
107
123
 
108
124
  A Flutter app can depend on private git packages:
@@ -127,8 +143,13 @@ the token lives in one revocable place:
127
143
  gh secret set GIT_PRIVATE_TOKEN --repo my-org/my-app
128
144
  ```
129
145
 
130
- Without the secret the step is skipped, so repos that do not need it are
131
- unaffected.
146
+ Without the secret the step prints a note and exits 0, so repos that do not need
147
+ it are unaffected.
148
+
149
+ > The emptiness check happens in the shell rather than in the step's `if:`.
150
+ > GitHub does not expose the `secrets` context to a step-level `if:` — putting
151
+ > it there does not evaluate to false, it makes the entire workflow file invalid
152
+ > and every run fails before any job starts.
132
153
 
133
154
  ### Localized release notes
134
155
 
@@ -1 +1 @@
1
- 1.0.18
1
+ 1.0.20
@@ -1 +1 @@
1
- 1.0.18
1
+ 1.0.20
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gowalk-cicd",
3
- "version": "1.0.18",
3
+ "version": "1.0.20",
4
4
  "description": "Zero-config GitHub Actions delivery for iOS TestFlight and Android Google Play.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -130,6 +130,22 @@ jobs:
130
130
  else
131
131
  echo "enabled=false" >> "$GITHUB_OUTPUT"
132
132
  fi
133
+ # A release Flutter build (Gradle caches + intermediates + a 100-200 MB AAB)
134
+ # does not fit in the ~14 GB an ubuntu runner leaves free on /, and the
135
+ # failure surfaces far from its cause: "No space left on device" out of
136
+ # aapt2, zip, or Gradle's own cache writer. Reclaiming the preinstalled
137
+ # toolchains this build will never use buys ~25 GB and costs a few seconds.
138
+ - name: Free runner disk space
139
+ if: ${{ steps.mode.outputs.mode == 'local' && runner.os == 'Linux' }}
140
+ shell: bash
141
+ run: |
142
+ echo "Before:"; df -h / | tail -1
143
+ sudo rm -rf /usr/share/dotnet /usr/local/lib/android/sdk/ndk \
144
+ /opt/ghc /usr/local/.ghcup /usr/local/share/powershell \
145
+ /usr/share/swift /usr/local/share/chromium \
146
+ /usr/local/lib/node_modules 2>/dev/null || true
147
+ sudo docker image prune --all --force >/dev/null 2>&1 || true
148
+ echo "After:"; df -h / | tail -1
133
149
  - name: Set up Java
134
150
  if: ${{ steps.mode.outputs.mode == 'local' }}
135
151
  uses: actions/setup-java@0f481fcb613427c0f801b606911222b5b6f3083a # v5
@@ -150,14 +166,23 @@ jobs:
150
166
  # https://github.com/<org>/<repo>.git URLs resolve on the runner, so the
151
167
  # token lives in one revocable place. No secret, no step — repos that do
152
168
  # not need it are unaffected.
169
+ # The `secrets` context is NOT available in a step-level `if:` — using it
170
+ # there does not evaluate false, it makes the whole workflow file invalid
171
+ # and every run fails before any job starts. So the secret comes in as env
172
+ # and the emptiness check happens in the shell.
153
173
  - name: Authenticate private git dependencies
154
- if: ${{ steps.mode.outputs.mode == 'local' && steps.flutter.outputs.enabled == 'true' && secrets.GIT_PRIVATE_TOKEN != '' }}
174
+ if: ${{ steps.mode.outputs.mode == 'local' && steps.flutter.outputs.enabled == 'true' }}
155
175
  shell: bash
156
176
  env:
157
177
  GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }}
158
178
  run: |
159
- git config --global url."https://x-access-token:${GIT_PRIVATE_TOKEN}@github.com/".insteadOf "https://github.com/"
179
+ if [ -z "${GIT_PRIVATE_TOKEN:-}" ]; then
180
+ echo "No GIT_PRIVATE_TOKEN secret; private git dependencies must carry their own credentials."
181
+ exit 0
182
+ fi
160
183
  echo "::add-mask::$GIT_PRIVATE_TOKEN"
184
+ git config --global url."https://x-access-token:${GIT_PRIVATE_TOKEN}@github.com/".insteadOf "https://github.com/"
185
+ echo "Configured authenticated github.com remotes for pub."
161
186
  # Same reason as the iOS job: apps using AppLocalizations must generate it
162
187
  # before anything analyses or compiles them. No-op for apps without l10n.
163
188
  - name: Generate localizations