Skip to content

πŸ‘” gitlab-runner - автоматичСский CI/CD ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ ΠΈΠ· GitLab

Notifications You must be signed in to change notification settings

64mb/docker-gitlab-runner

Repository files navigation

πŸ‘” gitlab_runner

АвтоматичСский CI/CD ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ ΠΈΠ· GitLab. Π Π°ΡΡˆΠΈΡ€Π΅Π½ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ локальной сСти для развСртывания docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· NAT посрСдством построСния SSH-Ρ‚ΡƒΠ½Π½Π΅Π»Π΅ΠΉ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ:

  • Bash - основныС скрипты Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ построСния Ρ‚ΡƒΠ½Π½Π΅Π»Π΅ΠΉ

  • NodeJS - прокси для docker-registry сСрвСра для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ SSL ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· NAT. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ proxy/server.js

ОписаниС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚:

РасполоТСниС: tools/

  • docker_clean.sh - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° очистки ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… docker ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π½Π° хост машинС

  • docker_commit.sh - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для автоматичСского получСния вСрсии Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° для сСрвиса Π² docker Π½Π° хост машинС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для дальнСйшСго принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ пСрСсборкС ΠΎΠ±Ρ€Π°Π·Π°

  • docker.sh - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° автоматичСского развСртывания сСрвиса Π½Π° docker машинС посрСдством docker-compose, поддСрТиваСтся Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹, TLS ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅, автоматичСскоС blue-green Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ автоматичСская очистка ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π½Π° машинС для экономии мСста

  • env.sh - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° пСрСзаписи ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния ΠΏΠΎ прСфиксу --prefix. НапримСр, запуск с прСфиксом MKD_ экспортируСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ MKD_DB ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ DB

  • init.sh - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ пафосного Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° CI/CD

  • port_free.sh - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° автоматичСского опрСдСлСния свободного ΠΏΠΎΡ€Ρ‚Π° для проксирования Π½Π° хостС

  • ssh_keyscan.sh - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° автоматичСского сканирования подписСй SSH соСдинСния для хоста

  • tg.sh - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Telegram, посрСдством выполнСния запроса Ρ‡Π΅Ρ€Π΅Π· curl

  • tunnel.sh - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° автоматичСского построСния SSH-тунСля Π΄ΠΎ хоста с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ проксирования ΠΏΠΎΡ€Ρ‚ΠΎΠ² с локальной ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Доступна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² постоянного ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ --keep ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для автоматичСского проксирования локального docker-registry, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --registry

  • version.sh - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для вычислСнии вСрсии ΠΎΠ±Ρ€Π°Π·Π°/ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄Π°Ρ‚Ρ‹, прСфикса ΠΈ hash-ΠΊΠΎΠΌΠΈΡ‚Π°. Для автоматичСского извлСчСния Π½ΠΎΠΌΠ΅Ρ€Π° вСрсия ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ npm-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ с Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π° package.json

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты:

РасполоТСниС: /

  • ci.sh - основная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° для ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ CI/CD

  • deploy.self.sh - скрипт для развСртывания самого runner`Π° Π½Π° docker машинС

  • init.sh - скрипт Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ сСртификатов для доступа ΠΊ GitLab ΠΈ docker-registry ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ

  • register.sh - запуск процСсса рСгистрации runner`Π° с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния, Π² Ρ‚ΠΎΠΌ числС Π² срСдС docker

  • run.sh - запуск runner`Π° Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния, Π² Ρ‚ΠΎΠΌ числС Π² срСдС docker

  • tunnel.key.sh - добавлСния SSH ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΊΠ»ΡŽΡ‡Π° Π½Π° хост ΠΌΠ°ΡˆΠΈΠ½Ρƒ для построСния туннСля Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, хост пСрСдаСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ

ОписаниС make команд

  • make runner-register - рСгистрация Π½ΠΎΠ²ΠΎΠ³ΠΎ runner`Π° Π² соотвСтствии с environment ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ cli

  • make runner-cli - запуск ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ runner`Π° Π² соотвСтствии с environment ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ cli

  • make runner-deploy - Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ runner`Π° Π² экосистСмС docker Π² соотвСтствии с environment ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ

  • make host=[HOST] tunnel-deploy - автоматичСскоС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ SSH ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для туннСля Π½Π° хост ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Π³Π΄Π΅ [HOST] - Π΄ΠΎΠΌΠ΅Π½ ΠΈΠ» IP адрСс ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с SSH доступом

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды πŸ“

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ОписаниС ΠŸΡ€ΠΈΠΌΠ΅Ρ€
COMPOSE_PROJECT_NAME Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² для docker-compose dev
COMPOSE_PATH_SEPARATOR Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… compose Ρ„Π°ΠΉΠ»ΠΎΠ² :
COMPOSE_FILE compose Ρ„Π°ΠΉΠ»Ρ‹ для развСртывания, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² порядкС написания docker-compose.yml
RUNNER_URL АдрСс основного GitLab сСрвСра для рСгистрации сборщика https://gitlab
RUNNER_DESCRIPTION ОписаниС сборщика, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΏΠ°Π½Π΅Π»ΠΈ GitLab Π² ΠΎΠ±Ρ‰Π΅ΠΌ спискС mkd
RUNNER_TAGS Π’Π΅Π³ΠΈ, для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ сборщикам docker, ssh, windows
RUNNER_CONCURRENT_JOB_COUNT НС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ пСрСмСнная, указываСтся ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ доступных сборщику, 1 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 2
VERSION Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ вСрсии сборщика 1.0.0
VERSION_PROXY Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ вСрсии прокси для docker-registry 1.1.0

About

πŸ‘” gitlab-runner - автоматичСский CI/CD ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ ΠΈΠ· GitLab

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published