Skip to content

integration redmine.org and mattermost.com on python app

License

Notifications You must be signed in to change notification settings

ArtemIsmagilov/rm-mm-bridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

45 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Mattermost-Redmine Integrations

header.png

  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ создан для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ сСрвиса mattermost ΠΈ redmine.
  • Данная вСрсия ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • АвтоматичСскоС созданиС Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΎΠ². Одним сообщСниСм ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΎΠ².
  • ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΎΠ² Π² redmine. Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΠΈΠΊΠ΅Ρ‚Ρ‹ Π½Π° сСбя, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ созданныС Ρ‚ΠΈΠΊΠ΅Ρ‚Ρ‹.
  • Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ для дальнСйшСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ. НапримСр, ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ объСдинСниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Π³Ρ€ΡƒΠΏΠΏΡ‹, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΊΠ΅Ρ‚Π°ΠΌΠΈ, ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ событиям, автоматичСскоС созданиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΎΠ΄Π½Ρƒ строку, дальнСйшая валидация ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ слов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎ рСгулярным выраТСниям ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ Redmine прямо Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ссылок ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π² Redmine, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Ρ‚ΠΈΠΊΠ΅Ρ‚Ρ‹, Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½Π° Мои Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π° Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.
  • Максимальная валидация ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Ρ‚ΠΈΠΊΠ΅Ρ‚Π°ΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок.
  • НастроСно соотвСтствиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Mattermost ΠΈ Redmine Ρ‡Π΅Ρ€Π΅Π· Ρ„Π°ΠΉΠ» .docker.env.
  • Кнопка Π·Π²ΠΎΠ½ΠΊΠ° Π² ЯндСкс ВСлСмост

ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

πŸ’‘ Π’ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ встрСчи, ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ встрСчи Ρ€Π°Π·Π΄Π°ΡŽΡ‚ΡΡ поручСния. ΠŸΠΎΡ€ΡƒΡ‡Π΅Π½ΠΈΡ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΈ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ поручСния ΠΆΠΈΠ²ΡƒΡ‚ Π² Ρ‚ΠΈΠΊΠ΅Ρ‚Π°Ρ… Π² Π±Π°Π³Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π΅. Π₯очСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС поручСния ΠΆΠΈΠ»ΠΈ Π² Π±Π°Π³Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π΅, Ρ‚Π°ΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ»ΠΈΡΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

  • Π—Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° python с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Flask Π² Π²ΠΈΠ΄Π΅ Π±ΠΎΡ‚Π°.

  • Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ /redmine *commands

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ОписаниС
/help ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ справочная информация ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…
/new_task Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ Π² Ρ„ΠΎΡ€ΠΌΠ΅ Redmine
/new_tasks Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько Π·Π°Π΄Π°Ρ‡ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ
/tasks_by_me ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΏΠΎΡ€ΡƒΡ‡ΠΈΠ» Π΄Ρ€ΡƒΠ³ΠΈΠΌ
/tasks_for_me ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ поставлСнныС ΠΌΠ½Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ

