📌

GitHub Actions の Secrets からデータを取り出して Artifact に保存するワークフロー

に公開

背景

Androidのjksファイルがプロジェクトの共有フォルダから消えてしまっていた。GitHub Actions の Secrets には Base64 形式で残っていたので、ワークフローを作って取り出すことにした。

やったこと

といってもほぼAI(CursorのAutoモデル)に丸投げで書いてもらった。

name: Retrieve JKS File

on:
  workflow_dispatch:
  push:

jobs:
  decode-and-upload:
    runs-on: ubuntu-latest
    steps:
      - name: Decode JKS file
        run: |
          echo "${{ secrets.ANDROID_JKS }}" | base64 -d > keystore.jks
      
      - name: Upload JKS file as artifact
        uses: actions/upload-artifact@v4
        with:
          name: keystore
          path: keystore.jks
          retention-days: 1

人間が修正した点

push: を追加

AIは workflow_dispatch: のみをトリガーに設定したが、使い捨てのワークフローなので main ブランチ以外で実行して用が終わったら消したい。push: トリガーがないと初回の実行ができない(そしてうまく行けば初回の実行だけで十分)なので追加した。

一時ファイル保存先のパス

最初は

echo "${{ secrets.ANDROID_JKS }}" | base64 -d > app/keystore.jks

なるパスに保存するように書かれてたが、今回は Flutter アプリのためプロジェクトルート直下には app というディレクトリが無いのでコケていた。人の手で修正。

実行方法

普通に gh workflow run {ワークフロー名} しただけでは、mainブランチに無いので当然実行できない。push: トリガーがあればプッシュしたら自動で実行されるが、初回が失敗したら次は gh コマンドで workflow_dispatch: で実行したい。しかし AI は gh workflow run {ワークフロー名} を提案した。

実際は gh workflow run {ワークフロー名} --ref {ブランチ名} じゃないと動かない。

結論

Cursor のデフォルトのモデルはかなりのコピペエンジニアかもしんない。

Discussion