Здесь я собираю полезные ссылки и заметки про работу с 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.yml — https://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
Ошибки