НСкотороС соглашСниС

  • Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ссылку Π½Π° Ρ‚ΠΈΠΊΠ΅Ρ‚, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ #t(ID Ρ‚ΠΈΠΊΠ΅Ρ‚Π°). НапримСр, #t10. Π’ΠΎΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². screen9.png

    ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ссылку, происходит ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΊΠ΅Ρ‚.

    Π’Π°ΠΆΠ½ΠΎΠ΅ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅. ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π²Π΅Π± сокСт Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΠΌ прилоТСния ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ссылки Π² Π²ΠΈΠ΄Π΅ #t(ID Ρ‚ΠΈΠΊΠ΅Ρ‚Π°) Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅, просто Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ сообщСниС Π±ΠΎΡ‚Ρƒ, Π±ΠΎΡ‚ создаст ссылки Π² тСкстС. Если Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π² ΠΊΠ°Π½Π°Π»Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, ΠΈΠ»ΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅ Π±ΠΎΡ‚Π°, Ρ‚ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

    Mattermost API Reference

    This is an example of making a user_typing request, with the purpose of alerting the server that the connected client has begun typing in a channel or thread.

    Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π°ΡˆΠΈΡ… ссылок Π½Π° Ρ‚ΠΈΠΊΠ΅Ρ‚Ρ‹ Π² общСдоступных ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… частных ΠΊΠ°Π½Π°Π»Π°Ρ… трСбуСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия.


    To add the bot account to teams and channels you want it to interact in, select the team drop-down menu, then select
    Invite People. Next, select Invite Member and enter the bot account in the Add or Invite People field. Then select
    Invite Members. You should now be able to add the bot account to channels like any other user.
  • Установка прилоТСния ΠΈ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ Π±ΠΎΡ‚Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ https://drive.google.com/file/d/16RAOr7d5huqCDg7T4-Ww5wqewNmREY-n/view?usp=sharing

  • Для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Redmine ΠΈ Mattermost Π²ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ (Π»ΠΎΠ³ΠΈΠ½ Π² redmine)=(Π»ΠΎΠ³ΠΈΠ½ Π² mattermost) Π² .docker.env. ΠŸΡ€ΠΈΠΌΠ΅Ρ€

    • mattermost_username=redmine_username
    • seconad_username_in_mattermost=second_username_in_redmine

    Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ, сначала Π»ΠΎΠ³ΠΈΠ½ маттСрмоста=Π»ΠΎΠ³ΠΈΠ½ Ρ€Π΅Π΄ΠΌΠ°ΠΉΠ½Π°

  • ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π² ссылку Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π² администратора для прилоТСния. Из Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

    Create a ephemeral post

    Create a new ephemeral post in a channel.

    Permissions
    Must have create_post_ephemeral permission (currently only given to system admin)

  • Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ссли маттСрмост Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ

    • ΠΈΠ»ΠΈ Π² настройках администратора Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠΎ хосту 127.0.0.1(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ)
    • ΠΈΠ»ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ .env ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ EXTERNAL хосты Π½Π° 0.0.0.0(для запуска Ρ‡Π΅Ρ€Π΅Π· flask run -h 0.0.0.0 ΠΈΠ»ΠΈ gunicorn)

ВСстированиС прилоТСния

  1. ΠŸΡ€Π΅Π΄ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹

  2. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ docker ΡΠ΅Ρ‚ΡŒ

  3. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ redmine ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ

  4. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ mattermost ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ

  5. ПослС Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ REST API Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… сСрвисах Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния Π² Ρ„Π°ΠΉΠ» .env прилоТСния. Π€Π°ΠΉΠ» находится Π² ./wsgi/.env

  6. ПослС добавлСния всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ./wsgi/.env ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ mattermost-redmine ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ

  7. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² mattermost ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ c ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ хоста ΠΈ ΠΏΠΎΡ€Ρ‚Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ окруТСния

    /apps install http http://host:port/manifest.json
    
  8. Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ для прилоТСния Ρ‡Π΅Ρ€Π΅Π· настройки

  9. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ Π² ./wsgi/.env

  10. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ администратора ΠΈ Π΄Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° созданиС постов. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΠΈΡ‡ΠΈ t#ID Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΎΡ‚Π° Π² System Admin.

  11. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ mattermost_login=redmine_login Π² ./wsgi/.env, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠ½Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ ΠΈ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρ‹ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹.

  12. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² ΠΏΠ°ΠΏΠΊΠ΅ ./wsgi

    docker compose stop
    docket compose up
  13. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ

Π‘Ρ…Π΅ΠΌΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

diagram.svg

НастраиваСм срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

  • ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΉ настройкС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎ ссылкС https://developers.mattermost.com/integrate/apps/quickstart/quick-start-python/

  • ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΡƒΠ΄Π°Π»ΡΡŽ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ docker ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ Π½ΠΎΠ²ΡƒΡŽ https://docs.docker.com/engine/install/ubuntu/

  • ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ./wsgi/.env.example Π² ./wsgi/.env

    cp ./wsgi/.env.example ./wsgi/.env

Установка redmine ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· docker-compose.yml

  • Для Π½Π°Ρ‡Π°Π»Π°, создайтС ΠΏΠ°ΠΏΠΊΡƒ docker для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ

    mkdir ./rm
    cd ./rm
  • CΡ‚Π°Π²Π»ΡŽ redmine ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ΠžΠ±Ρ€Π°Π· ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ производства https://github.com/sameersbn/docker-redmine.git

    • Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ваш ΠΎΠ±Ρ€Π°Π· Π² зависимости ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ
  • ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° сайт с Π»ΠΎΠ³ΠΈΠ½ΠΎΠΌ admin ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ admin, мСняСм ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Π΄Π°Π»Π΅Π΅ АдминистрированиС > Настройки

    • Π Π°Π·Π΄Π΅Π» АутСнтификация - Π”Π°
    • Π Π°Π·Π΄Π΅Π» API - ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ REST screen1.png

