main.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "github.com/porter-dev/porter/internal/models"
  7. "github.com/porter-dev/porter/internal/repository/gorm"
  8. "github.com/porter-dev/porter/server/api"
  9. "github.com/porter-dev/porter/internal/adapter"
  10. "github.com/porter-dev/porter/internal/config"
  11. lr "github.com/porter-dev/porter/internal/logger"
  12. "github.com/porter-dev/porter/server/router"
  13. ints "github.com/porter-dev/porter/internal/models/integrations"
  14. )
  15. func main() {
  16. appConf := config.FromEnv()
  17. logger := lr.NewConsole(appConf.Debug)
  18. db, err := adapter.New(&appConf.Db)
  19. if err != nil {
  20. logger.Fatal().Err(err).Msg("")
  21. return
  22. }
  23. err = db.AutoMigrate(
  24. &models.Project{},
  25. &models.Role{},
  26. &models.User{},
  27. &models.Session{},
  28. &models.GitRepo{},
  29. &models.Registry{},
  30. &models.HelmRepo{},
  31. &models.Cluster{},
  32. &models.ClusterCandidate{},
  33. &models.ClusterResolver{},
  34. &ints.KubeIntegration{},
  35. &ints.BasicIntegration{},
  36. &ints.OIDCIntegration{},
  37. &ints.OAuthIntegration{},
  38. &ints.GCPIntegration{},
  39. &ints.AWSIntegration{},
  40. &ints.TokenCache{},
  41. &ints.ClusterTokenCache{},
  42. &ints.RegTokenCache{},
  43. &ints.HelmRepoTokenCache{},
  44. )
  45. if err != nil {
  46. logger.Fatal().Err(err).Msg("")
  47. return
  48. }
  49. var key [32]byte
  50. for i, b := range []byte(appConf.Db.EncryptionKey) {
  51. key[i] = b
  52. }
  53. repo := gorm.NewRepository(db, &key)
  54. a, _ := api.New(&api.AppConfig{
  55. Logger: logger,
  56. Repository: repo,
  57. ServerConf: appConf.Server,
  58. })
  59. appRouter := router.New(a)
  60. address := fmt.Sprintf(":%d", appConf.Server.Port)
  61. logger.Info().Msgf("Starting server %v", address)
  62. s := &http.Server{
  63. Addr: address,
  64. Handler: appRouter,
  65. ReadTimeout: appConf.Server.TimeoutRead,
  66. WriteTimeout: appConf.Server.TimeoutWrite,
  67. IdleTimeout: appConf.Server.TimeoutIdle,
  68. }
  69. if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed {
  70. log.Fatal("Server startup failed", err)
  71. }
  72. }