ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

НСпрСрывная интСграция ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ (Deployment) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Jenkins

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΠ½Π΅ Π±Ρ‹Π»ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Jenkins, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ статСй ΠΏΠΎ Π΅Π³ΠΎ установкС ΠΈ настройкС устарСли. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΏΠΈΡˆΡƒ ΠΎΠ± этом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΌΠ½Π΅, устанавливая Π΅Π³ΠΎ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Jenkins?

Jenkins β€” это срСдство Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ создания, тСстирования ΠΈ развСртывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, упрощая Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

По сути, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Jenkins (ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс развСртывания ΠΈΠ»ΠΈ прСдоставлСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² вашСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ сразу послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ эти измСнСния Π³ΠΎΡ‚ΠΎΠ²Ρ‹. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ насколько ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ сайты сразу послС объСдинСния PR с master (ΠΈΠ»ΠΈ main).

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Jenkins?

Π£ Π½Π΅Π³ΠΎ сильноС сообщСство, поэтому Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Jenkins ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, ΠΈ я надСюсь Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ это Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ дальшС.

Π’ этом руководствС ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ CI/CD для прилоТСния Node с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Jenkins. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с опрСдСлСния всСх шагов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠΌΠ΅ΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ объясним ΠΈΡ… Π½ΠΈΠΆΠ΅:

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ GitHub для прилоТСния node

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ node ΠΈ помСститС Π΅Π³ΠΎ Π½Π° GitHub

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Heroku для развСртывания

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Π΅Π±-Ρ…ΡƒΠΊ GitHub для внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Jenkins

Π‘ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Jenkins

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ GitHub Π² Jenkins

Π‘ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Jenkins для развСртывания Π½Π° Heroku послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ тСстирования

НСобходимыС условия

УчСтная запись Π½Π° GitHub. МоТно Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ здСсь.

УчСтная запись Heroku. МоТно Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ здСсь.

УчСтная запись Π½Π° GitHub. МоТно Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ здСсь.

УчСтная запись Heroku. МоТно Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ здСсь.

Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ!

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ПослС создания рСпозитория, ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ repository_url Π½Π° свой.

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ находится Π² Π±Π»ΠΎΠΊΠ΅ скриптов вашСго Ρ„Π°ΠΉΠ»Π° package.json, ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ start ΠΈ test для запуска ΠΈ тСстирования прилоТСния:

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ express для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° прилоТСния node, поэтому инсталлируйтС Π΅Π³ΠΎ, запустив эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

Π”Π°Π»Π΅Π΅ создайтС Ρ„Π°ΠΉΠ» index.js, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ…ΠΎΠ΄Π° Π² нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ node, ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

ЗапуститС npm start ΠΈ Π·Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° http://localhost:4000/ Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ для просмотра прилоТСния Node, Π½Π° экранС появится Hello world.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ°Ρ€Ρƒ тСстов Π² нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, впослСдствии, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CI, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ тСсты доступны ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ измСнСния.

Π˜Ρ‚Π°ΠΊ, Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈ установитС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ jest ΠΈ supertest с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π”Π°Π»Π΅Π΅ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° создайтС ΠΏΠ°ΠΏΠΊΡƒ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π΅ __test__ (Π΄Π²Π° Π·Π½Π°ΠΊΠ° подчСркивания, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ). Π’Π½ΡƒΡ‚Ρ€ΠΈ этой ΠΏΠ°ΠΏΠΊΠΈ __test__ создайтС Ρ„Π°ΠΉΠ» index.test.js ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ (Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свои тСсты Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ).

ЗапуститС npm test ΠΈΠ»ΠΈ npm run test Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, ΠΈ Π²Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ тСст(Ρ‹) ΠΏΡ€ΠΎΡˆΠ΅Π»(ΠΈ):

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° наш ΠΊΠΎΠ΄ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈ тСсты ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ измСнСния ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° GitHub.

Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² свою панСль управлСния Heroku.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π² ΠΏΡ€Π°Π²Ρ‹ΠΉ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΠ³ΠΎΠ» ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° New.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Create new app (Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅).

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ App name (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ прилоТСния) ΠΏΠΎ своСму Π²Ρ‹Π±ΠΎΡ€Ρƒ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ€Π΅Π³ΠΈΠΎΠ½ (Choose a region), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ.

НаТмитС Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Create app).

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ login (Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅) Π² Heroku с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Heroku CLI. Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ установили Heroku CLI, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ.

