Skip to content

Commit

Permalink
Merge pull request #24 from magi-sche-org/develop
Browse files Browse the repository at this point in the history
bump up dev->main
  • Loading branch information
TAK848 authored Mar 1, 2024
2 parents d5a2dc8 + 9bfb4c5 commit 0076ca7
Show file tree
Hide file tree
Showing 7 changed files with 176 additions and 53 deletions.
17 changes: 15 additions & 2 deletions .github/workflows/deploy-dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,15 @@ env:
ENV: dev
AWS_REGION: ap-northeast-1
AWS_ACCOUNT_ID: 905418376731
BASE_URL: https://api.dev.magi-sche.org
PORT: 8080
FRONTEND_ENDPOINT: https://dev.magi-sche.org
OAUTH_DEFAULT_RETURN_URL: https://dev.magi-sche.org/callback
CORS_ORIGINS: https://dev.magi-sche.org
ACCESS_TOKEN_EXPIRE_MINUTES: 5
# 60 days = 30 * 24 * 60 = 43200 minutes
REFRESH_TOKEN_EXPIRE_MINUTES: 86400
SQL_LOG: true

jobs:
build-and-push:
Expand Down Expand Up @@ -42,7 +51,7 @@ jobs:
aws-region: ${{ env.AWS_REGION }}

- name: login to ecr
uses: aws-actions/amazon-ecr-login@v1
uses: aws-actions/amazon-ecr-login@v2
id: login-ecr

- id: set_env
Expand Down Expand Up @@ -79,6 +88,8 @@ jobs:
platforms: linux/amd64,linux/arm64

deploy:
environment:
name: dev
permissions:
id-token: write
contents: read
Expand All @@ -89,7 +100,7 @@ jobs:
uses: actions/checkout@v4

- name: configure aws credentials
uses: aws-actions/configure-aws-credentials@v1
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::905418376731:role/magische-${{ env.ENV }}-api-deploy
aws-region: ${{ env.AWS_REGION }}
Expand All @@ -102,6 +113,8 @@ jobs:
run: |
ecspresso deploy --config ecspresso.yml
env:
TFE_TOKEN: ${{ secrets.TFE_TOKEN }}
TFC_WORKSPACE: magische_infra_${{ env.ENV }}
AWS_REGION: ${{ env.AWS_REGION }}
AWS_ACCOUNT_ID: ${{ env.AWS_ACCOUNT_ID }}
ENV: ${{ env.ENV }}
Expand Down
17 changes: 15 additions & 2 deletions .github/workflows/deploy-prd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,15 @@ env:
ENV: prd
AWS_REGION: ap-northeast-1
AWS_ACCOUNT_ID: 905418376731
BASE_URL: https://api.magi-sche.net
PORT: 8080
FRONTEND_ENDPOINT: https://magi-sche.net
OAUTH_DEFAULT_RETURN_URL: https://magi-sche.net/callback
CORS_ORIGINS: https://magi-sche.net
ACCESS_TOKEN_EXPIRE_MINUTES: 5
# 60 days = 30 * 24 * 60 = 43200 minutes
REFRESH_TOKEN_EXPIRE_MINUTES: 86400
SQL_LOG: true

jobs:
build-and-push:
Expand Down Expand Up @@ -42,7 +51,7 @@ jobs:
aws-region: ${{ env.AWS_REGION }}

- name: login to ecr
uses: aws-actions/amazon-ecr-login@v1
uses: aws-actions/amazon-ecr-login@v2
id: login-ecr

- id: set_env
Expand Down Expand Up @@ -79,6 +88,8 @@ jobs:
platforms: linux/amd64,linux/arm64

deploy:
environment:
name: prd
permissions:
id-token: write
contents: read
Expand All @@ -89,7 +100,7 @@ jobs:
uses: actions/checkout@v4

- name: configure aws credentials
uses: aws-actions/configure-aws-credentials@v1
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::905418376731:role/magische-${{ env.ENV }}-api-deploy
aws-region: ${{ env.AWS_REGION }}
Expand All @@ -102,6 +113,8 @@ jobs:
run: |
ecspresso deploy --config ecspresso.yml
env:
TFE_TOKEN: ${{ secrets.TFE_TOKEN }}
TFC_WORKSPACE: magische_infra_${{ env.ENV }}
AWS_REGION: ${{ env.AWS_REGION }}
AWS_ACCOUNT_ID: ${{ env.AWS_ACCOUNT_ID }}
ENV: ${{ env.ENV }}
Expand Down
14 changes: 8 additions & 6 deletions db/db.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package db