Установка mattermost ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· docker-compose.yml

Π”Π΅Ρ‚Π°Π»ΠΈ установки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ прилоТСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΡƒΡ‚ https://developers.mattermost.com/integrate/apps/quickstart/quick-start-python/

Но ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³ΠΈΠ±ΠΊΡƒΡŽ настройку https://github.com/mattermost/docker.git + Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ваш ΠΎΠ±Ρ€Π°Π· Π² зависимости ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ + Π’ этой вСрсии Π½Π΅ настроСна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ° plugin_app, поэтому ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ· https://developers.mattermost.com/integrate/apps/quickstart/quick-start-python/

  • mattermost ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π·Π°ΠΏΡƒΡ‰Π΅Π½ screen2.png

  • Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ Π°Π΄ΠΌΠΈΠ½Π° для REST API запросов ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ./wsgi/.env. screen3.png

Установка ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Redmine ΠΈ Mattermost

  • ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ./wsgi ΠΈ запускаСм послСдний ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с Π±ΠΎΡ‚ΠΎΠΌ-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

      docker compose up
  • Π΄Π°Π²Π°ΠΉΡ‚Π΅ удостовСримся, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΈΠ½Π³ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ

    docker exec -it conteiner_name_app bash
    curl -I http://host_redmine:port_redmine/

    HTTP/1.1 200 OK

    curl -I http://host_mattermost:port_mattermost/

    HTTP/1.1 405 Method Not Allowed

    curl ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

  • Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ваш Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ mattermost сайт ΠΈ ввСсти /(slash) ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΈΠ· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. https://developers.mattermost.com/integrate/apps/quickstart/quick-start-python/

    Install the App on Mattermost

    /apps install http http://mattermost-apps-python-hello-world:8090/manifest.json

    Π’ ΠΌΠΎΠ΅ΠΌ случаС, я Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ /apps install http http://external_ip_address:8090/manifest.json

  • Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Ρ‚ΠΎ смотрим здСсь https://developers.mattermost.com/integrate/apps/quickstart/quick-start-python/#uninstall-the-app

  • ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ для прилоТСния, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ./wsgi/.env Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ Π½ΡƒΠΆΠ½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ > Аккаунты Π±ΠΎΡ‚ΠΎΠ² > @redmine. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ доступ Π±ΠΎΡ‚Π° ΠΊ Direct сообщСниям, Π½Π°Π·Π½Π°Ρ‡ΡŒΡ‚Π΅ Π΅ΠΌΡƒ Ρ€ΠΎΠ»ΡŒ администратор Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ интСграция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Π»ΠΈΡ‡Π½Ρ‹Π΅ сообщСния. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ c API Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ. screen4.png

  • Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚:

    • ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΊΠ΅Ρ‚Ρ‹
    • ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΊΠ΅Ρ‚ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ Redmine
    • ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ€ΡƒΡ‡Π΅Π½Ρ‹ Π²Π°ΠΌ
    • ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΠ»ΠΈ
    • ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки ΠΏΡ€ΠΈ отсутствии вас ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ redmine ΠΈΠ»ΠΈ отсутствии Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.
    • Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ссылки ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π² redmine

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ docker ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

  • docker compose up - Create and start containers
  • docker compose down - Stop and remove containers, networks

docker compose commands

