Compare commits
No commits in common. "0d5413039aef407e99681402fa4a6a8b1e0b879a" and "36f176f5ecdbb82573937d7fb28e2ea332b7e1c8" have entirely different histories.
0d5413039a
...
36f176f5ec
41
.drone.yml
41
.drone.yml
@ -107,30 +107,37 @@ name: create-docs-site
|
|||||||
trigger:
|
trigger:
|
||||||
branch:
|
branch:
|
||||||
- docs
|
- docs
|
||||||
|
- master
|
||||||
clone:
|
|
||||||
depth: 1
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: build site
|
- name: build site
|
||||||
image: git.struchkov.dev/upagge/mkdocs-material-insiders:latest
|
image: upagge/mkdocs-material
|
||||||
volumes:
|
environment:
|
||||||
- name: mkdocs_cache
|
SSH_DEPLOY_KEY:
|
||||||
path: ${DRONE_WORKSPACE}/documentation/.cache
|
from_secret: SSH_DEPLOY_KEY
|
||||||
|
SSH_DEPLOY_HOST:
|
||||||
|
from_secret: SSH_DEPLOY_HOST
|
||||||
|
SSH_DEPLOY_PORT:
|
||||||
|
from_secret: SSH_DEPLOY_PORT
|
||||||
|
SSH_DEPLOY_PATH:
|
||||||
|
from_secret: SSH_DEPLOY_PATH
|
||||||
|
SSH_DEPLOY_USER:
|
||||||
|
from_secret: SSH_DEPLOY_USER
|
||||||
commands:
|
commands:
|
||||||
|
- eval $(ssh-agent -s)
|
||||||
|
- mkdir -p ~/.ssh
|
||||||
|
- echo "$SSH_DEPLOY_KEY" >> ~/.ssh/id_rsa
|
||||||
|
- chmod 700 ~/.ssh
|
||||||
|
- chmod 600 ~/.ssh/id_rsa
|
||||||
|
- ssh-keyscan -p $SSH_DEPLOY_PORT $SSH_DEPLOY_HOST >> ~/.ssh/known_hosts
|
||||||
|
- chmod 644 ~/.ssh/known_hosts
|
||||||
- cd documentation
|
- cd documentation
|
||||||
- mike deploy --prefix gitlab-notification --branch docs-deploy --push --update-aliases develop
|
- mkdocs build
|
||||||
|
- mv site gitlab-notification
|
||||||
image_pull_secrets:
|
- scp -r -P $SSH_DEPLOY_PORT ./gitlab-notification $SSH_DEPLOY_USER@$SSH_DEPLOY_HOST:$SSH_DEPLOY_PATH
|
||||||
- DOCKER_AUTH
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
- name: mkdocs_cache
|
|
||||||
host:
|
|
||||||
path: /drone/volume/mkdocs_cache/gitlab_notification
|
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: signature
|
kind: signature
|
||||||
hmac: fcd23a173d0a823ff39f9efe454d936476d49f03840034af7dd2c671571004d4
|
hmac: 8dbac280687d64b7b49961e75c59ea29ee1dfd395b8284404a1371b30f11dbb3
|
||||||
|
|
||||||
...
|
...
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -32,5 +32,3 @@ build/
|
|||||||
/.mvn/wrapper/
|
/.mvn/wrapper/
|
||||||
/mvnw
|
/mvnw
|
||||||
/mvnw.cmd
|
/mvnw.cmd
|
||||||
/documentation/site/
|
|
||||||
/documentation/.cache/
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
TIME="10"
|
|
||||||
URL="https://api.telegram.org/bot$DEPLOY_TELEGRAM_BOT_TOKEN/sendMessage"
|
|
||||||
TEXT="Deploy status: $1%0A-- -- -- -- --%0ABranch:+$CI_COMMIT_REF_SLUG%0AProject:+$CI_PROJECT_TITLE"
|
|
||||||
|
|
||||||
curl -s --max-time $TIME --proxy $PROXY_SETTING -d "chat_id=$TELEGRAM_CHAT_ID&disable_web_page_preview=1&text=$TEXT" $URL >/dev/null
|
|
6
documentation/docs/changelog.md
Normal file
6
documentation/docs/changelog.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
hide:
|
||||||
|
- comments
|
||||||
|
title: ChangeLog
|
||||||
|
|
||||||
|
---
|
@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
title: ChangeLog
|
|
||||||
hide:
|
|
||||||
- comments
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# ChangeLog
|
|
||||||
|
|
||||||
## v.2.0.0
|
|
||||||
|
|
||||||
## v.1.0.0
|
|
@ -1,54 +0,0 @@
|
|||||||
Есть несколько способов запустить бота-помощника. Бот был спроектирован таким образом, чтобы работать локально на вашем ПК, но вы можете запустить его на сервере в режиме 24/4.
|
|
||||||
|
|
||||||
## Создание бота в Telegram
|
|
||||||
Перед запуском необходимо создать бота в Telegram. Для этого перейдите в официального бота [@GodFather](https://t.me/BotFather) и выполните команду `/newbot`.
|
|
||||||
|
|
||||||
Первым делом вам предложат ввести имя для бота.
|
|
||||||
|
|
||||||
## Конфигурация
|
|
||||||
Несмотря на то, какой вариант запуска вы виберете, необходимо будет указать следующие переменные среды:
|
|
||||||
|
|
||||||
* `TELEGRAM_BOT_TOKEN` — токен, который вы получили при создании бота.
|
|
||||||
* `TELEGRAM_BOT_USERNAME` — название, которое вы дали боту. Оканчивается на bot.
|
|
||||||
* `GITLAB_PERSONAL_TOKEN` — токен, который вы получили в GitLab
|
|
||||||
* `TELEGRAM_PERSON_ID` — ваш id в telegram, можно узнать тут.
|
|
||||||
* `GITLAB_URL` — url на gitlab. Локальный или облачный.
|
|
||||||
* `DATASOURCE_URL` — ссылка на базу данных Postgres, в следующем формате: jdbc:postgresql://localhost:5432/gitlab_bot
|
|
||||||
* `DATASOURCE_USERNAME` — пользователь БД
|
|
||||||
* `DATASOURCE_PASSWORD` — пароль от БД
|
|
||||||
|
|
||||||
## Запуск Docker Compose
|
|
||||||
|
|
||||||
## Запуск Docker
|
|
||||||
Команда для запуска выглядит следующим образом:
|
|
||||||
|
|
||||||
``` docker
|
|
||||||
docker run --name gitlab-notify \
|
|
||||||
--env TELEGRAM_BOT_TOKEN=value \
|
|
||||||
--env TELEGRAM_BOT_USERNAME=value \
|
|
||||||
--env GITLAB_PERSONAL_TOKEN=value \
|
|
||||||
--env TELEGRAM_PERSON_ID=value \
|
|
||||||
--env GITLAB_URL=value \
|
|
||||||
--env DATASOURCE_URL=jdbc:postgresql://localhost:5432/gitlab_bot \
|
|
||||||
--env DATASOURCE_USERNAME=postgres \
|
|
||||||
--env DATASOURCE_PASSWORD=value \
|
|
||||||
--network="host" upagge/gitlab-telegram-notify:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
## Запуск в IDEA
|
|
||||||
|
|
||||||
## Запуск JAR релиза
|
|
||||||
|
|
||||||
Скачать актуальный jar-файл всегда можно на странице релизов GitHub.
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
java -DTELEGRAM_BOT_USERNAME=value \
|
|
||||||
-DTELEGRAM_BOT_TOKEN=value \
|
|
||||||
-DTELEGRAM_PERSON_ID=value \
|
|
||||||
-DDATASOURCE_URL=value \
|
|
||||||
-DDATASOURCE_PASSWORD=value \
|
|
||||||
-DDATASOURCE_USERNAME=value \
|
|
||||||
-DGITLAB_PERSONAL_TOKEN=value \
|
|
||||||
-DGITLAB_URL=value \
|
|
||||||
-jar gitlab-notification.jar
|
|
||||||
```
|
|
@ -1,19 +0,0 @@
|
|||||||
## Уведомления
|
|
||||||
|
|
||||||
### Новый MR
|
|
||||||
|
|
||||||
### Конфликт в MR
|
|
||||||
|
|
||||||
### Обновление MR
|
|
||||||
|
|
||||||
### Изменение статуса MR
|
|
||||||
|
|
||||||
### Новый тред в MR
|
|
||||||
|
|
||||||
### Упоминание в треде
|
|
||||||
|
|
||||||
### Ответ в дискусии
|
|
||||||
|
|
||||||
## Взаимодействие с GitLab
|
|
||||||
|
|
||||||
### Ответ в треде
|
|
@ -7,4 +7,4 @@ Let's start with this simple program:
|
|||||||
|
|
||||||
### Test 2
|
### Test 2
|
||||||
|
|
||||||
## Test 4
|
## Test 3
|
@ -6,15 +6,4 @@ hide:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# GitLab Notification – Персональный Telegram для GitLab
|
# GitLab Notification – Персональный бот в Telegram для GitLab
|
||||||
Персональный помощник для взаимодействия с GitLab. Получайте уведомления о событиях в GitLab: новые MR, где вы ревьювер, конфликты в ваших MR, уведомления о новых сообщениях в тредах, где вы являетесь участником, и многое другое.
|
|
||||||
|
|
||||||
## :ninja: Privacy
|
|
||||||
|
|
||||||
Мое решение сфокусировано на приватности и прозрачности. Код и используемые зависимости полностью открыты и доступны для изучения и самостоятельной сборки.
|
|
||||||
|
|
||||||
Для работы бота токен доступа устанавливается в переменные среды и никуда не передается, кроме запросов в GitLab.
|
|
||||||
|
|
||||||
Некоторые уведомления могут содержать чуствительную информацию. Например, уведомления о новых сообщениях в тредах. Возможно вы не захотите раскрывать столько информации о ваших репозиториях Телеграму, ведь через него идет получение уведомлений. Специально для таких случаев предусмотрены уровни конфиденциальности разных типов уведомлений.
|
|
||||||
|
|
||||||
Возьмем для примера уведомление о новом сообщении в треде. При минимальном уровне конфиденциальности вы получите уведомление с текстом коментария и сможете сразу ответить на него в телеграм, а при максимальном уровне конфиденциальности будет сообщаться только о факте нового комментария, без содержания. Все это настраивается при первом запуске.
|
|
@ -1,8 +1,9 @@
|
|||||||
site_name: GitLab Notification
|
site_name: GitLab Notification Bot
|
||||||
site_url: https://docs.struchkov.dev/gitlab-notification/
|
site_url: https://docs.struchkov.dev/gitlab-notification/
|
||||||
|
|
||||||
repo_url: https://github.com/uPagge/gitlab-notification
|
repo_url: https://github.com/uPagge/gitlab-notification
|
||||||
repo_name: uPagge/gitlab-notification
|
repo_name: uPagge/gitlab-notification
|
||||||
|
|
||||||
#edit_uri: edit/master/documentation/docs
|
#edit_uri: edit/master/documentation/docs
|
||||||
|
|
||||||
nav:
|
nav:
|
||||||
@ -34,11 +35,14 @@ theme:
|
|||||||
toggle:
|
toggle:
|
||||||
icon: material/brightness-4
|
icon: material/brightness-4
|
||||||
name: Switch to light mode
|
name: Switch to light mode
|
||||||
|
|
||||||
features:
|
features:
|
||||||
- navigation.instant
|
- navigation.instant
|
||||||
- navigation.indexes
|
- navigation.indexes
|
||||||
- navigation.sections
|
- navigation.sections
|
||||||
- navigation.tracking
|
- navigation.tracking
|
||||||
|
# - navigation.tabs
|
||||||
|
- navigation.tabs.sticky
|
||||||
- navigation.footer
|
- navigation.footer
|
||||||
- search
|
- search
|
||||||
- search.suggest
|
- search.suggest
|
||||||
@ -46,44 +50,39 @@ theme:
|
|||||||
- content.action.edit
|
- content.action.edit
|
||||||
- content.code.copy
|
- content.code.copy
|
||||||
- toc.follow
|
- toc.follow
|
||||||
- toc.integrate
|
plugins:
|
||||||
plugins:
|
- social
|
||||||
- social
|
- meta
|
||||||
# - meta
|
- tags
|
||||||
- tags
|
- search:
|
||||||
- search:
|
lang: ru
|
||||||
lang: ru
|
- git-revision-date-localized:
|
||||||
# - optimize:
|
enable_creation_date: true
|
||||||
# concurrency: 1
|
|
||||||
# optimize_jpg_quality: 90
|
|
||||||
|
|
||||||
markdown_extensions:
|
markdown_extensions:
|
||||||
- pymdownx.details
|
- toc:
|
||||||
- pymdownx.superfences
|
permalink: true
|
||||||
- pymdownx.inlinehilite
|
toc_depth: 3
|
||||||
- pymdownx.snippets
|
title: Содержание
|
||||||
- attr_list
|
|
||||||
- pymdownx.highlight:
|
- pymdownx.highlight:
|
||||||
anchor_linenums: true
|
anchor_linenums: true
|
||||||
line_spans: __span
|
- pymdownx.superfences:
|
||||||
pygments_lang_class: true
|
custom_fences:
|
||||||
|
- name: mermaid
|
||||||
|
class: mermaid
|
||||||
|
format: !!python/name:pymdownx.superfences.fence_code_format
|
||||||
|
- pymdownx.snippets
|
||||||
|
- pymdownx.inlinehilite
|
||||||
|
- pymdownx.details
|
||||||
|
- pymdownx.smartsymbols
|
||||||
|
- pymdownx.betterem
|
||||||
- pymdownx.tabbed:
|
- pymdownx.tabbed:
|
||||||
alternate_style: true
|
alternate_style: true
|
||||||
- pymdownx.emoji:
|
- pymdownx.emoji:
|
||||||
emoji_index: !!python/name:materialx.emoji.twemoji
|
emoji_index: !!python/name:materialx.emoji.twemoji
|
||||||
emoji_generator: !!python/name:materialx.emoji.to_svg
|
emoji_generator: !!python/name:materialx.emoji.to_svg
|
||||||
- admonition
|
|
||||||
- md_in_html
|
|
||||||
- toc:
|
|
||||||
permalink: true
|
|
||||||
toc_depth: 3
|
|
||||||
title: Содержание
|
|
||||||
|
|
||||||
extra:
|
extra:
|
||||||
generator: false
|
generator: false
|
||||||
analytics:
|
|
||||||
provider: custom
|
|
||||||
property: foobar
|
|
||||||
version:
|
version:
|
||||||
provider: mike
|
provider: mike
|
||||||
# alternate:
|
# alternate:
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
<!-- Yandex.Metrika counter -->
|
|
||||||
<script type="text/javascript" >
|
|
||||||
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
|
||||||
m[i].l=1*new Date();
|
|
||||||
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
|
|
||||||
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
|
|
||||||
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
|
|
||||||
|
|
||||||
ym(92567215, "init", {
|
|
||||||
clickmap:true,
|
|
||||||
trackLinks:true,
|
|
||||||
accurateTrackBounce:true
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<noscript><div><img src="https://mc.yandex.ru/watch/92567215" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
|
|
||||||
<!-- /Yandex.Metrika counter -->
|
|
Loading…
Reference in New Issue
Block a user