【发布时间】:2022-02-26 00:49:32
【问题描述】:
上下文
在能够使用 bash 添加 GitLab 个人访问令牌之后:
add_gitlab_personal_access_token(){
local gitlab_username="$1"
local token_name="$2"
local personal_access_token="$3"
local docker_container_id="$4"
output="$(sudo docker exec -i "$docker_container_id" bash -c "gitlab-rails runner \"token = User.find_by_username('$gitlab_username').personal_access_tokens.create(scopes: [:api], name: '$token_name'); token.set_token('$personal_access_token'); token.save! \"")"
}
尝试我
使用设置令牌时使用的docker exec 和bash -c 命令可以撤销令牌:
revoke_token(){
local docker_container_id="$1"
local token="sometokenpersonalgitlabtoken"
output="$(sudo docker exec -i "$docker_container_id" bash -c "gitlab-rails runner \"PersonalAccessToken.find_by_token('$token').revoke! \"")"
echo "output=$output"
}
问题
但是,再次尝试添加token后,它仍在GitLab中,GitLab返回:
DETAIL: Key (token_digest)=(somelongkeysasdfasdfasdfkeyending=) already exists.
所以撤销方法实际上并没有删除令牌,它只是撤销它。
问题
我想知道如何:*如何使用 bash(基于 $token_name)删除 docker 容器中的 GitLab 个人令牌?
【问题讨论】:
-
这能回答你的问题吗? Executing 'bash -c' in 'docker exec' command
-
感谢您的建议,它没有解决问题。主要是我在使用
gitlab-rails用于撤销令牌的命令时遇到了一些困难。此外,我希望一旦它被撤销,它还没有被删除。本质上,当我尝试创建一个具有相同名称的新令牌(已被撤销)时,期望 GitLab 会抛出一个错误说;该令牌已被使用。 -
就 gitlab-rails 而言,您是否 100% 确定撤销命令成功完成?如果您手动构建这些命令,您能否进入容器中的交互式 bash shell 并查看这些命令是否有效?
-
@JeffBowman 没有。但是,我确实通过浏览器看到令牌在 GitLab 服务器内被删除来验证撤销方法是否有效。我认为是的,但是,我认为问题的答案可以认为是不想删除 GitLab 令牌,而只是撤销它。在写我的问题时,我并没有意识到这一点。因此,我在其他行动中看到了更多价值。感谢您提出不同的验证策略。