Использование GitLab CLI (glab) с GitLab Connector
В этом руководстве показано, как использовать GitLab CLI (glab) вместе с GitLab Connector для выполнения расширенных операций с GitLab без ручной настройки учетных данных.
Overview
GitLab CLI (glab) — это официальный инструмент командной строки для GitLab, который позволяет взаимодействовать с GitLab API для управления merge request, issue, pipeline и другими функциями. GitLab Connector обеспечивает автоматическую настройку для glab, что упрощает использование в контейнеризованных средах без необходимости вручную управлять учетными данными.
Requirements for GitLab Servers and GitLab CLI (glab)
Подробности см. в разделе Requirements for GitLab Servers and GitLab CLI (glab).
Предварительные требования
- GitLab Connector, настроенный с Private Access Token, имеющим область действия
api
- Базовое понимание команд GitLab CLI
- Доступ kubectl к вашему Kubernetes кластеру
Чему вы научитесь
- Как монтировать конфигурацию GitLab CLI с помощью коннектора
- Как использовать команды glab для распространенных операций с GitLab
- Как комбинировать операции Git и glab в одном Pod
Шаг 1: Создайте GitLab Connector
Сначала убедитесь, что у вас есть GitLab Connector с соответствующими правами:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
name: gitlab-secret
namespace: gitlab-connector-demo
type: connectors.cpaas.io/gitlab-pat-auth
stringData:
token: glpat-xxxxxxxxxxxxxxxxxxxx # Токен должен иметь область действия 'api'
---
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: gitlab-connector
namespace: gitlab-connector-demo
spec:
connectorClassName: gitlab
address: https://gitlab.com
auth:
name: patAuth
secretRef:
name: gitlab-secret
EOF
Замените:
glpat-xxxxxxxxxxxxxxxxxxxx: Замените на ваш фактический Private Access Token GitLab (должен иметь область действия api)
https://gitlab.com: Замените на адрес вашего GitLab сервера (используйте https://gitlab.com для GitLab.com или URL вашего self-hosted GitLab)
Проверьте, что коннектор находится в статусе "Ready":
kubectl get connector gitlab-connector -n gitlab-connector-demo
Шаг 2: Использование glab для операций с API
Создайте Pod, который использует glab для взаимодействия с GitLab API:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: glab-api-demo
namespace: gitlab-connector-demo
spec:
restartPolicy: Never
containers:
- name: gitlab-cli
image: gitlab/glab:v1.74.0
command:
- "sh"
- "-c"
- |
set -ex
# Настройка конфигурации glab
mkdir -p ~/.config/glab-cli
cp /opt/gitlab/config.yml ~/.config/glab-cli/
chmod 600 ~/.config/glab-cli/config.yml
# Список проектов
echo "Listing projects..."
glab api projects
# Получение информации о текущем пользователе
echo "Getting user info..."
glab api user
echo "glab api operations completed"
volumeMounts:
- name: gitlab-config
mountPath: /opt/gitlab
volumes:
- name: gitlab-config
csi:
driver: connectors-csi
readOnly: true
volumeAttributes:
connector.name: "gitlab-connector"
configuration.names: "gitlabconfig"
EOF
Проверьте логи:
kubectl logs -f glab-api-demo -n gitlab-connector-demo
Вы увидите вывод со списком проектов и информацией о пользователе.
Шаг 3: Клонирование репозиториев с помощью glab
Используйте glab для клонирования репозиториев:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: glab-clone-demo
namespace: gitlab-connector-demo
spec:
restartPolicy: Never
containers:
- name: gitlab-cli
image: gitlab/glab:v1.74.0
command:
- "sh"
- "-c"
- |
set -ex
# Настройка конфигурации glab и git
mkdir -p ~/.config/glab-cli
cp /opt/gitlab/config.yml ~/.config/glab-cli/
chmod 600 ~/.config/glab-cli/config.yml
cp /opt/gitlab/.gitconfig ~/
chmod 644 ~/.gitconfig
# Клонирование репозитория с помощью glab
glab repo clone <your-group>/<your-repo> /tmp/repo
echo "Repository cloned successfully"
# Список содержимого репозитория
ls -la /tmp/repo
volumeMounts:
- name: gitlab-config
mountPath: /opt/gitlab
volumes:
- name: gitlab-config
csi:
driver: connectors-csi
readOnly: true
volumeAttributes:
connector.name: "gitlab-connector"
configuration.names: "gitlabconfig,gitconfig"
EOF
Замените:
<your-group>/<your-repo>: Замените на путь к вашему GitLab репозиторию (например, gitlab-org/gitlab)
Важно: При клонировании репозиториев с помощью glab необходимо монтировать обе конфигурации: gitlabconfig и gitconfig.
Проверьте логи:
kubectl logs -f glab-clone-demo -n gitlab-connector-demo
Вы увидите вывод успешного клонирования репозитория:
+ glab repo clone <your-group>/<your-repo> /tmp/repo
Cloning into '/tmp/repo'...
remote: Enumerating objects: 123, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (89/89), done.
remote: Total 123 (delta 34), reused 123 (delta 34), pack-reused 0
Receiving objects: 100% (123/123), 45.67 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (34/34), done.
+ echo 'Repository cloned successfully'
Repository cloned successfully
Шаг 4: Управление Merge Requests
Используйте glab для работы с merge request:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: glab-mr-demo
namespace: gitlab-connector-demo
spec:
restartPolicy: Never
containers:
- name: gitlab-cli
image: gitlab/glab:v1.74.0
command:
- "sh"
- "-c"
- |
set -ex
# Настройка конфигураций
mkdir -p ~/.config/glab-cli
cp /opt/gitlab/config.yml ~/.config/glab-cli/
chmod 600 ~/.config/glab-cli/config.yml
cp /opt/gitlab/.gitconfig ~/
chmod 644 ~/.gitconfig
# Клонирование репозитория
glab repo clone <your-group>/<your-repo> /tmp/repo
cd /tmp/repo
# Список merge request
echo "Listing merge requests..."
glab mr list
# Просмотр конкретного merge request
echo "Viewing merge request #1..."
glab mr view <mr-number>
volumeMounts:
- name: gitlab-config
mountPath: /opt/gitlab
volumes:
- name: gitlab-config
csi:
driver: connectors-csi
readOnly: true
volumeAttributes:
connector.name: "gitlab-connector"
configuration.names: "gitlabconfig,gitconfig"
EOF
Замените:
<your-group>/<your-repo>: Замените на путь к вашему GitLab репозиторию (например, gitlab-org/gitlab)
<mr-number>: Замените на номер merge request, который хотите просмотреть или закрыть (например, 1, 42)
Важно: При использовании команд glab, взаимодействующих с репозиторием (например, glab mr list в каталоге репозитория), необходимо монтировать обе конфигурации: gitlabconfig и gitconfig.
Проверьте логи:
kubectl logs -f glab-mr-demo -n gitlab-connector-demo
Вы увидите вывод списка merge request и деталей merge request:
+ glab mr list
Listing merge requests...
Showing 8 open merge requests on <your-group>/<your-repo>. (Page 1)
!8 <your-group>/<your-repo>!14 change at: 1764221453 (master) ← (dev-1764221453)
...
Viewing merge request #1...
+ echo 'Viewing merge request #1...'
+ glab mr view 8
title: Feat/support build xiaokk
state: open
author: kkxiao
labels:
assignees:
reviewers:
comments: 0
number: 8
url: https://<your-gitlab-server>/<your-group>/<your-repo>/-/merge_requests/8
--
Следующие шаги