ПослС этого Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ remote Π² ваш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

Π—Π°Ρ‚Π΅ΠΌ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

Π­Ρ‚ΠΎ дСлаСтся для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ open app (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) Π½Π° ΠΏΡ€ΠΈΠ±ΠΎΡ€Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ прилоТСния Heroku, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° свой сСрвСр ΠΏΠΎΠ΄ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ non-root.

ПослС этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ядро с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для установки java runtime:

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ΄Π½Ρƒ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ для установки Jenkins.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Jenkins ΠΈ всС зависимости инсталлированы ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΡŒ запуска Jenkins, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ:

Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ active:

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Jenkins выполняСтся Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 8080, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ufw:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ состояниС ufw с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посСтитС сайт http://ip_address:8080 для настройки Jenkins, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ экран Unlock Jenkins.

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Jenkins, Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρƒ ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для отобраТСния пароля. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π² ΠΏΠΎΠ»Π΅ Administrator password (ΠŸΠ°Ρ€ΠΎΠ»ΡŒ администратора).

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ экранС отобраТаСтся Customize Jenkins (ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Jenkins), Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Install suggested plugins (УстановитС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹).

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ экрану Create First Admin User (Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ-администратора). Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Username (имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ), Password (ΠΏΠ°Ρ€ΠΎΠ»ΡŒ), Full name (ΠΏΠΎΠ»Π½ΠΎΠ΅ имя) ΠΈ E-mail address (адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹) для вашСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π·Π°Ρ‚Π΅ΠΌ Save and Continue (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ).

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ПослС этого Π²Π²Π΅Π΄ΠΈΡ‚Π΅ IP-адрСс сСрвСра, Ρ‚.Π΅. http://ip_address:8080, Π·Π°Ρ‚Π΅ΠΌ Save and Finish (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ).

Π£Ρ€Π°, Jenkins Π³ΠΎΡ‚ΠΎΠ²! НаТмитС Π½Π° Start using Jenkins (ΠΠ°Ρ‡Π°Ρ‚ΡŒ использованиС Jenkins).

Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitHub прилоТСния ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Settings (Настройки), Π·Π°Ρ‚Π΅ΠΌ Π½Π° Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Webhooks. НаТмитС Π½Π° Add webhooks (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Π±-Ρ…ΡƒΠΊΠΈ) ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ url Jenkins с приставкой /github-webhook/ Π² ΠΏΠΎΠ»Π΅ Payload URL.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ application/json для Content-type.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Just the push event для события, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ Π²Π΅Π±-Ρ…ΡƒΠΊ.

УстановитС Ρ„Π»Π°ΠΆΠΎΠΊ Active ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Add webhook. Π’Π΅ΠΏΠ΅Ρ€ΡŒ GitHub ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ события Π² Jenkins.

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ ΠΈΠ»ΠΈ ΠΎΠΊΠ½ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° свой сСрвСр с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ non-root.

Π’ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ root, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ:

ПослС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root ΠΈ инсталляции npm, Jenkins автоматичСски создаСт Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π½Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ SSH с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

НаТмитС ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Enter для Π²Π²ΠΎΠ΄Π° мСстополоТСния ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΡ€ΠΈ запросС, просто Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Enter.

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса распСчатайтС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ non-root Π² Π½ΠΎΠ²ΠΎΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ authorized_keys ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ id_rsa ΠΈ Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ настроСны ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» сСрвСра jenkins ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²ΠΎΠΉΡ‚ΠΈ Π² систСму ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ non-root, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ssh. Π’Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²ΠΎΠΉΠ΄Π΅Ρ‚Π΅ Π² систСму, Ссли Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ всСм Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΌ дСйствиям.

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

На ΠΏΡ€ΠΈΠ±ΠΎΡ€Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Jenkins ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» Manage jenkins (Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ jenkins), Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Manage plugins (Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ).

