GitLab

Здесь я собираю полезные ссылки и заметки про работу с GitLab и с ним связанные вещи.


Прекрасный курс от Слёрма по гиту — https://slurm.io/git. Лучшее, что я видел из обучения. На момент публикации ссылки курс беcплатный.

GitHub Desktop — клиент для работы с репозиторием https://desktop.github.com/

Учебник по Git — https://git-scm.com/book/ru/v2/.


Как на хосте найти каталоги, куда есть синхронизация с репозиториями

locate .git | grep "/.git$"

Отображения статуса репозитория в командной строке

https://github.com/magicmonty/bash-git-prompt

nano ~/.bashrc

parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(parse_git_branch)\$ '

Клонирование репозитория по ключу:

git clone https://oauth2:glpat-kffedWKPfghsasFc6YDYr@gitlab.com/repo_store/repo_name.git

Аналогично git push.


CI/CD ———————————————————————————————————————————

-> Мои заметки и примеры конструкций в файле .gitlab-ci.ymlhttps://unix-garage.tk/primery-yml-dlya-gitlab-ci-cd/

Хороший урок — база. Ничем не нагружен, объясняется сама суть ci/cd, как настроить элементарный деплой — https://youtu.be/jAIhhULc7YA?si=Tnms50E1YbgTzrS7


Сертификат для локального GitLab

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj ‘/CN=git.office’ -days 3600


#Полезные команды

Посмотреть список веток удалённого репозитория:

git ls-remote --heads <URL_удалённого_репозитория>

Если доступ по токену, то использовать url с токеном (как для git clone, например)

Скачать данные (git pull) с перезаписью локального репозитория в Git

git fetch --all
git reset --hard origin/master
git checkout origin/main
git fetch && git checkout origin/main

Для других веток:

git reset --hard origin/<branch_name>

Обновить только один файл или каталог:

git fetch origin
git checkout origin/main manage.sh
git checkout origin/main /path/to/dir

Регистрация раннера:

gitlab-runner register --name runner-1 --url "https://domain.com" --registration-token <token>

Если надо, чтобы rinner мог запускать docker, то:

sudo usermod -aG docker gitlab-runner


#Трекинг окружения

В секции environment указаны настройки для механизма трекинга окружений, который встроен в GitLab CI и веб-интерфейс GitLab.

Имя окружения (name) составляется динамически из имени ветки, на основе которой собран билд (CI_COMMIT_REF_NAME). Оно передается в деплой.

На базе имени окружения создается динамическая ссылка на окружение в домене компании для тестирования, на Ingress которого создана wildcard A-запись *.test.company.ru.

Итоговая ссылка имеет вид https://$CI_ENVIRONMENT_SLUG.test.company.ru. Благодаря динамической подстановке имени и wildcard А-записи можно публиковать любое количество окружений.

https://habr.com/ru/companies/flant/articles/571482/

https://docs.gitlab.com/ee/ci/environments/


Регистрация gitlab runner

gitlab-runner register --url https://gitlab.hostname.com/ --registration-token GR1348X4Zc1

gitlab-runner register \
    --non-interactive \
    --url "https://gitlab.hostname.com/" \
    --registration-token "GR1348X4Zc1" \
    --executor "shell" \
    --description "shell executor mshads-cron" \
    --tag-list "tagname_as_your_self" \
    --run-untagged="false"

Посмотреть список зарегистрированных раннеров на хосте:

gitlab-runner list

Ошибки

remote: You are not allowed to download code from this project.
fatal: unable to access ‘https://ххххххххх.git/’: The requested URL returned error: 403
Не добавлен пользователь в проект, который запускает pipeline