Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

workflow update to mail error log w/signoff #11156

Merged
merged 9 commits into from
Jun 17, 2024
39 changes: 36 additions & 3 deletions .github/workflows/model-generator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ jobs:
commit_options: "--signoff"
commit_message: "New Models generated"
branch: master

- name: Send Email on Model Generator Failure
if: failure()
uses: dawidd6/action-send-mail@v3.7.1
Expand All @@ -59,7 +58,41 @@ jobs:
body: |
The GitHub Actions workflow in ${{ github.repository }} has failed.
You can find more details in the GitHub Actions log ${{ github.workflow }}.

check-and-email-registry-generate-error:
name: Check and Email Error Log
runs-on: ubuntu-22.04
needs: generate-components
steps:
- name: Download registry-generate-error
uses: actions/download-artifact@v4
with:
name: generate-logs
path: ~/.meshery/logs/registry
- name: Check registry-generate-error file
id: check-registry-generate-error
run: |
if [ -s ~/.meshery/logs/registry/Errors ]; then
echo "registry-generate-error is not empty"
echo "registry-generate-error=true" >> $GITHUB_ENV
else
echo "registry-generate-error is empty"
echo "registry-generate-error=false" >> $GITHUB_ENV
fi
- name: Send Email on Error Logs
if: env.registry-generate-error == 'true'
uses: dawidd6/action-send-mail@v3.7.1
with:
server_address: smtp.gmail.com
server_port: 465
username: ${{ secrets.MAIL_USERNAME }}
password: ${{ secrets.MAIL_PASSWORD }}
subject: Model Generator Error Log
from: |
"Model Generator" <no-reply@meshery.io>
to: developers@meshery.io
body: |
The model generation process encountered errors. Please find the attached error log for details.
attachments: ~/.meshery/logs/registry/Errors
update-components:
name: Update Components
needs: generate-components
Expand Down Expand Up @@ -107,4 +140,4 @@ jobs:
to: developers@meshery.io
body: |
The GitHub Actions workflow in ${{ github.repository }} has failed.
You can find more details in the GitHub Actions log ${{ github.workflow }}.
You can find more details in the GitHub Actions log ${{ github.workflow }}.
38 changes: 23 additions & 15 deletions mesheryctl/internal/cli/root/registry/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ var (
artifactHubRateLimitDur = 5 * time.Minute
artifactHubMutex sync.Mutex
)

var generateCmd = &cobra.Command{
Use: "generate",
Short: "Generate Models",
Expand All @@ -80,11 +79,18 @@ mesheryctl registry generate --registrant-def [path to connection definition] --
return ErrUpdateRegistry(err, modelLocation)
}
utils.Log.SetLevel(logrus.DebugLevel)
logFilePath := filepath.Join(logDirPath, "registry-generate")
logFilePath := filepath.Join(logDirPath, "Logs")
logFile, err = os.Create(logFilePath)
if err != nil {
return err
}

utils.LogError.SetLevel(logrus.ErrorLevel)
logErrorFilePath := filepath.Join(logDirPath, "Errors")
errorLogFile, err = os.Create(logErrorFilePath)
if err != nil {
return err
}
return nil
},

Expand All @@ -102,13 +108,13 @@ mesheryctl registry generate --registrant-def [path to connection definition] --

srv, err = mutils.NewSheetSRV(spreadsheeetCred)
if err != nil {
utils.Log.Error(ErrUpdateRegistry(err, modelLocation))
utils.LogError.Error(ErrUpdateRegistry(err, modelLocation))
return err
}

resp, err := srv.Spreadsheets.Get(spreadsheeetID).Fields().Do()
if err != nil || resp.HTTPStatusCode != 200 {
utils.Log.Error(ErrUpdateRegistry(err, outputLocation))
utils.LogError.Error(ErrUpdateRegistry(err, outputLocation))
return err
}

Expand All @@ -120,7 +126,7 @@ mesheryctl registry generate --registrant-def [path to connection definition] --
err = InvokeGenerationFromSheet(&wg)
if err != nil {
// meshkit
utils.Log.Error(err)
utils.LogError.Error(err)
return err
}

Expand All @@ -146,11 +152,13 @@ func InvokeGenerationFromSheet(wg *sync.WaitGroup) error {
logModelGenerationSummary(modelToCompGenerateTracker)

utils.Log.UpdateLogOutput(os.Stdout)
utils.LogError.UpdateLogOutput(os.Stdout)
utils.Log.Info(fmt.Sprintf("Summary: %d models, %d components generated.", totalAggregateModel, totalAggregateComponents))

utils.Log.Info("See ", logDirPath, " for detailed logs.")

_ = logFile.Close()
_ = errorLogFile.Close()
totalAggregateModel = 0
totalAggregateComponents = 0
}()
Expand All @@ -166,7 +174,7 @@ func InvokeGenerationFromSheet(wg *sync.WaitGroup) error {
}

utils.Log.UpdateLogOutput(logFile)

