func before(c *cli.Context) error { initLogFormatter() initHelpAndVersionFlags() initAppHelpTemplate() // Debug mode? if c.Bool(DebugModeKey) { // set for other tools, as an ENV if err := os.Setenv(bitrise.DebugModeEnvKey, "true"); err != nil { return err } IsDebugMode = true log.Warn("=> Started in DEBUG mode") } // Log level // If log level defined - use it logLevelStr := c.String(LogLevelKey) if logLevelStr == "" && IsDebugMode { // if no Log Level defined and we're in Debug Mode - set loglevel to debug logLevelStr = "debug" log.Warn("=> LogLevel set to debug") } if logLevelStr == "" { // if still empty: set the default logLevelStr = "info" } level, err := log.ParseLevel(logLevelStr) if err != nil { return err } if err := os.Setenv(bitrise.LogLevelEnvKey, level.String()); err != nil { log.Fatal("Failed to set log level env:", err) } log.SetLevel(level) // CI Mode check if c.Bool(CIKey) { // if CI mode indicated make sure we set the related env // so all other tools we use will also get it if err := os.Setenv(bitrise.CIModeEnvKey, "true"); err != nil { return err } IsCIMode = true log.Info(colorstring.Yellow("bitrise runs in CI mode")) } if err := bitrise.InitPaths(); err != nil { log.Fatalf("Failed to initialize required paths: %s", err) } // Pull Request Mode check IsPullRequestMode = (os.Getenv(bitrise.PullRequestIDEnvKey) != "") return nil }
// RunWorkflowWithConfiguration ... func runWorkflowWithConfiguration( startTime time.Time, workflowToRunID string, bitriseConfig models.BitriseDataModel, secretEnvironments []envmanModels.EnvironmentItemModel) (models.BuildRunResultsModel, error) { if err := bitrise.InitPaths(); err != nil { return models.BuildRunResultsModel{}, fmt.Errorf("Failed to initialize required paths: %s", err) } workflowToRun, exist := bitriseConfig.Workflows[workflowToRunID] if !exist { return models.BuildRunResultsModel{}, fmt.Errorf("Specified Workflow (%s) does not exist!", workflowToRunID) } if workflowToRun.Title == "" { workflowToRun.Title = workflowToRunID } // Envman setup if err := os.Setenv(bitrise.EnvstorePathEnvKey, bitrise.OutputEnvstorePath); err != nil { return models.BuildRunResultsModel{}, fmt.Errorf("Failed to add env, err: %s", err) } if err := os.Setenv(bitrise.FormattedOutputPathEnvKey, bitrise.FormattedOutputPath); err != nil { return models.BuildRunResultsModel{}, fmt.Errorf("Failed to add env, err: %s", err) } if err := bitrise.EnvmanInit(); err != nil { return models.BuildRunResultsModel{}, errors.New("Failed to run envman init") } // App level environment environments := append(bitriseConfig.App.Environments, secretEnvironments...) if err := os.Setenv("BITRISE_TRIGGERED_WORKFLOW_ID", workflowToRunID); err != nil { return models.BuildRunResultsModel{}, fmt.Errorf("Failed to set BITRISE_TRIGGERED_WORKFLOW_ID env: %s", err) } if err := os.Setenv("BITRISE_TRIGGERED_WORKFLOW_TITLE", workflowToRun.Title); err != nil { return models.BuildRunResultsModel{}, fmt.Errorf("Failed to set BITRISE_TRIGGERED_WORKFLOW_TITLE env: %s", err) } buildRunResults := models.BuildRunResultsModel{ StartTime: startTime, StepmanUpdates: map[string]int{}, } environments = append(environments, workflowToRun.Environments...) lastWorkflowID, err := lastWorkflowIDInConfig(workflowToRunID, bitriseConfig) if err != nil { return models.BuildRunResultsModel{}, fmt.Errorf("Failed to get last workflow id: %s", err) } buildRunResults, err = activateAndRunWorkflow(workflowToRunID, workflowToRun, bitriseConfig, buildRunResults, &environments, lastWorkflowID) if err != nil { return buildRunResults, errors.New("[BITRISE_CLI] - Failed to activate and run workflow " + workflowToRunID) } // Build finished bitrise.PrintSummary(buildRunResults) if buildRunResults.IsBuildFailed() { return buildRunResults, errors.New("[BITRISE_CLI] - Workflow FINISHED but a couple of steps failed - Ouch") } if buildRunResults.HasFailedSkippableSteps() { log.Warn("[BITRISE_CLI] - Workflow FINISHED but a couple of non imporatant steps failed") } return buildRunResults, nil }