Issuer — GitHub-дСйствиС для ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ самообслуТивания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ рСпозитория

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Issuer ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Π±ΠΎΡ‚ для GitHub, Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡΠ°ΠΌΠΎΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ рСпозитория. На GitHub ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, СдинствСнная функция ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… — координация людСй Ρ‡Π΅Ρ€Π΅Π· систСму Issue. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π½ΠΈΡ… ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ Issue прСдлагаСтся Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ. ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€, провСряСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ заполнСния Ρ„ΠΎΡ€ΠΌΡ‹, ΠΈ Ρ€Π°Π·Π²Π΅ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π΅Π³ΠΈ Π² соотвСтствии с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ΅ (Ρ‚Π΅Π³ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Ссли ΠΎΠ½ΠΈ Π½Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹ Π² шаблонС). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ сообщСства — open-source-ideas/open-source-ideas.

ΠœΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ„ΠΎΡ€ΠΌ ΠΈ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΎ прСдставлСнноС Π² новости GitHub-дСйствиС. Π‘ΠΎΡ‚ написан Π½Π° Python, Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ всё Ρ€Π°Π²Π½ΠΎ приходится Ρ‡Π΅Ρ€Π΅Π· node.js, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ GitHub всСго 2 Ρ‚ΠΈΠΏΠ° дСйствий — node.js ΠΈ docker, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ для docker сначала грузится Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π³Π΄Π΅ ΠΈ node.js, ΠΈ Π² Π½Π΅Π³ΠΎ грузится Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»Π³ΠΎ. Учитывая, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ с node.js python3 ΠΈ всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎΠ΅ ΠΈ Ρ‚Π°ΠΊ Π΅ΡΡ‚ΡŒ, Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ просто ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ зависимости, Π±Π»Π°Π³ΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ нСбольшиС.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:

  • ДСйствиС управляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ YAML-ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° ΠΈ Markdown-шаблонов;
  • Π’ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Markdown-шаблон добавляСтся Π±Π»ΠΎΠΊ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ условия ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ заполнСния Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Π΅ дСйствия;
  • ДобавляСтся Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ настройками;
  • Π€ΠΎΡ€ΠΌΡ‹ состоят ΠΈΠ· сСкций. Π•ΡΡ‚ΡŒ 2 Ρ‚ΠΈΠΏΠ° сСкций:
    • Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Ρ‹ΠΉ тСкст. ДСйствиС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ потрудился Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ. ΠžΡΠΌΡ‹ΡΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ тСкста автоматичСски Π½Π΅ провСряСтся.
    • Π€Π»Π°ΠΆΠΊΠΈ (checkbox). МоТно ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ n Ρ„Π»Π°ΠΆΠΊΠΎΠ², Ρ‚Π°ΠΊΠΎΠ΅ Ρ‡Ρ‚ΠΎ 0 {= m1 {= n {= m2 {= ΠΎΠ±Ρ‰Π΅Π΅ число Ρ„Π»Π°ΠΆΠΊΠΎΠ² Π² сСкции. ДСйствиС провСряСт, Ρ‡Ρ‚ΠΎ Ρ„Π»Π°ΠΆΠΊΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„Π»Π°ΠΆΠΊΠ°ΠΌ Π² шаблонС. Если Ρ„Π»Π°ΠΆΠΊΠΈ Π·Π°Π΄Π°Π½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, дСйствиС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π΅ΡΠΈΡ‚ΡŒ Π½Π° issue Ρ‚Π΅Π³ΠΈ, соотв. Ρ„Π»Π°ΠΆΠΊΠ°ΠΌ.
  • Если Ρ„ΠΎΡ€ΠΌΠ° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ дСйствиС инструктируСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠ°ΠΊ Π΅Ρ‘ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈ Π²Π΅ΡˆΠ°Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ.
  • Если Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ исправлСна Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎ дСйствиС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ issue. АвтоматичСский Π±Π°Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ issue ΠΏΠΎΠΊΠ° Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² связи с отсутствиСм ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ API для Π½ΡƒΠΆΠ½Ρ‹Ρ… дСйствий ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ с Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ состояния.
  • Если ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна, Ρ‚ΠΎ дСйствиС удаляСт ΠΌΠ΅Ρ‚ΠΊΡƒ.
  • Π¨Π°Π±Π»ΠΎΠ½Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² дСйствия, разумССтся, Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru