TL; DR; В этой статье будет показано, как реализовать действие «Действие службы Gitlab Runner» в «рабочем процессе Github», который запускается «заданием Gitlab-Ci», и таким образом, имеющие временные бегуны Gitlab, размещенные Github.
Для получения дополнительной информации о GitHub Workflow
, проверьте официальный документация
Для получения дополнительной информации о Gitlab-ci
, проверьте официальный документация
Шаги
Шаг 1
Создайте новый репозиторий GitHub со следующим рабочим процессом GitHub. Расположение файла: .github/workflows/gitlab-runner.yaml
name: Gitlab Runner Service on: [repository_dispatch] jobs: build: runs-on: ubuntu-latest steps: - name: Maximize Build Space uses: easimon/maximize-build-space@master with: root-reserve-mb: 512 swap-size-mb: 1024 remove-dotnet: 'true' remove-android: 'true' remove-haskell: 'true' - name: Gitlab Runner uses: edersonbrilhante/gitlab-runner-action@main with: registration-token: "${{ github.event.client_payload.registration_token }}" docker-image: "docker:19.03.12" name: ${{ github.run_id }} tag-list: "crosscicd"
Что делает этот рабочий процесс?
Этот рабочий процесс будет работать как раз при запуска Event Repository_Dispatch. Первым шагом будет увеличение свободного пространства, удаляя бесполезные пакеты для нашего бегуна Gitlab. И второй шаг запустит действие, которое регистрирует нового бегуна Gitlab с тегом CrossCiCD
, так что запустите это и не регистрируйте его после того, как работа Gitlab-Ci завершена с успехом или неудачей.
Шаг 2
Создайте новый репозиторий Gitlab со следующей конфигурацией Gitlab-Ci. Расположение файла: .gitlab-ci.yml
start-crosscicd: image: alpine before_script: - apk add --update curl && rm -rf /var/cache/apk/* script: | curl -H "Authorization: token ${GITHUB_TOKEN}" \ -H 'Accept: application/vnd.github.everest-preview+json' \ "https://api.github.com/repos/${GITHUB_REPO}/dispatches" \ -d '{"event_type": "gitlab_trigger_'${CI_PIPELINE_ID}'", "client_payload": {"registration_token": "'${GITLAB_REGISTRATION_TOKEN}'"}}' github: image: docker:latest services: - name: docker:dind alias: thedockerhost variables: DOCKER_HOST: tcp://thedockerhost:2375/ DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "" script: - df -h - docker run --privileged ubuntu df -h tags: - crosscicd
Что это делает Gitlab-Ci?
Работа Start-Crosscicd запустит рабочий процесс GitHub, создав бегуна Gitlab с тегом CrossCiCD
. И работа GitHub
Буду ждать бегуна с тегом CrossCiCD
.
Шаг 3
Установите Envvars в новом репозиторе Gitlab
GITHUB_REPO:/ GITHUB_TOKEN: GITLAB_REGISTRATION_TOKEN:
Как создать новый токен GitHub Access:
Перейти к https://github.com/settings/tokens/new
Отметьте предмет
Рабочий процесс
и нажмите «Создать токен
Как получить токен регистрации:
Перейти к
https://gitlab.com/
и нажмите и разверните/ /-/Settings/ci_cd Бегуны
Скопируйте токен регистрации
Где хранить Envvars?
Перейти к
https://gitlab.com/
и нажмите и разверните/ /-/Settings/ci_cd Переменные
Нажмите в добавление переменной и сохраните ее для каждого Envvar
Шаг 4
Теперь ваш трубопровод готов запустить бегун Gitlab в Github Trigger от gitlab-ci работа:)
Пример
Видео демонстрация
Скриншоты
Job Start-Crosscicd Trigger GitHub Workflow
Рабочий процесс, вызванный gitlab-ci Job
По умолчанию есть 17 ГБ бесплатно
После максимизации у нас есть 54 ГБ бесплатно для использования
Зарегистрируйте бегуна, запустите его и не регистрируйте после завершения работы в Гитлабе
Код
Вот и все!
Если у вас есть какие -либо вопросы, оставьте здесь комментарий или пинг меня на 🔗 LinkedIn Анкет
Оригинал: «https://dev.to/edersonbrilhante/gitlab-runners-as-a-service-with-github-action-149n»