
bjgeiser/keybase-cliKeybase Docker容器,暴露Keybase CLI及常用命令,如获取文件、克隆仓库、加载GitHub Action密钥等,便于在自动化流程中安全管理Keybase资源。
GitHub: []
Docker Hub: []
该Docker镜像的主要用途是配合此GitHub Action使用:
[***]
shelldocker run --rm \ -v $PWD:$PWD -w $PWD \ -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" \ -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli keybase --version
| 环境变量 | 描述 | 是否必填 |
|---|---|---|
| KEYBASE_USERNAME | Keybase用户名 | 是 |
| KEYBASE_PAPERKEY | Keybase纸质密钥 | 是 |
| KEYBASE_UID | 用于设置文件所有者的主机用户ID | 否 |
| KEYBASE_GID | 用于设置文件所有者的主机用户组ID | 否 |
默认情况下,Keybase复制的文件权限为-rw-------,且Keybase可执行文件不以root身份运行。若未设置KEYBASE_UID和KEYBASE_GID,复制出的文件所有者将为1000:1000。为使文件可读,调用用户可通过环境变量传入当前用户和用户组ID,容器会动态创建具有相同UID:GID的用户,确保容器退出后文件可读。使用--user UID:GID无法动态创建带主目录的用户(Keybase必需),容器会检测并报错。
| 命令 | 语法 | 描述 |
|---|---|---|
| github-action-secrets | github-action-secrets keybase://path/to/file | 用于GitHub Action中获取Keybase密钥 |
| get | get keybase://path/to/file {localpath} | 从Keybase获取文件并复制到本地路径 |
| read | read keybase://path/to/file | 将文件内容输出到标准输出 |
| clone | clone {git clone options} keybase://path/to/repo {localpath} | 克隆Keybase Git仓库 |
| batch | batch "{上述任意命令},{上述任意命令}" 或batch "{上述任意命令};{上述任意命令}" | 在单次docker run中运行多个命令 |
| file | file /path/to/file | 执行命令文件中的一系列命令 |
| keybase | 详见:客户端命令 | 运行任意Keybase客户端命令 |
| {其他命令(即raw)} | 不匹配上述关键字的命令将直接执行,例如chmod a+r filename | 未匹配命令直接执行 |
注意:
{参数}为可选。
github-action-secretsshelldocker run --rm \ -v $PWD:$PWD -w $PWD \ -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" \ -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli github-action-secrets keybase://path/to/file
该命令将解析.yaml、.json或.env文件,并在GitHub Action中设置密钥。文件中的每个条目将使容器输出:
::set-output name={name}::{value} 参考
::add-mask::{value} 参考
注意:通过此方法加载的密钥将在工作流日志中以
*****隐藏。详见:参考了解Action安全相关信息。
action-secrets.yaml
yamlsecret_1: this is secret 1 secret_2: this is secret 2
action-secrets.json
json{ "secret_1": "this is secret 1", "secret_2": "this is secret 2" }
action-secrets.env
shellsecret_1="this is secret 1" secret_2="this is secret 2" secret_3=this_is_secret_3
yamljobs: example: runs-on: ubuntu-latest steps: - name: 获取密钥 id: keybase_secrets shell: bash run: | run --rm \ -v $PWD:$PWD -w $PWD \ -e KEYBASE_USERNAME="${{secrets.KEYBASE_USERNAME}}" \ -e KEYBASE_PAPERKEY="${{secrets.KEYBASE_PAPERKEY}}" \ -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli github-action-secrets keybase://path/to/file - name: 检查密钥是否加载并隐藏 ### 此处日志中密钥应以`*****`显示 run: echo "${{steps.secrets.outputs.secret_1}}"
get将文件复制到本地文件系统。
bashdocker run --rm -v $PWD:$PWD -w $PWD -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli get keybase://path/to/file
bashdocker run --rm -v $PWD:$PWD -w $PWD -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli get keybase://path/to/file keybase://path/to/file path/to/local/file
read将文件内容输出到标准输出。
bashdocker run --rm -v $PWD:$PWD -w $PWD -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli read keybase://path/to/file
clone克隆Git仓库。
bashdocker run --rm -v $PWD:$PWD -w $PWD -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli clone keybase://path/to/clone
bashdocker run --rm -v $PWD:$PWD -w $PWD -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli clone -b my_branch keybase://path/to/clone path/to/local
keybase执行Keybase CLI命令。
bashdocker run --rm -v $PWD:$PWD -w $PWD -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli keybase --version
注意:任何不匹配上述命令的输入将作为原始命令尝试执行。例如
ls -la .或keybase --version均可运行。
raw从容器内执行原始命令。
bashdocker run --rm -v $PWD:$PWD -w $PWD -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli ls -la .
注意:任何不匹配上述命令的输入将作为原始命令尝试执行。例如
ls -la .或keybase --version均可运行。
batch执行以,或;分隔的一系列命令。
bashdocker run --rm -v $PWD:$PWD -w $PWD -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli batch "{上述任意命令},{上述任意命令}"`
file执行命令文件中包含的一系列命令。
bashdocker run --rm -v $PWD:$PWD -w $PWD -e KEYBASE_USERNAME="$KEYBASE_USER" \ -e KEYBASE_PAPERKEY="$KEYBASE_PAPERKEY" -e KEYBASE_UID=$UID -e KEYBASE_GID=$GID \ bjgeiser/keybase-cli file keybase://path/to/command_file.yaml
command_file.yaml
yamlcommands: - get keybase://path/to/file - get keybase://path/to/file2 - get keybase://path/to/file3 - clone keybase://path/to/clone - github-action-secrets keybase://path/to/file # 修改上述下载的文件权限 - chmod a+rw file3
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务