如何删除/取消注册 GitLab 运行程序

ost*_*ach 42 gitlab-ci gitlab-ci-runner

几个月前我注册了一个个人 GitLab 运行器,但我不再使用它。如何完全删除它,使其不会显示在我的 GitLab CI/CD 设置页面上?

Ser*_*kov 39

  1. 列出跑步者以获取他们的令牌和 URL:

    sudo gitlab-runner list
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用指定运行者令牌和 URL 的删除选项进行验证:

    sudo gitlab-runner verify --delete -t YMsSCHnjGssdmz1JRoxx -u http://git.xxxx.com/
    
    Run Code Online (Sandbox Code Playgroud)

  • 为此,您还需要首先从 Gitlab 上的 CI/CD 页面中删除它 (2认同)
  • 即使命令成功执行,运行程序仍然在“/etc/gitlab-runner/config.toml”中,因此看起来什么也没做。这里的另一个答案表明“gitlab-runner unregister”命令对我有用。 (2认同)

ost*_*ach 25

获取您的跑步者令牌和 ID

首先,转到 GitLab 设置页面并找到您要删除的 GitLab 运行程序的令牌(例如250cff81下图所示)和 ID(例如下图所示)。354472

在此输入图像描述

使用gitlab-runnerCLI 取消注册运行器

如果您有权访问用于注册 GitLab 运行程序的计算机,则可以使用以下命令取消注册运行程序,其中替换{TOKEN}为 GitLab 运行程序的令牌(例如250cff81在上面的示例中)。

gitlab-runner unregister --url https://gitlab.org/ --token {TOKEN}
Run Code Online (Sandbox Code Playgroud)

使用 GitLab API 取消注册运行器

如果您无法再访问用于注册运行器的计算机,或者运行器与多个项目关联,则可以使用以下 Python 脚本。设置RUNNER_ID为您的跑步者的 ID(例如354472上面的示例)以及GITLAB_AUTH_TOKEN您可以从您的个人资料页面生成的 GitLab 令牌。

import os
import requests

GITLAB_AUTH_TOKEN = ...
RUNNER_ID = ...

headers = {"PRIVATE-TOKEN": GITLAB_AUTH_TOKEN}

r = requests.get(f"https://gitlab.com/api/v4/runners/{RUNNER_ID}", headers=headers)
runner_data = r.json()

for project in runner_data.get("projects", []):
    r = requests.delete(
        f"https://gitlab.com/api/v4/projects/{project['id']}/runners/{RUNNER_ID}",
        headers=headers,
    )
    if not r.ok:
        print("Encountered an error deleting runner from project:", r.json())

r = requests.delete(f"https://gitlab.com/api/v4/runners/{RUNNER_ID}", headers=headers)
if not r.ok:
    print("Encountered an error deleting runner:", r.json())
Run Code Online (Sandbox Code Playgroud)


swi*_*tyy 8

下面是删除离线运行程序的一行代码(适用于 GitLab 14.5):

curl --header "PRIVATE-TOKEN: <private_token>" "https://<your-instance-address>/api/v4/runners/all?scope=offline&per_page=100" | jq '.[].id' | xargs -I runner_id curl --request DELETE --header "PRIVATE-TOKEN: <private_token>" "https://<your-instance-address>/api/v4/runners/runner_id"
Run Code Online (Sandbox Code Playgroud)

如果您有超过 100 个离线跑步者 ( ),您可能会多次运行此操作per_page=100。

如果您在 Windows 上使用 bash(例如 git bash),请使用 sed从 jq 结果中删除尾随的 '\r' :

curl --header "PRIVATE-TOKEN: <private_token>" "https://<your-instance-address>/api/v4/runners/all?status=offline&per_page=100" | jq '.[].id' | sed 's/\r//' | xargs -I runner_id curl --request DELETE --header "PRIVATE-TOKEN: <private_token>" "https://<your-instance-address>/api/v4/runners/runner_id"
Run Code Online (Sandbox Code Playgroud)

注意:范围已被弃用,请使用状态代替。


Von*_*onC 3

在GitLab 15.5 (2022 年 10 月)中,您还可以使用 Web UI:

在管理区批量删除跑步者

当您需要可视化或管理大型数据集时,批量编辑是一项强大且有价值的功能。对于管理跑步者车队的管理员来说,缺乏批量删除选项会降低工作效率,并增加维护跑步者的运营开销。

现在,在管理区域中,您可以选择多个跑步者并同时删除它们。您还可以一次选择并删除整页跑步者。

https://about.gitlab.com/images/15_5/admin-bulk-delete-runners.png -- 在管理区域批量删除跑步者

请参阅文档和问题。