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