На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Available Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ github ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Github Integration plugin (Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Github).

НаТмитС Π½Π° Install without restart (Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ), ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ Π±ΡƒΠ΄Π΅Ρ‚ установлСн Ρ‡Π΅Ρ€Π΅Π· нСсколько сСкунд.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° GitHub ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ Jenkins, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

На Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° New Item (Новая Ρ‚Π΅ΠΌΠ°), Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Freestyle project ΠΈΠ· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ OK.

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π”Π°Π»Π΅Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π½Π° страницу ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π½ΠΎ Ссли этого Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π΅, Π½Π°ΠΆΠ°Π² Configure Π½Π° Π»Π΅Π²ΠΎΠΉ Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ.

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠ· Π΄ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Source Code Management (Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ исходным ΠΊΠΎΠ΄ΠΎΠΌ), Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Git ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Repository URL с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .git (Ρ‚ΠΎΡ‚ ΠΆΠ΅ url, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ использовали для клонирования рСпозитория).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ master Π²Π΅Ρ‚Π²ΡŒ Π½Π° main ΠΈΠ»ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‚Π²ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ для процСсса развСртывания.

НаТмитС Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Add repository (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Heroku.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ прилоТСния Heroku, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² App settings (настройки прилоТСния) Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Heroku ΠΈ скопируйтС ссылку.

Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° ΠΏΡ€ΠΈΠ±ΠΎΡ€Π½ΡƒΡŽ панСль Jenkins ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ эту ссылку Π² Repository URL.

Нам понадобятся Π½ΠΎΠ²Ρ‹Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, поэтому Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Add, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΡ… для нашСго прилоТСния Heroku.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Jenkins ΠΈΠ· списка, ΠΈ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ.

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ username (имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) ΠΏΠΎ своСму Π²Ρ‹Π±ΠΎΡ€Ρƒ, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π― Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ heroku Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π”Π°Π»Π΅Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Heroku Api key (Api-ΠΊΠ»ΡŽΡ‡) Π² ΠΏΠΎΠ»Π΅ Password

(ΠŸΠ°Ρ€ΠΎΠ»ΡŒ) ΠΈ Save (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Heroku Api key, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠ±ΠΎΡ€Π½ΡƒΡŽ панСль Heroku, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Account Settings (Настройки Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°) ΠΈ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠ·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Api key. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΠΎΠ»Π΅ Password (ΠŸΠ°Ρ€ΠΎΠ»ΡŒ).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Description (ОписаниС) для этой ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

НаТмитС Add (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ созданиС ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи.

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌ спискС Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали. Если Π½Π΅Ρ‚, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΡ….

Π”Π°Π»Π΅Π΅ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° advanced ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Name, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ срСди Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰. Π­Ρ‚ΠΎ имя понадобится Π½Π°ΠΌ ΠΏΠΎΠ·ΠΆΠ΅. Π― Π½Π°Π·Π²Π°Π» своС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ jenkinsTest, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π»Π΅Π³ΠΊΠΎ ΠΈ понятно.

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠ· Π΄ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Build Triggers ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ GitHub hook trigger for GITScm polling (Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ Ρ…ΡƒΠΊΠ° GitHub для опроса GITScm).

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Build Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Add build step (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ шаг сборки) ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Execute shell (Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ). Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

НаТмитС Π½Π° Add post-build action (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ дСйствиС послС сборки), Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Git Publisher ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Push Only If Build Succeeds (Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС успСха сборки).

НаТмитС Π½Π° Add Branch (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Ρ‚Π²ΡŒ), Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя Π²Π΅Ρ‚Π²ΠΈ для развСртывания Π² ΠΏΠΎΠ»Π΅ Branch to Push ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Name, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ рСпозитория прилоТСния Heroku, Π² ΠΏΠΎΠ»Π΅ Target remote name (ΠΌΠΎΠ΅ имя Π±Ρ‹Π»ΠΎ jenkinsTest, Ссли Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, поэтому Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ сюда своС).

Π—Π°Ρ‚Π΅ΠΌ Save (сохранитС).

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠ±ΠΎΡ€Π½ΡƒΡŽ панСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Build now (ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сСйчас) Π½Π° Π»Π΅Π²ΠΎΠΉ Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ Π·Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ сборкой вашСго ΠΊΠΎΠ΄Π°!

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ВнСситС измСнСния Π² свой ΠΊΠΎΠ΄ ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π½Π° GitHub. Π—Π°Ρ‚Π΅ΠΌ посмотритС, ΠΊΠ°ΠΊ ваш ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ Π½Π° Heroku.

ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ всСх ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΎΠ½Π»Π°ΠΉΠ½-курсами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ Π² JavaScript-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ИВ Π‘Π°Π·Π° Π·Π½Π°Π½ΠΈΠΉ

ПолСзно

β€” Онлайн Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ устойчивых ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ

β€” Онлайн ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ подсСтСй

β€” Руководство администратора FreePBX Π½Π° русском языкС

β€” Руководство администратора Cisco UCM/CME Π½Π° русском языкС

β€” Руководство администратора ΠΏΠΎ Linux/Unix

Навигация

Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

ВСлСфония

FreePBX ΠΈ Asterisk

Настройка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²

ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ сСти

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΈ стандарты

РазбираСмся с Jenkins. Π§Ρ‚ΠΎ это?

Π΄Π²ΠΎΡ€Π΅Ρ†ΠΊΠΈΠΉ для вашСй Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ

БСгодня (Π΄Π° прямо сСйчас) создаСтся ΠΈ производится мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΈ Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚, ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π±Π΅Π· Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. И Ρ‚ΡƒΡ‚ понСслась 🤯

Онлайн курс ΠΏΠΎ Linux

ΠœΡ‹ собрали ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ‚ самых вострСбованных Π·Π½Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят Ρ‚Π΅Π±Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ администратора Linux, Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ знания ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ шаг ΠΊ DevOps

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎ порядку

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС (ПО) это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»ΠΈ список ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ устройств. Π’ΠΎ ΠΊΠ°ΠΊ.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ всС Π½ΠΎΠ²Ρ‹Π΅ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠ³Ρ€Ρ‹, дополнСния, обновлСния. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь производятся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ устройства ΠΈ Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹, дисководы, ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹, ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅. РазумССтся, Π΄Π°Π½Π½Ρ‹Π΅ устройства Π½Π΅ смогут Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ устарСваСт ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ обновлСния.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°ΠΌ ставятся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ написанию софта, Π½ΠΎ чСловСчСский Ρ„Π°ΠΊΡ‚ΠΎΡ€ всСгда ΠΈΠΌΠ΅Π΅Ρ‚ мСсто Π±Ρ‹Ρ‚ΡŒ, ΠΈ ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹ ошибки, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ софт просто Π½Π΅ запустится, Π»ΠΈΠ±ΠΎ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, исправлСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ большоС количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎ Π² условиях соврСмСнной экономики ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ. Π”Π° ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ рискуСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΆ**Π΅ ΠΎΡ‚ Π’ΠΈΠΌΠ»ΠΈΠ΄Π°.

Jenkins систСма с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ доступСн для просмотра, изучСния ΠΈ измСнСния. ΠšΡΡ‚Π°Ρ‚ΠΈ создан Π½Π° Π±Π°Π·Π΅ Java. ДТСнкинс позволяСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π±Π΅Π· участия Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Данная систСма ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для обСспСчСния процСсса Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π’ΠΎΡƒ Π²ΠΎΡƒ.

НСпрСрывная интСграция (Continuous Integration, CI) это процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, смысл ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² постоянном соСдинСнии Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΊΠΎΠΏΠΈΠΉ Π² ΠΎΠ±Ρ‰ΡƒΡŽ линию Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ постоянных Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сборок ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для быстрого выявлСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ошибок ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ½Π²Π΅Π΅Ρ€.

Π˜Π½Ρ‹ΠΌΠΈ словами, это созданиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Ρ€Π°Ρ„Ρ‚ΠΎΠ²Ρ‹Ρ… вСрсий (Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠΎΠ²) ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΏΠΈΠΉ, Π² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Jenkins ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ практичСски Π² любой соврСмСнной ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² автоматичСском Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ‚Π΅ (Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π·Π°Π΄Π°Ρ‡.

Для Π½Π°Ρ‡Π°Π»Π° разбСрСмся, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅. Π‘ английского «deploy» пСрСводится ΠΊΠ°ΠΊ «Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅«. И это Ρ†Π΅Π»Ρ‹ΠΉ процСсс дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊ использованию:

АвтоматичСский Π΄Π΅ΠΏΠ»ΠΎΠΉ это Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

МногиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ скаТут: «Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Jenkins, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ Buildbot?». Π£ нас Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΡ‡ΠΊΠ°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠ»ΡŽΡΡ‹ ΠΈ отличия Jenkins Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ, рядовой программист, Π»ΠΈΠ±ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ‹Ρ‚Π° Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. И сдСлаСт ΠΎΠ½ это Π·Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ срок.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π² Buildbot, Π½ΠΎ для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π½Ρ‘ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ, ΠΈΠ»ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ нСстандартной ошибки, Jenkins устранит эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², Π±Π΅Π· привлСчСния ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Jenkins являСтся бСсплатным инструмСнтом, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΌ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ возмоТностями Π² Π²ΠΈΠ΄Π΅ тысяч ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ постоянно Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ.

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Плагин это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ встраиваСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Π΅Π΅ возмоТности, Π° Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Jenkins ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ всСвозмоТных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², возмоТности Ρ‚Π°ΠΊΠΎΠ³ΠΎ автоматичСского дСплоя Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹.

Jenkins это стандартизированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΎΡΠΈΠ»ΠΈΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ спСциалист с нСбольшим бэкграундом (ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ) Π² IT, всСго Π·Π° нСсколько часов.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ основныС прСимущСства Jenkins:

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Π½Π° YouTube ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ этот инструмСнт. Π£Π²Π΅Ρ€Π΅Π½Ρ‹, Π²Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΎΠΆΠ°Π»Π΅Π΅Ρ‚Π΅. Но это Π½Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ.

Онлайн курс ΠΏΠΎ Linux

ΠœΡ‹ собрали ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ‚ самых вострСбованных Π·Π½Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят Ρ‚Π΅Π±Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ администратора Linux, Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ знания ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ шаг ΠΊ DevOps

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ Π² Jenkins

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Jenkins сСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, практичСски Π² любой ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² автоматичСском Π΄Π΅ΠΏΠ»ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ инфраструктуры, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π·Π°Π΄Π°Ρ‡.

На Ρ€Ρ‹Π½ΠΊΠ΅ сСйчас прСдставлСно ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… инструмСнтов (ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ бСсплатных), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ процСсс Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ максимально ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ.

Jenkins являСтся бСсплатным инструмСнтом, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΌ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ возмоТностями Π² Π²ΠΈΠ΄Π΅ тысяч ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ постоянно Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ прСдлагаСтся Π½Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-интСрфСйс самого Jenkins, Π³Π΄Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ это ΠΏΡ€ΠΈ большом количСствС Π·Π°Π΄Π°Ρ‡ ΠΈ ΠΈΡ… разнотипности становится слоТнСС.

НиТС ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ созданиС Π·Π°Π΄Π°Ρ‡ Π² Jenkins.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Jenkins job builder

Π­Ρ‚ΠΎ python-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Π² YAML- ΠΈΠ»ΠΈ JSON Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· HTTP API Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° сСрвСр. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ достаточно ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° локальной машинС, Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

DSL Plugin

Π­Ρ‚ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ для Jenkins, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ смоТСм ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ языкС (DSL, Domain Specific Language) ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° основС этих описаний. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ локально Π½Π° самом Jenkins-сСрвСрС.

Jenkins Pipeline

Π­Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π·Π°Π΄Π°Ρ‡ΠΈ Π² Jenkins, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Π½Π°ΠΌ процСсс дСплоя ΠΈΠ»ΠΈ сборки прилоТСния ΠΏΠΎ стадиям. ΠžΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ pipeline ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Jenkinsfile, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Gitlab ΠΈ Gitlab CI

НаиболСС популярный ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ сСйчас selfhosted ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… компаниях. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π²Π΅Ρ€ΡΠΈΡŽ для сообщСства ΠΈ энтСрпрайз-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π’Π½ΡƒΡ‚Ρ€ΠΈ имССтся собствСнный CI, написанный Π½Π° Go, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Π°Π³Π΅Π½Ρ‚Ρ‹ (runners) позволяСт Π½Π°ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стадии сборки ΠΈ дСплоя.

Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ

Для Π½Π°Ρ‡Π°Π»Π° поставим Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ инструмСнты. Jenkins-job-builder Π² нашСм случаС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π³Π΅Π½Ρ‚ gitlab. МоТно ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ просто локальной машиной gitlab.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎ Π½Π° linux ΠΈ mac установим послСднюю Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ:

Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎ для описания нашСго seed job ΠΌΡ‹ смоТСм ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ.
Π”ΠΎΠ±Π°Π²Π»ΡŽ, Ρ‡Ρ‚ΠΎ seed job Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ DSL Plugin являСтся Π·Π°Π΄Π°Ρ‡Π° Ρ‚ΠΈΠΏΠ° Free-style project, которая создаСт ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ· DSL-скриптов.

На gitlab-сСрвСрС установка Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ локальной установки Π½Π° linux-ΠΌΠ°ΡˆΠΈΠ½Ρƒ:

На всякий случай запустим ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

Установка ΠΏΠ»Π°Π³ΠΈΠ½Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ установим ΠΏΠ»Π°Π³ΠΈΠ½ Π² Jenkins. Для установки ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ классичСским UpdateCenter Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Manage Jenkins β†’ Manage Plugins β†’ Available, Ρ‚Π°ΠΊ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ установку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ curl/wget, скачав ΠΏΠ»Π°Π³ΠΈΠ½ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ страницы ΠΏΠ»Π°Π³ΠΈΠ½Π°:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ рСпозитория

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΠΎΠ΄ ΠΊΠΎΠ΄ с описаниСм Π·Π°Π΄Π°Ρ‡.

Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ наш seed job β€” Ρ‚Π°ΠΊ называСтся Π·Π°Π΄Π°Ρ‡Π°, которая Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ· сСбя всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²:

jenkins.ini

job-generator.yml

.gitlab-ci.yml

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ gitlab-runner ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ интСрфСйс gitlab послСднСС врСмя часто мСняСтся, Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ПослС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠΌ измСнСния ΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Jobs Ρƒ нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Вся схСма выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с описаниСм Π·Π°Π΄Π°Ρ‡. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΅Π³ΠΎ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ repo-dsl ΠΈ плоской структурой. ВсС Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ.
ПолоТим Π² Π½Π΅Π³ΠΎ Ρ„Π°ΠΉΠ» с нашим pipeline:

И настроим webhook ΠΏΠΎ запуску seed-job, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создали Ρ€Π°Π½Π΅Π΅.

Π’ Π΄Π°Π½Π½ΠΎΠΉ вСрсии gitlab webhooks Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Settings β†’ Integrations.
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ webhook Π½Π° push (http://gitlab:pass@ci.org/project/job-generator). Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ это выглядит Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² нашСм Jenkins Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ sample-project создадим Jenkinsfile ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ содСрТания:

Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ pipeline Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² интСрфСйсС blueocean Π² Jenkins:

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Или Ρ‚Π°ΠΊ Π² классичСском интСрфСйсС:

ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π€ΠΎΡ‚ΠΎ ДТСнкинс Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Для запуска этой Π·Π°Π΄Π°Ρ‡ΠΈ автоматичСски ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ webhook Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ с docker-image, Π³Π΄Π΅ послС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ эта Π·Π°Π΄Π°Ρ‡Π°.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ данная ΡΡ‚Π°Ρ‚ΡŒΡ описываСт лишь ΠΎΠ΄ΠΈΠ½ ΠΈΠ· мноТСства ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² управлСния Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ Π² jenkins. Π—Π° счСт гибкости ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ максимально просто ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ исходя ΠΈΠ· Π²Π°ΡˆΠΈΡ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ инфраструктуры.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *