ПРЕДПОСЫЛКИ: Шанс увидеть мощный конвейер gitlab других проектных групп, я думаю, что вам нужно вручную выполнять повторяющуюся работу каждый день, мгновенно краснея. Разве это не тот конвейер, который мне нужен. Миграция проектной группы решила перенести code Перейдите на машину компании, затем получите gitlab полностью через эту возможность.
имя существительное:
- .gitlab-ci.yml
.gitlab-ci.yml
) для настройки проекта. Он находится в корневом каталоге репозитория и содержит определения того, как собрать проект. Что касается формата записи файла YAML, я не буду его здесь описывать, а приложу письмо г-на Жуана Ифэна.YAMLруководство. Подробнее о написании файла .gitlab-ci.yml см.Официальный учебник, ниже приведена простая конфигурация, которую я использую в проекте.image: docker:stable
before_script:
- echo http://mirrors.ustc.edu.cn/alpine/v3.6/main > /etc/apk/repositories; echo http://mirrors.ustc.edu.cn/alpine/v3.6/community >> /etc/apk/repositories
- apk update
- apk add --update git bash
- docker login -u yourName -p yourPas yourDockerIp
stages:
- test
- build_docker
- cleanup_build
test:
stage: test
allow_failure: true
cache:
paths:
- node_modules/
script:
- apk add --update nodejs nodejs-npm
- npm install --registry=http://192.168.130.131:9090
- npm test
only:
- branches
build_docker:
stage: build_docker
retry: 2
script:
- apk add bash
- bash build-docker.sh
only:
- dev
- master
- release
- /^hotfixes-\d.\d.\d$/
cache:
paths:
- node_modules/
cleanup_build_dicker:
stage: cleanup_build
retry: 2
when: on_failure
script:
- CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME} bash build-docker.sh
only:
- branches
- dev
- master
- release
Gitlab-runnerда.gitlab-ci.yml
Script runner, Gitlab-runner — это изолированная машина (или виртуальная машина), созданная на основе API Gitlab-CI. GitLab Runner не обязательно устанавливать на тот же компьютер, что и Gitlab, но, учитывая потребление ресурсов и проблемы с безопасностью GitLab Runner, не рекомендуется устанавливать их на один и тот же компьютер.Pipelines
.gitlab-ci.yml
разные задачи на разных этапах.я кладуPipelinesПод ним понимается конвейер, который состоит из нескольких этапов (stages), каждая стадия содержит один или несколько процессов (jobs), такие как закупка материалов, сборка, тестирование, упаковка, а затем продажа через Интернет. Каждый толчок или MR должен пройти через сборочную линию, прежде чем он сможет пройти фабрику. а также
.gitlab-ci.yml
Это то, что определяет этапы этого пайплайна и то, что делает каждый этап.Теперь начинаем официальную установку
1. Создайте частный GitLab:В этом процессе сборки я использовал виртуальную машину ubuntu.После входа в виртуальную машину с набором команд установка была почти завершена.Большую часть времени я все еще сидел в гугле и пробовал разные методы. Сравнив несколько туториалов, я тоже нашла более подходящий для себяметод.
for ubuntu
添加 GitLab 镜像源并安装curl -sS http://packages.gitlab.com.cn/install/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
配置并启动 GitLab
sudo gitlab-ctl reconfigure
Далее мы можем получить доступ к нашему GitLab через доменное имя. При первом доступе будет предложено инициализировать пароль администратора. После завершения настройки система перенаправит на страницу входа. Учетная запись администратора по умолчанию — root. После входа в систему администратора можно изменить. Учетная запись является вашей любимой учетной записью
2. Установите gitlab-бегун
При первоначальной установке я выбрал официально предоставленныйспособ установки,После еды я обнаружил, что он не прост в использовании (видимо, я неправильно открыл его).Поэтому я молча открыл всемогущий гугл и, наконец, выбрал установку gitlab-ci-multi-runner.Есть еще куча команд здесь, тихо Подождите, пока он загрузится.статья
1.添加Gitlab的官方源:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash
2.安装
sudo apt-get install gitlab-ci-multi-runner
3.注册
sudo gitlab-ci-multi-runner register
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://mygitlab.com/ci
Please enter the gitlab-ci token for this runner
xxx-xxx-xxx
Please enter the gitlab-ci description for this runner
my-runner
INFO[0034] fcf5c619 Registering runner... succeeded
Please enter the executor: shell, docker, docker-ssh, ssh?
docker
Please enter the Docker image (eg. ruby:2.1):
node:4.5.0
INFO[0037] Runner registered successfully. Feel free to start it, but if it's
running already the config should be automatically reloaded!
На третьем шаге процесса регистрации вы заполните некоторую информацию, просто следуйте инструкциям и снижению, где токен можно получить на нашей домашней странице администратора GitLab IP / Admin / Runners.
После завершения конфигурации вам также необходимо редактировать бегун внизу страницы, ассоциируйте бегун с проектом, а затем запустить трубопровод.
На данный момент мы еще в одном шаге от настройки раннера: настраиваем раннер для проекта, заходим в интерфейс настройки CI/CD проекта (Настройки => CI/CD => Раннеры), находим раннер, который вы только что связанные, и активируйте его.
После выполнения этого шага проект может запустить конвейер плавно.Когда ветка проекта имеет обновления кода, вы можете увидеть текущий статус задач, которые мы определили в .gitlab-ci-yml.
Встречается яма:
При установке GitLab я столкнулся с ошибкой
There was an error running gitlab-ctl reconfigure:
execute[/opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8] (postgresql::enable line 80) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of /opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8 ----
STDOUT: The files belonging to this database system will be owned by user "gitlab-psql".
This user must also own the server process.
STDERR: initdb: invalid locale settings; check LANG and LC_* environment variables
---- End output of /opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8 ----
Ran /opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8 returned 1
Под руководством лидера полного стека измените файл /etc/default/locale, добавьте следующие две строки для настройки и перезапуска, и это действительно приятно пахнет.
LC_CTYPE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
И естьdocker in dockerУстанавливать докер каждый раз в раннере явно нереально, поэтому используем метод внешнего докера, и официальный GitLab тоже дает соответствующийруководство.
В процессе установки очень медленная загрузка некоторых ресурсов, обязательно переключитесь на отечественное зеркало!!!
echo http://mirrors.ustc.edu.cn/alpine/v3.6/main > /etc/apk/repositories; echo http://mirrors.ustc.edu.cn/alpine/v3.6/community >> /etc/apk/repositories
После запуска в течение определенного периода времени бегун будет генерировать множество изображений, чтобы заполнить память.Вы можете использовать docker-образы для просмотра текущего состояния образа. Вам нужно очистить и удалить ненужные образы. Рекомендуется добавлять запланированные задачи и регулярно очищать образы.
- удалить изображение
docker rmi $(docker images | grep 'dev.k2data.com.cn:5001')
- Сценарий запланированной задачи
#!/bin/sh p=`df / | awk '{print $5}' | grep -Eo '[0-9]+' ` if p > 85; then docker rmi $(docker images | grep 'dev.k2data.com.cn:5001') fi
резервный
gitlab-rake gitlab:backup:create
Суммировать:
С помощью руководителя и нескольких коллег по эксплуатации и техническому обслуживанию эта поездка для создания конвейера gitlab в основном пригодна.Поскольку знания слишком узкие, большую часть времени в процессе занимает проверка документов, проверка документов и постоянное тест Действительно Книгу открывать полезно, вспомнил фразу школьного учителя физики: "Много книг читать нельзя и плохо читать не умеют".
Весь процесс найти не так уж и сложно, и команд не много.Но перед установкой нужно поискать в интернете разные туториалы, а посередине будут всякие странные ошибки.Каждый шаг может быть отдельный туториал. Нам нужно После прочтения туториалов один за другим выбрать тот, который подходит вам больше всего. Это самое трудоемкое место. Еще один трудоемкий момент — это тестирование и установка зависимостей. Иногда может потребоваться час ожидания загрузил и, наконец, нашел, загрузка не удалась, ахахаха.