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

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

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

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


GitLab + пример настройки проекта


 

GitLab + пример настройки проекта


В продолжении статей про GitLab:
http://snakeproject.ru/rubric/article.php?art=gitlab_16.07.2019
http://snakeproject.ru/rubric/article.php?art=gitlab_runner_18.07.2019


Эта статья написана частично по мотивам данной статьи, однако она другая:
https://dotsandbrackets.com/continuous-integration-deployment-ru/


Пример веб-приложения на TypeScript


# mkdir -p /data/test
# cd /data/test/


index.html:


index.ts:


.gitignore (чтобы не комитить результаты компиляции в репозиторий (index.ts -> index.js)):


README.md:


Проверим создание js файла:
# npm install -g typescript
# tsc index.ts
# cat index.js


Создаем репозиторий локально:
# git init .
# git add .
# git commit -m "Initial commit"


Далее можете идти путем оригинала черз докер создание gitlab или по моим статьям...
Оригинал:
docker-compose.yml:


# docker-compose up -d gitlab


Заходим по url, настраиваем пароль root

Создаём новый, приватный проект - "gitlab-ci-proj"


Далее меняете только свой url:
# git remote add origin http://10.0.2.11/root/gitlab-ci-proj.git
# git add .
# git commit -m "Initial commit"
# git push -u origin master


Воодите root и пароль - проверяйте


Стадия "Build"

Для того, чтоб GitLab делал действия после git push, нужно сделать 2 пункта:  

1) .gitlab-ci.yml - файл с инструкциями, когда и что делать
2) машина\сервер\хост\виртуалка\контейнер - в терминологии GitLab называется "runner", который будет выполнять инструкции


.gitlab-ci.yml:


Секция stages описывает стадии
Строка stage: build описывает, что задача под названием Compile принадлежит стадии build
Строка tags описывает, какие тэги должны быть на runner хосте, чтоб ему можно было эту задачу доверить


При коммите .gitlab-ci.yml на странице "Pipelines" проекта появится задача в статусе pending:
# git add .gitlab-ci.yml
# git commit -m "add gitlab-ci"
# git push -u origin master


GitLab постарался её запустить, но т. к. нету раннер-хоста с тегом typescript, задача в ожидании


Настройка gitlab-runner сервиса

# mkdir /data/runner && cd /data/runner
# mkdir runner-ts

На этом шаге можете пользоваться материалом оригинала или моей предыдущей статьей

Оригинал:
runner-ts/Dockerfile:


Где:
-u - передаётся адрес, на котором живёт GitLab сервер
-r - токен регистрации, узнать его можно на странице GitLab -> Settings -> admin/runners
--executor объясняет каким образом интерпретировать и запускать команды из .gitlab-ci.yml. В нашем случае обычные шелл команды, значение передали shell
--tag-list - в нашем случае — какие фичи поддерживает раннер. У нас установлен только TypeScript, вот его-то я в теги и передал.


docker-compose.yml Добавим:


# docker-compose up -d runner-ts


По пути в гитлабе admin/runners мы его увидим

А в пайплайнах нашего проекта задача изменит свой статус


Добавим шаг по развертыванию наших файликов index в "бой"


Для начала создадим папки для вебсервера:
# cd /data/runner && mkdir web && mkdir www


Файл для сборки nginx /data/runner/web/Dockerfile:


И добавим шаг копирования index файлов после успешного теста:
/data/test/.gitlab-ci.yml:


/data/runner/docker-compose.yml:


Соберем и запустим контенер:
# cd /data/runner/ && docker-compose up --build -d


Пробуем изменения в git

Чтоб не вылезла ошибка permissions denied:
# chown -R root:docker /data/test
# chown -R root:docker /data/runner
# chmod -R 770 /data/runner
# chmod -R 770 /data/test


# cd /data/test/

index.ts:


# git add . && git commit -m "Test 1 commit" && git push -u origin master


Наши файлы при успешной сборке появятся в каталоге:
# cat /data/runner/www/index.js


# curl http://10.0.2.11/


Кстати о птичках, водке и тушенке! Делал все это на виртуалке виртуалбоксной.
Когда с ПК пробросил порт и не смог браузером открыть, напоролся на политики iptables:
# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT

 


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

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

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

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

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





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