АвтотСсты

  • ΠΌΡ‹ тСстируСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ

  • ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ redmine ΠΈ mattermost

  • создайтС Ρ„Π°ΠΉΠ» .test.env ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для тСстирования ΠŸΡ€ΠΈΠΌΠ΅Ρ€

    APP_SCHEMA=http
    APP_HOST_INTERNAl=127.0.0.1
    APP_PORT_INTERNAL=8090
    APP_HOST_EXTERNAL=127.0.0.1
    APP_PORT_EXTERNAL=8090
    
    MM_SCHEMA=http
    MM_HOST_EXTERNAL=127.0.0.1
    MM_PORT_EXTERNAL=8065
    
    RM_SCHEMA=http
    RM_HOST_EXTERNAL=127.0.0.1
    RM_PORT_EXTERNAL=3000
    
    rm_admin_key=redmine_secret
    mm_app_token=app_secret
    
    app_url_internal=${APP_SCHEMA}://${APP_HOST_INTERNAl}:${APP_PORT_INTERNAL}
    app_url_external=${APP_SCHEMA}://${APP_HOST_EXTERNAL}:${APP_PORT_EXTERNAL}
    
    redmine_url_external=${RM_SCHEMA}://${RM_HOST_EXTERNAL}:${RM_PORT_EXTERNAL}
    mattermost_url_external=${MM_SCHEMA}://${MM_HOST_EXTERNAL}:${MM_PORT_EXTERNAL}
    
    # testing mattermost client
    test_mm_email1=t1@mail
    test_mm_username1=t1
    test_mm_password1=super_secret
    test_mm_first_name1=TestMattermost
    test_mm_last_name1=UserMattermost
    
    test_mm_email2=t2@mail
    test_mm_username2=t2
    test_mm_password2=super_secret
    test_mm_first_name2=TestMattermost2
    test_mm_last_name2=UserMattermost2
    
    # redmine clients
    [email protected]
    test_rm_username1=test.user1
    test_rm_password1=super_secret
    test_rm_first_name1=Test1
    test_rm_last_name1=User1
    
    [email protected]
    test_rm_username2=test.user2
    test_rm_password2=super_secret
    test_rm_first_name2=Test2
    test_rm_last_name2=User2
    
    # usernames mattermost with redmine account
    # For example:
    # mattermost_username=redmine_username
    # seconad_username_in_mattermost=second_username_in_redmine
    # and etc...
    
    t1=test.user1
    t2=test.user2
    
  • запускаСм тСсты ΠΈ смотрим ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ΄Π°

    coverage run -m pytest
    coverage report 
    Name                          Stmts   Miss  Cover
    -------------------------------------------------
    ext_funcs.py                      9      0   100%
    tests/__init__.py                 0      0   100%
    tests/blocks_code/blocks.py      30      0   100%
    tests/conftest.py                37      3    92%
    tests/test_app.py               306      0   100%
    wsgi/__init__.py                401     31    92%
    wsgi/client_errors.py             6      0   100%
    wsgi/constants.py                 2      0   100%
    wsgi/decorators.py               29      3    90%
    wsgi/my_bot.py                   27      2    93%
    wsgi/redmine_api.py              48      0   100%
    wsgi/settings.py                 60      2    97%
    wsgi/views.py                    26      2    92%
    -------------------------------------------------
    TOTAL                           981     43    96%
    

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ help

screen8.png

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ задания new_tasks

screen5.png

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ задания Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΌΠ½Π΅ tasks_for_me

screen6.png

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ задания Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ мною tasks_by_me

screen7.png

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΊΠ΅Ρ‚ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ Redmine new_task

screen10.png

Настройка Reverse Proxy для нашСго прилоТСния

  • прописываСм ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ nginx

    • установка nginx Π½Π° сСрвСр
    sudo apt update
    sudo apt install nginx
    • Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ слуТбу nginx
    sudo systemctl start nginx
    • создаём Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
    sudo cp ./wsgi/app_nginx /etc/nginx/sites-enabled/app_nginx
    • ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ слуТбу nginx
    sudo systemctl reload nginx

Настройка HTTPS(Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ соСдинСния) для прилоТСния

  • УстанавливаСм certbot Π½Π° сСрвСр, https://certbot.eff.org/
  • Π‘Π»Π΅Π΄ΡƒΠ΅ΠΌ ΠΏΠΎ инструкции ΠΏΠΎ установкС ΠΈ настройкС, certbot всё Π΄Π΅Π»Π°Π΅Ρ‚ Π·Π° вас

