更新部署工作了
This commit is contained in:
49
scripts/ssh
Normal file
49
scripts/ssh
Normal file
@@ -0,0 +1,49 @@
|
||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||
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
|
||||
QbEaJnq4wHTN+QAAAAPlhY0BAgMEBQY=
|
||||
-----END OPENSSH PRIVATE KEY-----
|
||||
85
scripts/ssh-key-to-b64.mjs
Normal file
85
scripts/ssh-key-to-b64.mjs
Normal file
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* 把 SSH 私钥转换为“单行 base64”,用于放入 Gitea Secrets(例如 DEV_SSH_KEY_B64)。
|
||||
*
|
||||
* 用法:
|
||||
* 1) 从文件读取:
|
||||
* node scripts/ssh-key-to-b64.mjs ~/.ssh/deploy_key
|
||||
*
|
||||
* 2) 从 stdin 读取(直接粘贴私钥内容,结束后按 Ctrl+D):
|
||||
* node scripts/ssh-key-to-b64.mjs -
|
||||
*
|
||||
* 3) 输出同时复制到剪贴板(仅 macOS,需系统自带 pbcopy):
|
||||
* node scripts/ssh-key-to-b64.mjs ~/.ssh/deploy_key --clipboard
|
||||
*
|
||||
* 注意:
|
||||
* - 请不要把输出写入仓库或提交到 git。
|
||||
* - 工作流会优先使用 *_SSH_KEY_B64(更稳,避免多行换行丢失)。
|
||||
*/
|
||||
|
||||
import fs from 'node:fs';
|
||||
import { spawnSync } from 'node:child_process';
|
||||
|
||||
function printHelp() {
|
||||
console.log(`用法:
|
||||
node scripts/ssh-key-to-b64.mjs <私钥文件路径> [--clipboard]
|
||||
node scripts/ssh-key-to-b64.mjs - [--clipboard]
|
||||
|
||||
示例:
|
||||
node scripts/ssh-key-to-b64.mjs ~/.ssh/deploy_key
|
||||
node scripts/ssh-key-to-b64.mjs - --clipboard
|
||||
`);
|
||||
}
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
const clipboard = args.includes('--clipboard') || args.includes('-c');
|
||||
const help = args.includes('--help') || args.includes('-h');
|
||||
const input = args.find((a) => !a.startsWith('-'));
|
||||
|
||||
if (help || !input) {
|
||||
printHelp();
|
||||
process.exit(help ? 0 : 1);
|
||||
}
|
||||
|
||||
function readAllStdin() {
|
||||
return fs.readFileSync(0);
|
||||
}
|
||||
|
||||
let buf;
|
||||
try {
|
||||
if (input === '-') {
|
||||
buf = readAllStdin();
|
||||
} else {
|
||||
buf = fs.readFileSync(input);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(`读取失败:${String(e?.message || e)}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// 规范化:去掉末尾的换行/回车(避免少数环境里复制粘贴多一个空行)
|
||||
let text = buf.toString('utf8').replace(/\r/g, '');
|
||||
text = text.replace(/\n+$/g, '\n');
|
||||
|
||||
if (!text.includes('BEGIN') || !text.includes('PRIVATE KEY')) {
|
||||
console.error('提示:输入内容看起来不像 SSH 私钥(未检测到 PRIVATE KEY 头部)。仍会继续转换,但请确认输入正确。');
|
||||
}
|
||||
|
||||
const b64 = Buffer.from(text, 'utf8').toString('base64');
|
||||
|
||||
if (clipboard) {
|
||||
if (process.platform !== 'darwin') {
|
||||
console.error('当前不是 macOS,无法使用 --clipboard(需要 pbcopy)。将仅输出到 stdout。');
|
||||
} else {
|
||||
const r = spawnSync('pbcopy', [], { input: b64, encoding: 'utf8' });
|
||||
if (r.status !== 0) {
|
||||
console.error(`复制到剪贴板失败:pbcopy 退出码=${r.status}`);
|
||||
} else {
|
||||
console.error('已复制到剪贴板:请粘贴到 Gitea Secrets(例如 DEV_SSH_KEY_B64)。');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 只输出 base64(单行)
|
||||
process.stdout.write(b64);
|
||||
|
||||
Reference in New Issue
Block a user