Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


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"

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект