crofty 0.22.0 — ターミナルの無いところから公開できます

これまで crofty deploy は、秘密を打ち込むターミナルがある前提でした。0.22.0 からは、CI や 決まった時刻に走らせる処理のように、誰も見ていない実行からも公開できます。

秘密は環境変数から受け取ります

CI のランナーには、秘密を打ち込むターミナルもキーチェーンもありません。そこで crofty は、 CI に登録した秘密を環境変数として受け取ります。

crofty build
CROFTY_CLOUDFLARE_API_TOKEN=$SECRET crofty deploy --skip-build
デプロイ先 変数
Cloudflare Pages CROFTY_CLOUDFLARE_API_TOKEN
SFTP CROFTY_SFTP_PASSWORD / CROFTY_SFTP_KEY_PASSPHRASE
FTPS CROFTY_FTPS_PASSWORD

--token のようなフラグはありませんし、標準入力からも読みません。コマンドラインに書いた秘密は シェルの履歴や ps の一覧に残りますし、AI に渡せばそのコンテキストにも残ります。

環境変数から受け取った秘密は、その実行にだけ使います。キーチェーンに保存しませんし、 .crofty/config.json も書き換えません。どの変数から受け取ったかは出力に出ます。

足りないものを名指しして止まります

秘密が見つからないときに入力を待って固まると、無人の実行はタイムアウトまで止まったままになり、 理由も残りません。何が足りないか、どう埋めるかを1行で出して、終了コード 1 で止まります。

$ crofty deploy
crofty: Password for me@example.com must be typed in a terminal, never through an assistant — run 'crofty deploy' (or 'crofty connect') yourself, or set CROFTY_SFTP_PASSWORD for a run with no terminal

Cloudflare の場合は、どのアカウントに公開するかも決まっている必要があります。一度自分のターミナルから デプロイして deploy.accountId.crofty/config.json に固定するか、--account <id> で渡します。 ターミナルが無いとき、crofty はアカウントを推測しません。

デプロイしなくても、通るかどうか分かります

crofty doctor が、いまのプロジェクトの状態で無人のデプロイが通るかを答えます。秘密がどこから 来るのか、何が足りないか、それぞれどう埋めるかを出します。

足りないときは、こう出ます。

⚠ deploy (sftp): a run with no terminal would stop here:
  · crofty has nowhere to get a password for me@example.com
      ↳ set CROFTY_SFTP_PASSWORD from the runner's secret store, or run 'crofty connect' at a terminal to save it in the keychain

揃っているときは、どこから来るかまで出ます。

✓ deploy (sftp): a run with no terminal has what it needs — credential from $CROFTY_SFTP_PASSWORD

--json でも同じことが分かるので、AI が読んで判断できます。

$ crofty doctor --json
{
  "provider": "sftp",
  "ready": false,
  "credential": "none",
  "missing": [
    {
      "what": "crofty has nowhere to get a password for me@example.com",
      "fix": "set CROFTY_SFTP_PASSWORD from the runner's secret store, or run 'crofty connect' at a terminal to save it in the keychain"
    }
  ]
}

見ているのは、必要なものが揃っているかどうかだけです。値そのものは見ません。秘密を出力することも、 ネットワークに接続することもありません。トークンがあることは分かりますが、それがまだ有効かは デプロイして初めて分かります。

入れ方

crofty.pkg または crofty-setup.exe を落として、ダブルクリックします。OS は一度だけ警告します ── インストーラは未署名です。 始める に手順があります。

ターミナルから:

curl -fsSL https://crofty.site/install.sh | sh                                          # macOS / Linux
irm https://github.com/ShiroDoromoto/crofty/releases/latest/download/install.ps1 | iex  # Windows