Настройка CI/CD в GitLab
· 3 мин. чтения
Для выполнения каких-либо заданий в рамках пайплайна CI/CD GitLab’у требуется раннер, на котором он будет выполнять работу. Подойдёт вариант с отдельной ВМ, на которой будут выполняться все работы. Характеристика машины:
- 2 ядра CPU
- 4 ГБ RAM
- 40 ГБ свободного места
- ОС Ubuntu 22.04 LTS.
На машине должны быть установлены:
- Bash
- Git версии 2.18.0 или выше
- GPG
- Docker Engine
Подготовка программного окружения на машине
1. Установить Git
sudo apt install git
2. Установить GPG
sudo apt install gpg
3. Установить Docker Engine
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
Добавить GPG-ключ для проверки подписей устанавливаемых пакетов
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Подключить новый репозиторий:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновить патекы
sudo apt-get update
Установить Docker Engine
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Проверить работу
sudo docker run hello-world
Установить Node.js, yarn
1. Установить curl
sudo apt install curl
2. Загрузить скрипт
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
3. Перезагрузить оболочку
source ~/.bashrc
4. Получить список доступных версий
nvm list-remote
5. Установить нужную версию
nvm install [version.number]
6. Проверить установленные версии
node -v && npm -v
7. Импортировать ключ репозитория
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
8. Обновить список пакетов
sudo apt update
9. Установить yarn
sudo apt install yarn
Установка, настройка и подключение GitLab Runner
- Создать новый проект или выбрать созданный на сервере GitLab
- Перейти в меню Settings -> CI/CD. Открыть Runners и нажать Create project runner
- На открывшейся странице добавить tag и нажать Crate runner
- На странице регистрации скопировать команду
- Перейти на виртуальную машину и выполнить скопированную команду
- Для проверки регистрации выполнить команду
gitlab-runner run
SSH подключение к удаленному серверу
-
Создать ключи.
ssh-keygen -t ed25519 -C "комментарий к ключу"
-
Создать на удаленном сервере файл с ключом.
- На удаленном сервере перейти в домашний каталог нужного пользователя: cd /home/user (замените user на имя пользователя).
- Если файла ~/.ssh/authorized_keys нет, создайть его: mkdir -p ~/.ssh/ && touch ~/.ssh/authorized_keys.
- Записать содержимое открытого ключа (например, из файла ~/.ssh/user_key_name.pub) в файл ~/.ssh/authorized_keys. Для этого можно использовать команду: echo "$(cat ~/.ssh/user_key_name.pub)" >> ~/.ssh/authorized_keys.
- Убедится, что файл ~/.ssh/authorized_keys имеет правильные права доступа: chmod 600 ~/.ssh/authorized_keys. Убедитесь, что каталог .ssh имеет правильные права доступа: chmod 700 ~/.ssh.
Установить rsync
sudo apt install rsync
Проверить копирование директории на удаленный сервер
touch test.txt
rsync -a test.txt <логин_пользователя>@<IP_адрес_сервера>:/<каталог_на_сервере>
Создать Pipeline
Добавить в проект GitLab файл .gitlab.ci.yml
с содержимым:
image: node:18-alpine3.20
stages:
- test
- deploy
test:
stage: test
script:
- yarn install
- yarn build
rules:
- if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
create-pages:
stage: deploy
script:
- yarn install
- yarn build
- cp -r ./build /home/runuser/public/
- rsync -zr /home/runuser/public/ gitlab-runner@192.168.1.159:/www/wwwroot/wildnotes.ru
- rm -r /home/runuser/public/
pages: true
rules:
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH