Merge branch 'issue_alive' into 'main'
Issue done See merge request backend/templategen_feedback!1
This commit is contained in:
commit
a0fd2e206e
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user