utils.LogError.UpdateLogOutput(errorLogFile)
var wgForSpreadsheetUpdate sync.WaitGroup
wgForSpreadsheetUpdate.Add(1)
go func() {
Expand Down Expand Up @@ -194,14 +202,14 @@ func InvokeGenerationFromSheet(wg *sync.WaitGroup) error {
if mutils.ReplaceSpacesAndConvertToLowercase(model.Registrant) == "meshery" {
err = GenerateDefsForCoreRegistrant(model)
if err != nil {
utils.Log.Error(err)
utils.LogError.Error(err)
}
return
}

generator, err := generators.NewGenerator(model.Registrant, model.SourceURL, model.Model)
if err != nil {
utils.Log.Error(ErrGenerateModel(err, model.Model))
utils.LogError.Error(ErrGenerateModel(err, model.Model))
return
}

Expand All @@ -211,25 +219,25 @@ func InvokeGenerationFromSheet(wg *sync.WaitGroup) error {
}
pkg, err := generator.GetPackage()
if err != nil {
utils.Log.Error(ErrGenerateModel(err, model.Model))
utils.LogError.Error(ErrGenerateModel(err, model.Model))
return
}

version := pkg.GetVersion()
modelDirPath, compDirPath, err := createVersionedDirectoryForModelAndComp(version, model.Model)
if err != nil {
utils.Log.Error(ErrGenerateModel(err, model.Model))
utils.LogError.Error(ErrGenerateModel(err, model.Model))
return
}
modelDef, err := writeModelDefToFileSystem(&model, version, modelDirPath)
if err != nil {
utils.Log.Error(err)
utils.LogError.Error(err)
return
}

comps, err := pkg.GenerateComponents()
if err != nil {
utils.Log.Error(ErrGenerateModel(err, model.Model))
utils.LogError.Error(ErrGenerateModel(err, model.Model))
return
}
utils.Log.Info("Current model: ", model.Model)
Expand Down Expand Up @@ -290,7 +298,7 @@ func GenerateDefsForCoreRegistrant(model utils.ModelCSV) error {
path, err := url.Parse(model.SourceURL)
if err != nil {
err = ErrGenerateModel(err, model.Model)
utils.Log.Error(err)
utils.LogError.Error(err)
return nil
}
gitRepo := github.GitRepo{
Expand All @@ -300,7 +308,7 @@ func GenerateDefsForCoreRegistrant(model utils.ModelCSV) error {
owner, repo, branch, root, err := gitRepo.ExtractRepoDetailsFromSourceURL()
if err != nil {
err = ErrGenerateModel(err, model.Model)
utils.Log.Error(err)
utils.LogError.Error(err)
return nil
}

Expand Down Expand Up @@ -337,7 +345,7 @@ func GenerateDefsForCoreRegistrant(model utils.ModelCSV) error {
err = componentDef.WriteComponentDefinition(compDirPath)
if err != nil {
err = ErrGenerateComponent(err, model.Model, componentDef.DisplayName)
utils.Log.Error(err)
utils.LogError.Error(err)
}
return nil
})
Expand Down
3 changes: 2 additions & 1 deletion mesheryctl/internal/cli/root/registry/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@ import (
var (
modelLocation string
logFile *os.File
errorLogFile *os.File
sheetGID int64
totalAggregateComponents int
logDirPath = filepath.Join(mutils.GetHome(), ".meshery", "logs")
logDirPath = filepath.Join(mutils.GetHome(), ".meshery", "logs", "registry")
)

var updateCmd = &cobra.Command{
Expand Down
3 changes: 2 additions & 1 deletion mesheryctl/internal/cli/root/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,5 +200,6 @@ func setVerbose() {
}

func setupLogger() {
utils.SetupMeshkitLogger(verbose, nil)
utils.Log = utils.SetupMeshkitLogger("mesheryctl", verbose, os.Stdout)
utils.LogError = utils.SetupMeshkitLogger("mesheryctl-error", verbose, os.Stderr)
}
6 changes: 3 additions & 3 deletions mesheryctl/pkg/utils/formatter.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ func SetupLogrusFormatter() {
}

// Initialize Meshkit Logger instance
func SetupMeshkitLogger(debugLevel bool, output io.Writer) {
func SetupMeshkitLogger(name string, debugLevel bool, output io.Writer) logger.Handler {
logLevel := viper.GetInt("LOG_LEVEL")
if !debugLevel {
logLevel = int(log.DebugLevel)
}

logger, err := logger.New("mesheryctl", logger.Options{
logger, err := logger.New(name, logger.Options{
Format: logger.TerminalLogFormat,
LogLevel: logLevel,
Output: output,
Expand All @@ -40,5 +40,5 @@ func SetupMeshkitLogger(debugLevel bool, output io.Writer) {
log.Error(err)
os.Exit(1)
}
Log = logger
return logger
}
2 changes: 2 additions & 0 deletions mesheryctl/pkg/utils/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,8 @@ var (
Log logger.Handler
// Color for the whiteboard printer
whiteBoardPrinter = color.New(color.FgHiBlack, color.BgWhite, color.Bold)
//global logger error variable
LogError logger.Handler
)

var CfgFile string
Expand Down
2 changes: 1 addition & 1 deletion mesheryctl/pkg/utils/testing.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ func SetupLogrusGrabTesting(_ *testing.T, _ bool) *bytes.Buffer {
// setup meshkit logger for testing and return the buffer in which commands output is to be set.
func SetupMeshkitLoggerTesting(_ *testing.T, verbose bool) *bytes.Buffer {
b := bytes.NewBufferString("")
SetupMeshkitLogger(verbose, b)
Log = SetupMeshkitLogger("mesheryctl", verbose, b)
return b
}

Expand Down
Loading