Для администратора

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ Ρƒ сСбя Π½Π° сСрвСрС?

  1. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ упомянутыС Π²Ρ‹ΡˆΠ΅
  2. ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ https://github.com/ArtemIsmagilov/redmine-mattermost-integrations.git ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ wsgi/
  3. ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ .docker.env.exampple Π² .docker.env Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹
  4. ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ app_nginx Π² /etc/nginx/sites-enables/ рядом Π² default ссылкой, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (ΠΏΠΎΡ€Ρ‚Ρ‹, ΠΏΡƒΡ‚ΠΈ ΠΊ сСртификатам). Для тСстирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конфигурация http, для использования Π² производствС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ https
  5. ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ gunicorn.conf.py(accesslog*=имя Ρ„Π°ΠΉΠ»Π°, loglevel='error', количСство Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ², ΠΏΡƒΡ‚ΡŒ ΠΊ сСртификатам)
  6. запуститС Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€
  7. ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π² mattermost /apps install http ...
  8. создайтС Ρ‚ΠΎΠΊΠ΅Π½ для Π±ΠΎΡ‚Π°, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° для REST API ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π±ΠΎΡ‚Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ - трСбуСтся для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с websocket Subscriptions

    Note:

    Bots need to join a channel before subscribing to that channel’s events. Similarly, bots need to join a team before subscribing to that team’s events.

  9. Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² .docker.env ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ запуститС docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки

Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ столкнулся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ

  • НСинформативныС сообщСния ΠΎΡ‚ mattermost(Π°), ΠΏΡ€ΠΈ установкС послСднСй вСрсии Π΄ΠΎΠΊΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π·Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» websocket Ρ‡Π΅Ρ€Π΅Π· Ρ„ΠΎΡ€ΡƒΠΌΡ‹ ΡƒΠ·Π½Π°Π», Ρ‡Ρ‚ΠΎ послСдная вСрсия Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ проксирования, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅
  • НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ°Π»ΠΎ) ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с websocket. Π§Π΅Ρ€Π΅Π· websocket ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ всСго Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ„ΠΎΡ€ΠΌΡ‹. Π’Π°ΠΆΠ½ΠΎ лишь ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ соглашСниС ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ
  • НС Ρ€Π°Π±ΠΎΡ‚Π°Π» Websocket Π½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ вСрсии послС установки. Π’Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, websocket Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ. Для совмСстимости, установил Π²Π΅Ρ€ΡΠΈΡŽ mattermost ΠΊΠ°ΠΊ Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° 7.7.1
  • python:latest вСрсия Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° вСсит ΠΎΠΊΠΎΠ»ΠΎ 1 GB, ΠΏΡ€ΠΎΠ±ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· python:slim. ВСрсия slim быстрСС запускаСтся, мСньшС вСсит(Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹), Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ статусы ошибок ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ… Π² python)
  • ПослС установки ΠΏΠ»Π°Π³ΠΈΠ½Π°, Π±ΠΎΡ‚ Π½Π΅ добавлялся Π² ΠΊΠ°Π½Π°Π», ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ сразу Π½Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ появился сразу. Для этого ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Если Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹, Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ ΠΈ Ρ…ΠΎΡ‚ΠΈΠΌ https://forum.mattermost.com/t/add-a-bot-to-channels/8355/15

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹

  • Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π°
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ русский язык

НС ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Если Π²Π°ΠΌ Π½Π°Π΄ΠΎΠ΅Π» ΠΏΠ΅Ρ€Π΅Π³Ρ€Π΅Π² Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Oracle VirtualBox, Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ - ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ запись Π»ΠΎΠ³ΠΎΠ². По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ρƒ мСня энСргопотрСблСниС снизилось с ΠžΡ‡Π΅Π½ΡŒ высокого Π΄ΠΎ Высокого, ΠΈΠ½ΠΎΠ³Π΄Π° Π£ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΉ. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ссли Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚Π΅.

ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ²

  • https://www.virtualbox.org/ticket/11988
  • https://ubuntuforums.org/showthread.php?t=879256
  • Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡƒ C:\Users\user\VirtualBox VMs\Ubuntu\Logs ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ -> Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ -> Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ -> Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ нашСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ устанавливался VBox -> Π‘Ρ‚Π°Π²ΠΈΠΌ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ Π—Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ запись -> ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ запись Π»ΠΎΠ³ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ доступна. Π­Ρ‚ΠΎ освободит процСссор ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΡ‚ лишнСй Ρ€Π°Π±ΠΎΡ‚Ρ‹.

About

integration redmine.org and mattermost.com on python app

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages