Второе автоматическое развертывание Gitlab: устанавливаем GITLAB-RUNNER

GitLab

предисловие

Начальник фронтенда компании по каким-то причинам уволился и уехал в спешке. Последние два дня я учился и строил, записывая весь процесс сборки.

Это серия статей, от сборки Gitlab до установки, регистрации Gitlab-runner и их объединения для развертывания простого проекта.Из этих статей вы узнаете, как автоматически упаковывать и развертывать собственные проекты в Gitlab.

В серию входят четыре статьи, в том числе:

  1. Как установить Gitlab на облаке Alibaba
  2. Установите GITLAB-RUNNER
  3. Вход в систему LINUX без пароля
  4. Разверните проект GITLAB с помощью GITLAB-RUNNER

Так как я работаю на фронтенде, я не владею Linux, если есть какие-то ошибки, пожалуйста, укажите.

Оригинальный адрес:Установите GITLAB-RUNNER

Это вторая часть серии, мы установим Gitlab-runner и напишем простой файл .gitlab-ci.yml, чтобы увидеть эффект.

Предварительная работа

Два сервера, у меня оба Linux CentOS 7.6 64 бит Нужно установить Gitlab, чтобы узнать, как установить Gitlab, вы можете проверить эту статьюПримечания GITLAB по установке Alibaba Cloud. Другой используется для установки Gitlab-runner.

Шаг 1: Установите Gitlab-runner

Загрузите соответствующий системе Gitlab-runner (текущая установленная версия — 11.9.2):

 # Linux x86-64
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

 # Linux x86
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386

 # Linux arm
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm

Добавьте разрешение на выполнение в Gitlab-runner:

 sudo chmod +x /usr/local/bin/gitlab-runner

Если вы хотите использовать Docker, вы можете установить Docker (вы можете пропустить его, если не используете)

 curl -sSL https://get.docker.com/ | sh

Создайте пользователя GitLab CI

 sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

Установить и запустить службу

 sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
 sudo gitlab-runner start

Шаг 2: Зарегистрируйте бегуна

Выполните следующую команду, чтобы начать регистрацию:

 sudo gitlab-runner register

Заполните URL-адрес Gitlab:

 Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
 # 没有域名所以填的是IP
 http://xx.xx.xxx.xx:8888

Введите токен, необходимый для регистрации Runner:

Здесь есть два типа токенов一种是 Shared Runner ,该 Runner 所有项目都可以使用Расположение: верхний значок настроек 🔧 -> Обзор левой боковой панели -> Бегун.

share-runners
另一种是 Specific Runner ,该 Runner 指定具体某个项目才可使用Расположение: введите проект -> Настройка в левом столбце -> CI/CD -> Найдите элемент Runners в области содержимого, нажмите, чтобы развернуть
specific-runners

 Please enter the gitlab-ci token for this runner
 # 这里我们使用 Shared Runner Token
 xxxxxxx

Введите описание Runner, которое можно изменить позже в пользовательском интерфейсе GitLab:

 Please enter the gitlab-ci description for this runner
 test-gitlab-runner-description

Введите теги бегуна (эти теги будут использоваться позже)

 Please enter the gitlab-ci tags for this runner (comma separated)
 my-tag

Выберите бегуна бегуна

Здесь я использую оболочку.

 Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
 shell

Если все пойдет хорошо, мы увидим

Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Если выбран Docker, требуется дополнительный шаг:

 Please enter the Docker image (eg. ruby:2.1):
 alpine:latest

Мы возвращаемся к Share Runners, чтобы увидеть добавленного бегуна.

runner-success

Шаг 3. Создайте проект и файл .gitlab-ci.yml.

Создайте файл .gitlab-ci.yml в корневом каталоге проекта и зафиксируйте его с помощью git.

# 定义 stages(阶段,会依次执行)
stages:
  - install_deps
  - build_prod
  - deploy_prod

cache:
  key: ${CI_BUILD_REF_NAME}
  paths:
    - node_modules/
    - dist

# 安装构建依赖
install_deps_job:
  stage: install_deps
  # 在哪个分支才会执行脚本
  only:
    # - dev
    # - release
    - master
  script:
    - echo '模拟安装构建依赖阶段'
  tags:
    - my-tag

# 构建预prod环境src目录下应用
build_prod_job:
  stage: build_prod
  only:
    - master
  script:
    - echo '构建预prod环境src目录下应用阶段'
  tags:
    - my-tag

# 部署生产环境
deploy_prod_job:
  stage: deploy_prod
  only:
    - master
  script:
    - echo '部署生产环境阶段'
  tags:
    - my-tag

然后你可能会看到报错

Running with gitlab-runner 11.9.2 (fa86510e)
  on desc Z1UPKJjn
Using Shell executor...
Running on iZwz98jvb8bcz40ko474qsZ...
bash: line 68: git: command not found
bash: line 66: cd: /home/gitlab-runner/builds/Z1UPKJjn/0/main-group/main-project: No such file or directory
ERROR: Job failed: exit status 1

尴尬
报错的原因是我的服务器是一台只安装了 Gitlab-runner 的服务器,根据报错提示,需要 git 来拉取 Gitlab 服务器上的代码,所以我们安装 git:

yum -y install git

затем используйте

git --version 查看 git 是否安装成功

После повторного выполнения конвейера или отправки кода вы можете видеть, что все работает нормально:

deploy-success

будь осторожен:

  1. Git должен быть установлен на сервере Gitlab-runner.
  2. Все настроено, но после отправки находится в состоянии ожидания и предлагает:This build is stuck, because the project doesn't have any runners online assigned to it. Go to Runners page, Это связано с тем, что соответствующий раннер не найден. Причина 1: Возможно, регистрация gitlab-runner не удалась. Причина 2: Возможно, теги в конфигурационном файле .gitlab-ci.yml не соответствуют зарегистрированным и доступный бегун Добавьте соответствующего бегуна на этап Можно использовать теги, введенные при регистрации бегуна.
  3. GitLab лучше не устанавливать на той же машине, что и GitLab Runner.

Ссылаться на:

Install GitLab Runner manually on GNU/Linux Registering Runners GitLab Runner commands GitLab CI/CD Pipeline Configuration Reference Docker создает собственный Gitlab CI Runner