Git и GitLab пример проекта
Git и GitLab пример проекта
----Git----
Установка обычного Git в Linux:
apt-get install git-core
Или
yum install git-core
Создание пользователя:
useradd git
passwd git
Создание ssh ключей:
ssh-keygen -t rsa
Копируем ключ пользователю на другом сервере, чтоб он имел доступ:
cat ~/.ssh/id_rsa.pub | ssh git@remote-server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Создаем проект на сервере:
mkdir -p /home/swapnil/project-1.git
cd /home/swapnil/project-1.git
git init --bare
На клиенте подключаем проект:
mkdir -p /home/swapnil/git/project
cd /home/swapnil/git/project
git init
git add .
git commit -m "message" -a
git remote add origin ssh://git@remote-server:/home/swapnil/project.git
git push origin master
Клонирование проекта на клиенте:
git clone git@remote-server:/home/swapnil/project.git
----GitLab----
Установка GitLab в Linux:
apt-get install postfix
Или
yum install postfix
Установка самого gitlab:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-сe/script.rpm.sh | sudo bash
Или:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
Устанавливаем доменное имя для приложения:
EXTERNAL_URL="http://gitlab.local"
yum install gitlab-ce
Или:
apt install gitlab-ce
Смотрим настройки:
/etc/gitlab/gitlab.rb
letsencrypt['enable'] = true
external_url "http://gitlab.local"
letsencrypt['contact_emails'] = ['admin@local']
Перезагружаем:
gitlab-ctl reconfigure
Переходим, если нет имени просто по ip:
http://gitlab.local
Чтоб открыть доступ по ssh понадобится сгенерировать ключи:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_gitlab
Копируем содержимое файла ~/.ssh/id_rsa_gitlab.pub в web интерфейс gitlab:
cat ~/.ssh/id_rsa_gitlab.pub
Открываем раздел Admin Area -> Visibility and access controls -> Enabled Git access protocols -> Both SSH and HTTPS(S)
User Settings -> SSH Keys -> копируем свой pub ключ сюда
Создайте тестовый проект и попробуйте закачать файл
Пробуем:
git clone Your_Login@gitlab.local:test/test.git
cd test/
git add .
git commit -m "test commit"
git push origin master
----GitLab CI пример проекта----
Идея заимствована из статьи:
https://itnan.ru/post.php?c=1&p=309380
Для тестов и исполнения Job нам понадобится runner
Как установить и настроить я уже описывал например тут:
http://snakeproject.ru/rubric/article.php?art=gitlab_runner_18.07.2019
Пример настройки проекта с gitlab и runner описывал тут:
http://snakeproject.ru/rubric/article.php?art=gitlab3_06.08.2019
Предполагается далее, что он уже установлен и настроен
В гитлабе есть огромное количество возможностей и функционала
Рассмотрим простенький проект со сборкой
Допустим есть простейшая команда, возвращающая определенную строку из файла:
cat file.txt | grep -q "Im fine"
1. Задача: Прикрутим тесты
По дефолту GitLab использует Docker образ Ruby
Он достаточно замедляет компиляцию
Заменим дефолтный image на alpine
Создадим файл - .gitlab-ci.yml , в который напишим тест на это значение:
Собственно в логах Build увидим успешную сборку с кодом 0
Теперь заменим в файле file.txt слово "fine" например на "bad"
Следующая сборка провалится с кодом 1
Насколько видно, автоматические тесты работают корректно
2. Задача: Возможность скачать результаты сборки
.gitlab-ci.yml:
В результатах сборки появится вкладка "artefact" , теперь можно скачать результаты сборки
Скачать последний artifacts.zip из GitLab
Синтаксис на публичный репозиторий GitLab:
Живой пример на приватный с помощью токена (в настройках юзера)
3. Задача: Добавляем стадии проверки выполнения
Собственно нужно сделать так, чтоб стадия artefact выполнялась только при успехе стадии test
.gitlab-ci.yml:
Теперь стадия "artefact " будет выполняться только при успешной сборке на стадии "test "
Комментарии пользователей
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!