Merge branch 'issue_alive' into 'main'

Issue done

See merge request backend/templategen_feedback!1
This commit is contained in:
Mikhail 2023-07-14 10:23:36 +00:00 committed by skeris
commit a0fd2e206e
3 changed files with 52 additions and 31 deletions

@ -27,30 +27,16 @@ clear-old-images:
build-app:
extends: .build_template
variables:
DOCKER_BUILD_PATH: "./Dockerfile"
DOCKER_BUILD_PATH: "build/Dockerfile"
PRODUCTION_BRANCH: main
STAGING_BRANCH: "main"
PRODUCTION_BRANCH: "main"
before_script:
- echo PRODUCTION_BRANCH = $PRODUCTION_BRANCH
- echo STAGING_BRANCH = $STAGING_BRANCH
- echo CI_REGISTRY = $CI_REGISTRY
- echo CI_REGISTRY_USER = $CI_REGISTRY_USER
- echo CI_PROJECT_DIR = $CI_PROJECT_DIR
- echo REGISTRY_USER = $REGISTRY_USER
- echo REGISTRY_TOKEN = $REGISTRY_TOKEN
- echo CI_REGISTRY_IMAGE = $CI_REGISTRY_IMAGE
- echo CI_COMMIT_REF_SLUG = $CI_COMMIT_REF_SLUG
- echo DOCKER_BUILD_PATH = $DOCKER_BUILD_PATH
- echo CI_PIPELINE_ID = $CI_PIPELINE_ID
- env
rules:
- if: $CI_COMMIT_BRANCH == $PRODUCTION_BRANCH || $CI_COMMIT_BRANCH == $STAGING_BRANCH
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- |
/kaniko/executor --context $CI_PROJECT_DIR \
--cache=true --cache-repo=$CI_REGISTRY_IMAGE --build-arg GITLAB_TOKEN=$GITLAB_TOKEN \
--dockerfile $CI_PROJECT_DIR/$DOCKER_BUILD_PATH --use-new-run --snapshotMode=redo \
--destination $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID --build-arg GITLAB_TOKEN=$GITLAB_TOKEN $CI_PROJECT_DIR
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
deploy-to-staging:
extends: .deploy_template

@ -1,11 +1,13 @@
package app
import (
"context"
"time"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
"go.etcd.io/bbolt"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"log"
"penahub.gitlab.yandexcloud.net/backend/templategen_feedback/internal/config"
"penahub.gitlab.yandexcloud.net/backend/templategen_feedback/internal/initialize"
"penahub.gitlab.yandexcloud.net/backend/templategen_feedback/internal/server"
@ -16,6 +18,9 @@ func Run(cfg *config.Config) {
cfgLogger.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
cfgLogger.EncoderConfig.ConsoleSeparator = " "
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
logger, err := cfgLogger.Build()
if err != nil {
panic(err)
@ -25,17 +30,20 @@ func Run(cfg *config.Config) {
db, err := bbolt.Open("bolt.db", 0666, nil)
if err != nil {
logger.Fatal("BoltDB", zap.Error(err))
logger.Error("BoltDB", zap.Error(err))
return
}
bot, err := tgbotapi.NewBotAPI(cfg.TelegramToken)
if err != nil {
logger.Fatal("TelegramBotApi", zap.Error(err))
logger.Error("TelegramBotApi", zap.Error(err))
return
}
repositories, err := initialize.NewRepositories(logger, db)
if err != nil {
logger.Fatal("BoltDB", zap.Error(err))
logger.Error("BoltDB", zap.Error(err))
return
}
clients := initialize.NewClients(logger, bot, cfg.TelegramChannelID, cfg.TemplatePath)
@ -48,15 +56,40 @@ func Run(cfg *config.Config) {
})
err = clients.Telegram.SendMessage("Bot started")
if err != nil {
logger.Fatal("TelegramBot", zap.Error(err))
logger.Error("TelegramBot", zap.Error(err))
return
}
// Send alive message
now := time.Now()
alarm := time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, now.Location())
timer := time.NewTimer(time.Until(alarm))
go func() {
for {
select {
case now = <-timer.C:
err = clients.Telegram.SendMessage("Я пока еще не сдох!")
if err != nil {
logger.Error("TelegramBot", zap.Error(err))
return
}
alarm = now.AddDate(0, 0, 1)
timer.Reset(time.Until(alarm))
case <-ctx.Done():
timer.Stop()
return
}
}
}()
controllers := initialize.NewControllers(logger, repositories.Feedback, clients.Telegram)
if err = controllers.Feedback.WarmUpService(); err != nil {
log.Fatal("Controllers.Feedback", zap.Error(err))
logger.Error("Controllers.Feedback", zap.Error(err))
return
}
logger.Info("Feedback service", zap.String("status", "warmed up"))
@ -70,7 +103,8 @@ func Run(cfg *config.Config) {
go func() {
err := httpSrv.Start()
if err != nil {
logger.Fatal("CanNotServe", zap.Error(err))
logger.Error("CanNotServe", zap.Error(err))
return
}
}()

@ -1,6 +1,7 @@
package controller
import (
"time"
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
"penahub.gitlab.yandexcloud.net/backend/templategen_feedback/internal/client"
@ -119,7 +120,7 @@ func (r *FeedbackController) RunService() {
case <-r.interrupter:
break
default:
continue
time.Sleep(time.Second)
}
}
}