From 198f36cc855b3db5630850ffbfa4d9dcf67cb92b Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 18 Jan 2024 15:40:51 +0100 Subject: [PATCH 01/10] Add progress flag if docker compose is used --- internal/compose/compose.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/compose/compose.go b/internal/compose/compose.go index 87e512e290..0f7884f958 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -439,7 +439,13 @@ func (p *Project) baseArgs() []string { } if p.disableANSI { - args = append(args, "--ansi", "never") + if !p.dockerComposeStandalone { + // --ansi never looks is ignored by "docker compose" + // adding --progress plain is a similar result + args = append(args, "--progress", "plain") + } else { + args = append(args, "--ansi", "never") + } } args = append(args, "-p", p.name) From 0484777c4351b846f16a817c0ef5e2dc2cb1af91 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 18 Jan 2024 16:11:57 +0100 Subject: [PATCH 02/10] Add new environment variable --- .buildkite/pipeline.yml | 1 + internal/compose/compose.go | 23 ++++++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 888ed00588..6e76d52cc4 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,6 +1,7 @@ env: SETUP_GVM_VERSION: 'v0.5.1' # https://github.com/andrewkroh/gvm/issues/44#issuecomment-1013231151 ELASTIC_PACKAGE_COMPOSE_DISABLE_ANSI: "true" + ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT: "true" ELASTIC_PACKAGE_COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION: "true" KIND_VERSION: 'v0.20.0' K8S_VERSION: 'v1.29.0' diff --git a/internal/compose/compose.go b/internal/compose/compose.go index 0f7884f958..843426992b 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -34,6 +34,7 @@ const ( var ( DisableANSIComposeEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_ANSI") + DisableProgressOutputComposeEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_PROGRESS_OUTPUT") DisablePullProgressInformationEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION") EnableComposeStandaloneEnv = environment.WithElasticPackagePrefix("COMPOSE_ENABLE_STANDALONE") ) @@ -47,6 +48,7 @@ type Project struct { dockerComposeStandalone bool disableANSI bool disablePullProgressInformation bool + disableProgressOutput bool } // Config represents a Docker Compose configuration file. @@ -214,6 +216,11 @@ func NewProject(name string, paths ...string) (*Project, error) { c.disablePullProgressInformation = true } + v, ok = os.LookupEnv(DisableProgressOutputComposeEnv) + if !c.dockerComposeV1 && !c.dockerComposeStandalone && ok && strings.ToLower(v) != "false" { + c.disableProgressOutput = true + } + return &c, nil } @@ -439,13 +446,15 @@ func (p *Project) baseArgs() []string { } if p.disableANSI { - if !p.dockerComposeStandalone { - // --ansi never looks is ignored by "docker compose" - // adding --progress plain is a similar result - args = append(args, "--progress", "plain") - } else { - args = append(args, "--ansi", "never") - } + args = append(args, "--ansi", "never") + } + + if p.disableProgressOutput { + // --ansi never looks is ignored by "docker compose" + // adding --progress plain is a similar result + // if set to "quiet" there is no output at all for docker compose commands + args = append(args, "--progress", "plain") + } args = append(args, "-p", p.name) From b32ba681e2c9e040515310c25ba027fa81ba216c Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 18 Jan 2024 16:39:24 +0100 Subject: [PATCH 03/10] Update comment --- internal/compose/compose.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/internal/compose/compose.go b/internal/compose/compose.go index 843426992b..8743051edb 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -451,10 +451,9 @@ func (p *Project) baseArgs() []string { if p.disableProgressOutput { // --ansi never looks is ignored by "docker compose" - // adding --progress plain is a similar result - // if set to "quiet" there is no output at all for docker compose commands + // adding --progress plain is a similar result as --ansi never + // if set to "--progress quiet", there is no output at all from docker compose commands args = append(args, "--progress", "plain") - } args = append(args, "-p", p.name) From 0042aa6bc61a5db9d857082634386fbbefda733e Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 18 Jan 2024 17:01:12 +0100 Subject: [PATCH 04/10] Set quiet as value of progress flag --- internal/compose/compose.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/compose/compose.go b/internal/compose/compose.go index 8743051edb..ba0244e90e 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -453,7 +453,7 @@ func (p *Project) baseArgs() []string { // --ansi never looks is ignored by "docker compose" // adding --progress plain is a similar result as --ansi never // if set to "--progress quiet", there is no output at all from docker compose commands - args = append(args, "--progress", "plain") + args = append(args, "--progress", "quiet") } args = append(args, "-p", p.name) From f2d48f4f18c70ec4f8c73d7866adeab4be37c254 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 18 Jan 2024 17:24:05 +0100 Subject: [PATCH 05/10] Use a different environment variable --- .buildkite/pipeline.yml | 3 ++- internal/compose/compose.go | 21 ++++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 6e76d52cc4..6cd4d67eba 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,7 +1,8 @@ env: SETUP_GVM_VERSION: 'v0.5.1' # https://github.com/andrewkroh/gvm/issues/44#issuecomment-1013231151 ELASTIC_PACKAGE_COMPOSE_DISABLE_ANSI: "true" - ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT: "true" + # ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT: "true" + ELASTIC_PACKAGE_COMPOSE_PROGRESS_OUTPUT: "quiet" ELASTIC_PACKAGE_COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION: "true" KIND_VERSION: 'v0.20.0' K8S_VERSION: 'v1.29.0' diff --git a/internal/compose/compose.go b/internal/compose/compose.go index ba0244e90e..4e9b3f0b26 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -11,6 +11,7 @@ import ( "io" "os" "os/exec" + "slices" "strconv" "strings" "time" @@ -34,9 +35,10 @@ const ( var ( DisableANSIComposeEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_ANSI") - DisableProgressOutputComposeEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_PROGRESS_OUTPUT") DisablePullProgressInformationEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION") EnableComposeStandaloneEnv = environment.WithElasticPackagePrefix("COMPOSE_ENABLE_STANDALONE") + DisableProgressOutputComposeEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_PROGRESS_OUTPUT") + ProgressOutputComposeEnv = environment.WithElasticPackagePrefix("COMPOSE_PROGRESS_OUTPUT") ) // Project represents a Docker Compose project. @@ -49,6 +51,7 @@ type Project struct { disableANSI bool disablePullProgressInformation bool disableProgressOutput bool + progressOutput string } // Config represents a Docker Compose configuration file. @@ -214,6 +217,7 @@ func NewProject(name string, paths ...string) (*Project, error) { v, ok = os.LookupEnv(DisablePullProgressInformationEnv) if ok && strings.ToLower(v) != "false" { c.disablePullProgressInformation = true + } v, ok = os.LookupEnv(DisableProgressOutputComposeEnv) @@ -221,6 +225,14 @@ func NewProject(name string, paths ...string) (*Project, error) { c.disableProgressOutput = true } + v, ok = os.LookupEnv(ProgressOutputComposeEnv) + if !c.dockerComposeV1 && !c.dockerComposeStandalone && ok { + if !slices.Contains([]string{"auto", "plain", "quiet"}, strings.ToLower(v)) { + return nil, fmt.Errorf("unexpected value for environment variable %s: %s", ProgressOutputComposeEnv, v) + } + c.progressOutput = strings.ToLower(v) + } + return &c, nil } @@ -456,6 +468,13 @@ func (p *Project) baseArgs() []string { args = append(args, "--progress", "quiet") } + if p.progressOutput != "" { + // --ansi never looks is ignored by "docker compose" + // adding --progress plain is a similar result as --ansi never + // if set to "--progress quiet", there is no output at all from docker compose commands + args = append(args, "--progress", p.progressOutput) + } + args = append(args, "-p", p.name) return args } From 93a334d0d3273c49366bcaac790b7ca36fc3820d Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 18 Jan 2024 17:29:20 +0100 Subject: [PATCH 06/10] Add section in README for environment variables --- README.md | 16 ++++++++++++++++ tools/readme/readme.md.tmpl | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/README.md b/README.md index b557fd28fc..c3df59c779 100644 --- a/README.md +++ b/README.md @@ -625,6 +625,22 @@ The following settings are available per profile: * `stack.serverless.region` can be used to select the region to use when starting serverless projects. +## Useful environment variables + +There are available some environment variables to change some settings related: + +- Related to `docker-compose` / `docker compose` commands: + - `ELASTIC_PACKAGE_COMPOSE_DISABLE_ANSI`: If set to `true`, it disables the ANSI characaters from `docker-compose` commands adding `--ansi never`. + - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION`: If set to `true`, it disables the pull progress information about `docker-compose up` commands adding `--quiet-pull` + - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT`: If set to `true`, it disables the the progress output from `docker compose` commands adding `--progress never`. TBD + +- Related to build process: + - `ELASTIC_PACKAGE_REPOSITORY_LICENSE`: Path to the default repository license. + - `ELASTIC_PACKAGE_LINKS_FILE_PATH`: Path to the links table file (e.g. `links_table.yml`) to be used to while building packages to render links. + +- Related to tests: + - `ELASTIC_PACKAGE_SERVERLESS_PIPELINE_TEST_DISABLE_COMPARE_RESULTS`: If set to `true`, the results from pipeline tests are not compared to avoid errors from GeoIP. + ## Release process This project uses [GoReleaser](https://goreleaser.com/) to release a new version of the application (semver). Release publishing diff --git a/tools/readme/readme.md.tmpl b/tools/readme/readme.md.tmpl index ede02ded38..f920ac5c0d 100644 --- a/tools/readme/readme.md.tmpl +++ b/tools/readme/readme.md.tmpl @@ -178,6 +178,22 @@ The following settings are available per profile: * `stack.serverless.region` can be used to select the region to use when starting serverless projects. +## Useful environment variables + +There are available some environment variables to change some settings related: + +- Related to `docker-compose` / `docker compose` commands: + - `ELASTIC_PACKAGE_COMPOSE_DISABLE_ANSI`: If set to `true`, it disables the ANSI characaters from `docker-compose` commands adding `--ansi never`. + - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION`: If set to `true`, it disables the pull progress information about `docker-compose up` commands adding `--quiet-pull` + - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT`: If set to `true`, it disables the the progress output from `docker compose` commands adding `--progress never`. TBD + +- Related to build process: + - `ELASTIC_PACKAGE_REPOSITORY_LICENSE`: Path to the default repository license. + - `ELASTIC_PACKAGE_LINKS_FILE_PATH`: Path to the links table file (e.g. `links_table.yml`) to be used to while building packages to render links. + +- Related to tests: + - `ELASTIC_PACKAGE_SERVERLESS_PIPELINE_TEST_DISABLE_COMPARE_RESULTS`: If set to `true`, the results from pipeline tests are not compared to avoid errors from GeoIP. + ## Release process This project uses [GoReleaser](https://goreleaser.com/) to release a new version of the application (semver). Release publishing From f8f75788f0b7208d792793d0dcf2d1cff4346aad Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 18 Jan 2024 18:23:48 +0100 Subject: [PATCH 07/10] Update README with environment variables available --- README.md | 33 +++++++++++++++++++++++++++++---- tools/readme/readme.md.tmpl | 33 +++++++++++++++++++++++++++++---- 2 files changed, 58 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index c3df59c779..ecc9966be1 100644 --- a/README.md +++ b/README.md @@ -627,20 +627,45 @@ The following settings are available per profile: ## Useful environment variables -There are available some environment variables to change some settings related: +There are available some environment variables that could be used to change some of the +`elastic-package` settings: - Related to `docker-compose` / `docker compose` commands: - `ELASTIC_PACKAGE_COMPOSE_DISABLE_ANSI`: If set to `true`, it disables the ANSI characaters from `docker-compose` commands adding `--ansi never`. - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION`: If set to `true`, it disables the pull progress information about `docker-compose up` commands adding `--quiet-pull` - - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT`: If set to `true`, it disables the the progress output from `docker compose` commands adding `--progress never`. TBD + - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT`: If set to `true`, it disables the progress output from `docker compose` commands adding `--progress never`. TBD -- Related to build process: +- Related to global `elastic-package` settings: + - `ELASTIC_PACKAGE_CHECK_UPDATE_DISABLED`: if set to `true`, `elastic-package` is not going to check + for newer versions. + - `ELASTIC_PACKAGE_PROFILE`: Name of the profile to be using. + - `ELASTIC_PACKAGE_DATA_HOME`: Custom path to be used for `elastic-package` data directory. By default this is `~/.elastic-package`. + +- Related to the build process: - `ELASTIC_PACKAGE_REPOSITORY_LICENSE`: Path to the default repository license. - - `ELASTIC_PACKAGE_LINKS_FILE_PATH`: Path to the links table file (e.g. `links_table.yml`) to be used to while building packages to render links. + - `ELASTIC_PACKAGE_LINKS_FILE_PATH`: Path to the links table file (e.g. `links_table.yml`) with the link definitions to be used in the build process of a package. + +- Related to signing packages: + - `ELASTIC_PACKAGE_SIGNER_PRIVATE_KEYFILE`: Path to the private key file to sign packages. + - `ELASTIC_PACKAGE_SIGNER_PASSPHRASE`: Passphrase to use the private key file. - Related to tests: - `ELASTIC_PACKAGE_SERVERLESS_PIPELINE_TEST_DISABLE_COMPARE_RESULTS`: If set to `true`, the results from pipeline tests are not compared to avoid errors from GeoIP. +- To configure the Elastic stack to be used by `elastic-package`: + - `ELASTIC_PACKAGE_ELASTICSEARCH_HOST`: Host of the elasticsearch (e.g. https://127.0.0.1:9200) + - `ELASTIC_PACKAGE_ELASTICSEARCH_USERNAME`: User name to connect to elasticsearch (e.g. elastic) + - `ELASTIC_PACKAGE_ELASTICSEARCH_PASSWORD`: Password of that user. + - `ELASTIC_PACKAGE_ELASTICSEARCH_KIBANA_HOST`: Kibana URL (e.g. https://127.0.0.1:5601) + - `ELASTIC_PACKAGE_ELASTICSEARCH_CA_CERT`: Path to the CA certificate to connect to the Elastic stack services. + +- To configure an external metricstore while running benchmarks (more info at [system benchmarking docs](https://github.com/elastic/elastic-package/blob/main/docs/howto/system_benchmarking.md#setting-up-an-external-metricstore) or [rally benchmarking docs](https://github.com/elastic/elastic-package/blob/main/docs/howto/rally_benchmarking.md#setting-up-an-external-metricstore)): + - `ELASTIC_PACKAGE_ESMETRICSTORE_HOST`: Host of the elasticsearch (e.g. https://127.0.0.1:9200) + - `ELASTIC_PACKAGE_ESMETRICSTORE_USERNAME`: Username to connect to elasticsearch (e.g. elastic) + - `ELASTIC_PACKAGE_ESMETRICSTORE_PASSWORD`: Password for the user. + - `ELASTIC_PACKAGE_ESMETRICSTORE_CA_CERT`: Path to the CA certificate to connect to the Elastic stack services. + + ## Release process This project uses [GoReleaser](https://goreleaser.com/) to release a new version of the application (semver). Release publishing diff --git a/tools/readme/readme.md.tmpl b/tools/readme/readme.md.tmpl index f920ac5c0d..40e1e683cd 100644 --- a/tools/readme/readme.md.tmpl +++ b/tools/readme/readme.md.tmpl @@ -180,20 +180,45 @@ The following settings are available per profile: ## Useful environment variables -There are available some environment variables to change some settings related: +There are available some environment variables that could be used to change some of the +`elastic-package` settings: - Related to `docker-compose` / `docker compose` commands: - `ELASTIC_PACKAGE_COMPOSE_DISABLE_ANSI`: If set to `true`, it disables the ANSI characaters from `docker-compose` commands adding `--ansi never`. - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION`: If set to `true`, it disables the pull progress information about `docker-compose up` commands adding `--quiet-pull` - - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT`: If set to `true`, it disables the the progress output from `docker compose` commands adding `--progress never`. TBD + - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT`: If set to `true`, it disables the progress output from `docker compose` commands adding `--progress never`. TBD -- Related to build process: +- Related to global `elastic-package` settings: + - `ELASTIC_PACKAGE_CHECK_UPDATE_DISABLED`: if set to `true`, `elastic-package` is not going to check + for newer versions. + - `ELASTIC_PACKAGE_PROFILE`: Name of the profile to be using. + - `ELASTIC_PACKAGE_DATA_HOME`: Custom path to be used for `elastic-package` data directory. By default this is `~/.elastic-package`. + +- Related to the build process: - `ELASTIC_PACKAGE_REPOSITORY_LICENSE`: Path to the default repository license. - - `ELASTIC_PACKAGE_LINKS_FILE_PATH`: Path to the links table file (e.g. `links_table.yml`) to be used to while building packages to render links. + - `ELASTIC_PACKAGE_LINKS_FILE_PATH`: Path to the links table file (e.g. `links_table.yml`) with the link definitions to be used in the build process of a package. + +- Related to signing packages: + - `ELASTIC_PACKAGE_SIGNER_PRIVATE_KEYFILE`: Path to the private key file to sign packages. + - `ELASTIC_PACKAGE_SIGNER_PASSPHRASE`: Passphrase to use the private key file. - Related to tests: - `ELASTIC_PACKAGE_SERVERLESS_PIPELINE_TEST_DISABLE_COMPARE_RESULTS`: If set to `true`, the results from pipeline tests are not compared to avoid errors from GeoIP. +- To configure the Elastic stack to be used by `elastic-package`: + - `ELASTIC_PACKAGE_ELASTICSEARCH_HOST`: Host of the elasticsearch (e.g. https://127.0.0.1:9200) + - `ELASTIC_PACKAGE_ELASTICSEARCH_USERNAME`: User name to connect to elasticsearch (e.g. elastic) + - `ELASTIC_PACKAGE_ELASTICSEARCH_PASSWORD`: Password of that user. + - `ELASTIC_PACKAGE_ELASTICSEARCH_KIBANA_HOST`: Kibana URL (e.g. https://127.0.0.1:5601) + - `ELASTIC_PACKAGE_ELASTICSEARCH_CA_CERT`: Path to the CA certificate to connect to the Elastic stack services. + +- To configure an external metricstore while running benchmarks (more info at [system benchmarking docs](https://github.com/elastic/elastic-package/blob/main/docs/howto/system_benchmarking.md#setting-up-an-external-metricstore) or [rally benchmarking docs](https://github.com/elastic/elastic-package/blob/main/docs/howto/rally_benchmarking.md#setting-up-an-external-metricstore)): + - `ELASTIC_PACKAGE_ESMETRICSTORE_HOST`: Host of the elasticsearch (e.g. https://127.0.0.1:9200) + - `ELASTIC_PACKAGE_ESMETRICSTORE_USERNAME`: Username to connect to elasticsearch (e.g. elastic) + - `ELASTIC_PACKAGE_ESMETRICSTORE_PASSWORD`: Password for the user. + - `ELASTIC_PACKAGE_ESMETRICSTORE_CA_CERT`: Path to the CA certificate to connect to the Elastic stack services. + + ## Release process This project uses [GoReleaser](https://goreleaser.com/) to release a new version of the application (semver). Release publishing From aa1c3659b7e344b5502487f8d10478979e587eb1 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Mon, 22 Jan 2024 12:44:26 +0100 Subject: [PATCH 08/10] Just use one env variable to disable progress output --- README.md | 7 +++--- internal/compose/compose.go | 50 +++++++++++-------------------------- tools/readme/readme.md.tmpl | 7 +++--- 3 files changed, 23 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index ecc9966be1..eae32b5a67 100644 --- a/README.md +++ b/README.md @@ -631,9 +631,10 @@ There are available some environment variables that could be used to change some `elastic-package` settings: - Related to `docker-compose` / `docker compose` commands: - - `ELASTIC_PACKAGE_COMPOSE_DISABLE_ANSI`: If set to `true`, it disables the ANSI characaters from `docker-compose` commands adding `--ansi never`. - - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION`: If set to `true`, it disables the pull progress information about `docker-compose up` commands adding `--quiet-pull` - - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT`: If set to `true`, it disables the progress output from `docker compose` commands adding `--progress never`. TBD + - `ELASTIC_PACKAGE_COMPOSE_DISABLE_VERBOSE_OUTPUT`: If set to `true`, it disables the progress output from `docker compose`/`docker-compose` commands. + - For versions v2 `< 2.19.0`, it sets `--ansi never` flag. + - For versions v2 `>= 2.19.0`, it sets `--progress plain` flag and `--quiet-pull` for `up` sub-command`. + - Related to global `elastic-package` settings: - `ELASTIC_PACKAGE_CHECK_UPDATE_DISABLED`: if set to `true`, `elastic-package` is not going to check diff --git a/internal/compose/compose.go b/internal/compose/compose.go index 4e9b3f0b26..dca489ce2c 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -11,7 +11,6 @@ import ( "io" "os" "os/exec" - "slices" "strconv" "strings" "time" @@ -34,11 +33,12 @@ const ( ) var ( - DisableANSIComposeEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_ANSI") - DisablePullProgressInformationEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION") - EnableComposeStandaloneEnv = environment.WithElasticPackagePrefix("COMPOSE_ENABLE_STANDALONE") - DisableProgressOutputComposeEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_PROGRESS_OUTPUT") - ProgressOutputComposeEnv = environment.WithElasticPackagePrefix("COMPOSE_PROGRESS_OUTPUT") + EnableComposeStandaloneEnv = environment.WithElasticPackagePrefix("COMPOSE_ENABLE_STANDALONE") + DisableVerboseOutputComposeEnv = environment.WithElasticPackagePrefix("COMPOSE_DISABLE_VERBOSE_OUTPUT") +) + +const ( + defaultComposeProgressOutput = "plain" ) // Project represents a Docker Compose project. @@ -50,8 +50,8 @@ type Project struct { dockerComposeStandalone bool disableANSI bool disablePullProgressInformation bool - disableProgressOutput bool progressOutput string + composeVersion *semver.Version } // Config represents a Docker Compose configuration file. @@ -209,28 +209,14 @@ func NewProject(name string, paths ...string) (*Project, error) { } logger.Debug(versionMessage) - v, ok = os.LookupEnv(DisableANSIComposeEnv) + v, ok = os.LookupEnv(DisableVerboseOutputComposeEnv) if !c.dockerComposeV1 && ok && strings.ToLower(v) != "false" { - c.disableANSI = true - } - - v, ok = os.LookupEnv(DisablePullProgressInformationEnv) - if ok && strings.ToLower(v) != "false" { - c.disablePullProgressInformation = true - - } - - v, ok = os.LookupEnv(DisableProgressOutputComposeEnv) - if !c.dockerComposeV1 && !c.dockerComposeStandalone && ok && strings.ToLower(v) != "false" { - c.disableProgressOutput = true - } - - v, ok = os.LookupEnv(ProgressOutputComposeEnv) - if !c.dockerComposeV1 && !c.dockerComposeStandalone && ok { - if !slices.Contains([]string{"auto", "plain", "quiet"}, strings.ToLower(v)) { - return nil, fmt.Errorf("unexpected value for environment variable %s: %s", ProgressOutputComposeEnv, v) + if c.composeVersion.LessThan(semver.MustParse("2.19.0")) { + c.disableANSI = true + } else { + c.progressOutput = defaultComposeProgressOutput } - c.progressOutput = strings.ToLower(v) + c.disablePullProgressInformation = true } return &c, nil @@ -461,15 +447,8 @@ func (p *Project) baseArgs() []string { args = append(args, "--ansi", "never") } - if p.disableProgressOutput { - // --ansi never looks is ignored by "docker compose" - // adding --progress plain is a similar result as --ansi never - // if set to "--progress quiet", there is no output at all from docker compose commands - args = append(args, "--progress", "quiet") - } - if p.progressOutput != "" { - // --ansi never looks is ignored by "docker compose" + // --ansi never looks is ignored by "docker compose" and latest versions of "docker-compose" // adding --progress plain is a similar result as --ansi never // if set to "--progress quiet", there is no output at all from docker compose commands args = append(args, "--progress", p.progressOutput) @@ -537,6 +516,7 @@ func (p *Project) dockerComposeVersion() (*semver.Version, error) { if err != nil { return nil, fmt.Errorf("docker compose version is not a valid semver (value: %s): %w", dcVersion, err) } + p.composeVersion = ver return ver, nil } diff --git a/tools/readme/readme.md.tmpl b/tools/readme/readme.md.tmpl index 40e1e683cd..4f83703227 100644 --- a/tools/readme/readme.md.tmpl +++ b/tools/readme/readme.md.tmpl @@ -184,9 +184,10 @@ There are available some environment variables that could be used to change some `elastic-package` settings: - Related to `docker-compose` / `docker compose` commands: - - `ELASTIC_PACKAGE_COMPOSE_DISABLE_ANSI`: If set to `true`, it disables the ANSI characaters from `docker-compose` commands adding `--ansi never`. - - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION`: If set to `true`, it disables the pull progress information about `docker-compose up` commands adding `--quiet-pull` - - `ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT`: If set to `true`, it disables the progress output from `docker compose` commands adding `--progress never`. TBD + - `ELASTIC_PACKAGE_COMPOSE_DISABLE_VERBOSE_OUTPUT`: If set to `true`, it disables the progress output from `docker compose`/`docker-compose` commands. + - For versions v2 `< 2.19.0`, it sets `--ansi never` flag. + - For versions v2 `>= 2.19.0`, it sets `--progress plain` flag and `--quiet-pull` for `up` sub-command`. + - Related to global `elastic-package` settings: - `ELASTIC_PACKAGE_CHECK_UPDATE_DISABLED`: if set to `true`, `elastic-package` is not going to check From 80141c140de0a0f44135d837d8b2d59cf9589bbc Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Mon, 22 Jan 2024 13:01:27 +0100 Subject: [PATCH 09/10] Update env. vars in BK pipeline --- .buildkite/pipeline.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 6cd4d67eba..c45959bed2 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,9 +1,6 @@ env: SETUP_GVM_VERSION: 'v0.5.1' # https://github.com/andrewkroh/gvm/issues/44#issuecomment-1013231151 - ELASTIC_PACKAGE_COMPOSE_DISABLE_ANSI: "true" - # ELASTIC_PACKAGE_COMPOSE_DISABLE_PROGRESS_OUTPUT: "true" - ELASTIC_PACKAGE_COMPOSE_PROGRESS_OUTPUT: "quiet" - ELASTIC_PACKAGE_COMPOSE_DISABLE_PULL_PROGRESS_INFORMATION: "true" + ELASTIC_PACKAGE_COMPOSE_DISABLE_VERBOSE_OUTPUT: "true" KIND_VERSION: 'v0.20.0' K8S_VERSION: 'v1.29.0' LINUX_AGENT_IMAGE: "golang:${GO_VERSION}" From 2ba47622905c6218fcd30b5303f378cdac2bc0dd Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Mon, 22 Jan 2024 13:03:53 +0100 Subject: [PATCH 10/10] Moved comment --- internal/compose/compose.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/compose/compose.go b/internal/compose/compose.go index dca489ce2c..9b8ceda59b 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -214,6 +214,9 @@ func NewProject(name string, paths ...string) (*Project, error) { if c.composeVersion.LessThan(semver.MustParse("2.19.0")) { c.disableANSI = true } else { + // --ansi never looks is ignored by "docker compose" and latest versions of "docker-compose" + // adding --progress plain is a similar result as --ansi never + // if set to "--progress quiet", there is no output at all from docker compose commands c.progressOutput = defaultComposeProgressOutput } c.disablePullProgressInformation = true @@ -448,9 +451,6 @@ func (p *Project) baseArgs() []string { } if p.progressOutput != "" { - // --ansi never looks is ignored by "docker compose" and latest versions of "docker-compose" - // adding --progress plain is a similar result as --ansi never - // if set to "--progress quiet", there is no output at all from docker compose commands args = append(args, "--progress", p.progressOutput) }