import (
"context"
"database/sql"
"fmt"
"time"

"github.com/geekcamp-vol11-team30/backend/config"
"go.uber.org/zap"
Expand Down Expand Up @@ -40,11 +42,11 @@ func NewDB(cfg *config.Config, logger *zap.Logger) (*sql.DB, error) {
return nil, err
}

// ctx, canncel := context.WithTimeout(context.Background(), 10*time.Second)
// defer canncel()
// if err := db.PingContext(ctx); err != nil {
// logger.Error("failed to ping db", zap.Error(err))
// return nil, err
// }
ctx, canncel := context.WithTimeout(context.Background(), 10*time.Second)
defer canncel()
if err := db.PingContext(ctx); err != nil {
logger.Error("failed to ping db", zap.Error(err))
return nil, err
}
return db, nil
}
100 changes: 100 additions & 0 deletions infra/ecs/ecs-task-def.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,106 @@
protocol: 'tcp',
},
],
environment: [
{
name: 'ENV',
value: '{{ must_env `ENV` }}',
},
{
name: 'BASE_URL',
value: '{{ must_env `BASE_URL` }}',
},
{
name: 'PORT',
value: '{{ must_env `PORT` }}',
},
{
name: 'SQL_LOG',
value: '{{ must_env `SQL_LOG` }}',
}
{
name: 'ACCESS_TOKEN_EXPIRE_MINUTES',
value: '{{ must_env `ACCESS_TOKEN_EXPIRE_MINUTES` }}',
},
{
name: 'REFRESH_TOKEN_EXPIRE_MINUTES',
value: '{{ must_env `REFRESH_TOKEN_EXPIRE_MINUTES` }}',
},
{
name: 'MYSQL_HOST',
value: '{{ tfstate `output.rds_endpoint` }}',
},
{
name: 'MYSQL_PORT',
value: '{{ tfstate `output.rds_port` }}',
},
{
name: 'MYSQL_DATABASE',
value: '{{ tfstate `output.rds_db_name` }}',
},
{
name: 'CSRF_DISABLED',
value: 'true',
},
{
name: 'OAUTH_DEFAULT_RETURN_URL',
value: '{{ must_env `OAUTH_DEFAULT_RETURN_URL` }}',
},
{
name: 'CORS_ORIGINS',
value: '{{ must_env `CORS_ORIGINS` }}',
},
],
secrets: [
{
name: 'MYSQL_USER',
valueFrom: '{{ tfstate `output.rds_admin_password_secret_arn` }}:username::',
},
{
name: 'MYSQL_PASSWORD',
valueFrom: '{{ tfstate `output.rds_admin_password_secret_arn` }}:password::',
},
{
name: 'SECRET_KEY',
valueFrom: '{{ tfstate `output.api_server_ssm_arn` }}:secret_key::',
},
{
name: 'OAUTH_GOOGLE_CLIENT_ID',
valueFrom: '{{ tfstate `output.api_server_ssm_arn` }}:oauth_google_client_id::',
},
{
name: 'OAUTH_GOOGLE_CLIENT_SECRET',
valueFrom: '{{ tfstate `output.api_server_ssm_arn` }}:oauth_google_client_secret::',
},
{
name: 'OAUTH_MICROSOFT_CLIENT_ID',
valueFrom: '{{ tfstate `output.api_server_ssm_arn` }}:oauth_microsoft_client_id::',
},
{
name: 'OAUTH_MICROSOFT_CLIENT_SECRET',
valueFrom: '{{ tfstate `output.api_server_ssm_arn` }}:oauth_microsoft_client_secret::',
},
{
name: 'SMTP_EMAIL',
valueFrom: '{{ tfstate `output.api_server_ssm_arn` }}:smtp_email::',
},
{
name: 'SMTP_USER',
valueFrom: '{{ tfstate `output.api_server_ssm_arn` }}:smtp_user::',
}
{
name: 'SMTP_PASSWORD',
valueFrom: '{{ tfstate `output.api_server_ssm_arn` }}:smtp_password::',
},
{
name: 'SMTP_HOST',
valueFrom: '{{ tfstate `output.api_server_ssm_arn` }}:smtp_host::',
},
{
name: 'SMTP_PORT',
valueFrom: '{{ tfstate `output.api_server_ssm_arn` }}:smtp_port::',
},
],
},
],
cpu: '{{ must_env `CPU` }}',
Expand Down
17 changes: 9 additions & 8 deletions infra/ecs/ecspresso.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@
region: 'ap-northeast-1',
cluster: 'magische-{{ must_env `ENV` }}',
service: 'magische-{{ must_env `ENV` }}-api',
// service_definition: 'test/ecs-service-def.jsonnet',
service_definition: '',
task_definition: 'ecs-task-def.jsonnet',
timeout: '10m0s',
// plugins: [
// {
// name: 'tfstate',
// config: {
// url: 'remote://app.terraform.io/magische/magische_infra_dev',
// },
// },
// ],
plugins: [
{
name: 'tfstate',
config: {
url: 'remote://app.terraform.io/magische/{{ must_env `TFC_WORKSPACE` }}', // like magische_infra_dev
},
},
],
}
6 changes: 3 additions & 3 deletions logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,9 @@ func SetRequestLoggerToEcho(e *echo.Echo, logger *zap.Logger) {
}
e.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
// if c.Path() == "/health" {
// return next(c)
// }
if c.Path() == "/health" {
return next(c)
}
return middleware.RequestLoggerWithConfig(cfg)(next)(c)
}
})
Expand Down
58 changes: 26 additions & 32 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,15 @@ import (
"net"

"github.com/geekcamp-vol11-team30/backend/config"
"github.com/geekcamp-vol11-team30/backend/controller"
"github.com/geekcamp-vol11-team30/backend/db"
applogger "github.com/geekcamp-vol11-team30/backend/logger"
"github.com/geekcamp-vol11-team30/backend/util"
"github.com/geekcamp-vol11-team30/backend/middleware"
"github.com/geekcamp-vol11-team30/backend/repository"
"github.com/geekcamp-vol11-team30/backend/router"
"github.com/geekcamp-vol11-team30/backend/service"
"github.com/geekcamp-vol11-team30/backend/usecase"
"github.com/geekcamp-vol11-team30/backend/validator"
_ "github.com/go-sql-driver/mysql"
"github.com/labstack/echo/v4"
"github.com/volatiletech/sqlboiler/v4/boil"
"go.uber.org/zap"
)
Expand All @@ -19,15 +23,12 @@ func main() {
logger, _ := zap.NewProduction()
defer logger.Sync()
sugar := logger.Sugar()

if err := run(context.Background(), logger); err != nil {
sugar.Fatal(err)
}
}

func run(ctx context.Context, logger *zap.Logger) error {
logger.Info("magische starting...")

cfg, err := config.New()
if err != nil {
return err
Expand All @@ -39,42 +40,35 @@ func run(ctx context.Context, logger *zap.Logger) error {
boil.SetDB(db)
boil.DebugMode = cfg.SqlLog

// ur := repository.NewUserRepository(db)
// ar := repository.NewAuthRepository(db)
// er := repository.NewEventRepository(db)
// oar := repository.NewOauthRepository(db)
// gs := service.NewGoogleService(cfg, oar, ur)
// ms := service.NewMicrosoftService(cfg, oar, ur)
// uv := validator.NewUserValidator()
// uu := usecase.NewUserUsecase(ur, oar, er, uv, gs, ms)
// au := usecase.NewAuthUsecase(cfg, logger, ar)
// eu := usecase.NewEventUsecase(cfg, er)
// oau := usecase.NewOauthUsecase(cfg, oar, ur, gs, ms, uu)
ur := repository.NewUserRepository(db)
ar := repository.NewAuthRepository(db)
er := repository.NewEventRepository(db)
oar := repository.NewOauthRepository(db)
gs := service.NewGoogleService(cfg, oar, ur)
ms := service.NewMicrosoftService(cfg, oar, ur)
uv := validator.NewUserValidator()
uu := usecase.NewUserUsecase(ur, oar, er, uv, gs, ms)
au := usecase.NewAuthUsecase(cfg, logger, ar)
eu := usecase.NewEventUsecase(cfg, er)
oau := usecase.NewOauthUsecase(cfg, oar, ur, gs, ms, uu)

// em := middleware.NewErrorMiddleware(logger, uu)
// atm := middleware.NewAccessTimeMiddleware()
// am := middleware.NewAuthMiddleware(cfg, logger, au, uu)
em := middleware.NewErrorMiddleware(logger, uu)
atm := middleware.NewAccessTimeMiddleware()
am := middleware.NewAuthMiddleware(cfg, logger, au, uu)

// uc := controller.NewUserController(uu)
// ac := controller.NewAuthController(cfg, uu, au)
// ec := controller.NewEventController(eu)
// oc := controller.NewOauthController(cfg, oau, uu, au)
uc := controller.NewUserController(uu)
ac := controller.NewAuthController(cfg, uu, au)
ec := controller.NewEventController(eu)
oc := controller.NewOauthController(cfg, oau, uu, au)

l, err := net.Listen("tcp", fmt.Sprintf(":%d", cfg.Port))
if err != nil {
logger.Fatal("failed to listen port", zap.Error(err))
}

// err = util.SendMail(*cfg, "[email protected]", "konnitiha", "hello")
// fmt.Println(err)

// e := router.NewRouter(cfg, logger, em, atm, am, uc, ac, ec, oc)
e := echo.New()
// enable log
e.GET("/health", func(c echo.Context) error {
return util.JSONResponse(c, 200, "OK")
})
applogger.SetRequestLoggerToEcho(e, logger)
e := router.NewRouter(cfg, logger, em, atm, am, uc, ac, ec, oc)
s := NewServer(e, l, logger)
return s.Run(ctx)
}

0 comments on commit 0076ca7

Please sign in to comment.