diff --git a/build/ci/release.yml b/build/ci/release.yml index 506255785b..03ed09620f 100644 --- a/build/ci/release.yml +++ b/build/ci/release.yml @@ -237,6 +237,7 @@ functions: - distro - edition - server_version + - pgp_server_version - project - revision - created_at @@ -271,6 +272,7 @@ functions: - project - revision - server_version + - pgp_server_version - created_at - image working_dir: src/github.com/mongodb/mongodb-atlas-cli/build/package/docker/meta @@ -297,6 +299,7 @@ functions: - entrypoint - mongo_package - mongo_repo + - pgp_server_version working_dir: src/github.com/mongodb/mongodb-atlas-cli/build/package/docker/repo binary: ./docker-build.sh "create-windows-host": diff --git a/build/package/docker/meta/amazonlinux2023-rpm.Dockerfile b/build/package/docker/meta/amazonlinux2023-rpm.Dockerfile index 5b8348601c..41c4716bb8 100644 --- a/build/package/docker/meta/amazonlinux2023-rpm.Dockerfile +++ b/build/package/docker/meta/amazonlinux2023-rpm.Dockerfile @@ -3,8 +3,9 @@ FROM artifactory.corp.mongodb.com/dockerhub/amazonlinux:2023 ARG url ARG entrypoint ARG server_version +ARG pgp_server_version -RUN printf "[mongodb-org-${server_version}]\nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2023/mongodb-org/${server_version}/x86_64/\ngpgcheck=1\nenabled=1\ngpgkey=https://pgp.mongodb.com/server-${server_version}.asc\n" > /etc/yum.repos.d/mongodb-org-${server_version}.repo +RUN printf "[mongodb-org-${server_version}]\nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2023/mongodb-org/${server_version}/x86_64/\ngpgcheck=1\nenabled=1\ngpgkey=https://pgp.mongodb.com/server-${pgp_server_version}.asc\n" > /etc/yum.repos.d/mongodb-org-${server_version}.repo RUN set -eux; \ curl --silent --show-error --fail --location --retry 3 \ diff --git a/build/package/docker/meta/centos8-rpm.Dockerfile b/build/package/docker/meta/centos8-rpm.Dockerfile index 65752234f4..88e469a76d 100644 --- a/build/package/docker/meta/centos8-rpm.Dockerfile +++ b/build/package/docker/meta/centos8-rpm.Dockerfile @@ -3,10 +3,11 @@ FROM artifactory.corp.mongodb.com/dockerhub/centos:8 ARG url ARG entrypoint ARG server_version +ARG pgp_server_version RUN rm -rf /etc/yum.repos.d/* -RUN printf "[mongodb-org-${server_version}]\nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/${server_version}/x86_64/\ngpgcheck=1\nenabled=1\ngpgkey=https://pgp.mongodb.com/server-${server_version}.asc\n" > /etc/yum.repos.d/mongodb-org-${server_version}.repo +RUN printf "[mongodb-org-${server_version}]\nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/${server_version}/x86_64/\ngpgcheck=1\nenabled=1\ngpgkey=https://pgp.mongodb.com/server-${pgp_server_version}.asc\n" > /etc/yum.repos.d/mongodb-org-${server_version}.repo RUN set -eux; \ curl --silent --show-error --fail --location --retry 3 \ diff --git a/build/package/docker/meta/debian11-deb.Dockerfile b/build/package/docker/meta/debian11-deb.Dockerfile index 682d1c72a0..26a24df656 100644 --- a/build/package/docker/meta/debian11-deb.Dockerfile +++ b/build/package/docker/meta/debian11-deb.Dockerfile @@ -3,6 +3,7 @@ FROM artifactory.corp.mongodb.com/dockerhub/debian:11-slim ARG url ARG entrypoint ARG server_version +ARG pgp_server_version RUN set -eux; \ apt-get update; \ @@ -15,7 +16,7 @@ RUN set -eux; \ if ! command -v ps > /dev/null; then \ apt-get install -y --no-install-recommends procps; \ fi; \ - curl -L https://www.mongodb.org/static/pgp/server-${server_version}.asc | apt-key add -; \ + curl -L https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc | apt-key add -; \ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/${server_version} main" | tee /etc/apt/sources.list.d/mongodb-org-${server_version}.list; \ rm -rf /var/lib/apt/lists/* diff --git a/build/package/docker/meta/debian12-deb.Dockerfile b/build/package/docker/meta/debian12-deb.Dockerfile index d8189f4968..d3219844c1 100644 --- a/build/package/docker/meta/debian12-deb.Dockerfile +++ b/build/package/docker/meta/debian12-deb.Dockerfile @@ -3,6 +3,7 @@ FROM artifactory.corp.mongodb.com/dockerhub/debian:12-slim ARG url ARG entrypoint ARG server_version +ARG pgp_server_version RUN set -eux; \ apt-get update; \ @@ -15,7 +16,7 @@ RUN set -eux; \ if ! command -v ps > /dev/null; then \ apt-get install -y --no-install-recommends procps; \ fi; \ - curl -L https://www.mongodb.org/static/pgp/server-${server_version}.asc | apt-key add -; \ + curl -L https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc | apt-key add -; \ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/${server_version} main" | tee /etc/apt/sources.list.d/mongodb-org-${server_version}.list; \ rm -rf /var/lib/apt/lists/* diff --git a/build/package/docker/meta/docker-build.sh b/build/package/docker/meta/docker-build.sh index 82488f19ca..e2f70a7eac 100755 --- a/build/package/docker/meta/docker-build.sh +++ b/build/package/docker/meta/docker-build.sh @@ -30,5 +30,6 @@ docker build \ --build-arg url="${URL-}" \ --build-arg entrypoint="${ENTRYPOINT-}" \ --build-arg server_version="${server_version-}" \ + --build-arg pgp_server_version="${pgp_server_version-}" \ -t "atlascli-${image-}" \ -f "${image-}.Dockerfile" . diff --git a/build/package/docker/meta/rhel9-rpm.Dockerfile b/build/package/docker/meta/rhel9-rpm.Dockerfile index f1daa5f260..db58596cc4 100644 --- a/build/package/docker/meta/rhel9-rpm.Dockerfile +++ b/build/package/docker/meta/rhel9-rpm.Dockerfile @@ -3,10 +3,11 @@ FROM registry.access.redhat.com/ubi9/ubi ARG url ARG entrypoint ARG server_version +ARG pgp_server_version RUN rm -rf /etc/yum.repos.d/* -RUN printf "[mongodb-org-${server_version}]\nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/${server_version}/x86_64/\ngpgcheck=1\nenabled=1\ngpgkey=https://pgp.mongodb.com/server-${server_version}.asc\n" > /etc/yum.repos.d/mongodb-org-${server_version}.repo +RUN printf "[mongodb-org-${server_version}]\nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/${server_version}/x86_64/\ngpgcheck=1\nenabled=1\ngpgkey=https://pgp.mongodb.com/server-${pgp_server_version}.asc\n" > /etc/yum.repos.d/mongodb-org-${server_version}.repo RUN set -eux; \ curl --silent --show-error --fail --location --retry 3 \ diff --git a/build/package/docker/meta/suse15-rpm.Dockerfile b/build/package/docker/meta/suse15-rpm.Dockerfile index 150aff4953..93503b4a59 100644 --- a/build/package/docker/meta/suse15-rpm.Dockerfile +++ b/build/package/docker/meta/suse15-rpm.Dockerfile @@ -3,6 +3,7 @@ FROM registry.suse.com/suse/sle15 ARG url ARG entrypoint ARG server_version +ARG pgp_server_version RUN rpm --import https://pgp.mongodb.com/server-${server_version}.asc diff --git a/build/package/docker/meta/ubuntu20.04-deb.Dockerfile b/build/package/docker/meta/ubuntu20.04-deb.Dockerfile index c5a89009e7..d7777d26d6 100644 --- a/build/package/docker/meta/ubuntu20.04-deb.Dockerfile +++ b/build/package/docker/meta/ubuntu20.04-deb.Dockerfile @@ -3,6 +3,7 @@ FROM artifactory.corp.mongodb.com/dockerhub/ubuntu:20.04 ARG url ARG entrypoint ARG server_version +ARG pgp_server_version RUN set -eux; \ apt-get update; \ @@ -14,7 +15,7 @@ RUN set -eux; \ if ! command -v ps > /dev/null; then \ apt-get install -y --no-install-recommends procps; \ fi; \ - curl -L https://www.mongodb.org/static/pgp/server-${server_version}.asc | apt-key add -; \ + curl -L https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc | apt-key add -; \ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/${server_version} multiverse" | tee /etc/apt/sources.list.d/mongodb-org-${server_version}.list; \ rm -rf /var/lib/apt/lists/* diff --git a/build/package/docker/meta/ubuntu22.04-deb.Dockerfile b/build/package/docker/meta/ubuntu22.04-deb.Dockerfile index ec9b29d43b..d1c7e40ebf 100644 --- a/build/package/docker/meta/ubuntu22.04-deb.Dockerfile +++ b/build/package/docker/meta/ubuntu22.04-deb.Dockerfile @@ -3,6 +3,7 @@ FROM artifactory.corp.mongodb.com/dockerhub/ubuntu:22.04 ARG url ARG entrypoint ARG server_version +ARG pgp_server_version RUN set -eux; \ apt-get update; \ @@ -14,7 +15,7 @@ RUN set -eux; \ if ! command -v ps > /dev/null; then \ apt-get install -y --no-install-recommends procps; \ fi; \ - curl -L https://www.mongodb.org/static/pgp/server-${server_version}.asc | apt-key add -; \ + curl -L https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc | apt-key add -; \ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/${server_version} multiverse" | tee /etc/apt/sources.list.d/mongodb-org-${server_version}.list; \ rm -rf /var/lib/apt/lists/* diff --git a/build/package/docker/meta/ubuntu24.04-deb.Dockerfile b/build/package/docker/meta/ubuntu24.04-deb.Dockerfile index 1aaa1690fc..5ca95037d4 100644 --- a/build/package/docker/meta/ubuntu24.04-deb.Dockerfile +++ b/build/package/docker/meta/ubuntu24.04-deb.Dockerfile @@ -3,6 +3,7 @@ FROM artifactory.corp.mongodb.com/dockerhub/ubuntu:24.04 ARG url ARG entrypoint ARG server_version +ARG pgp_server_version RUN set -eux; \ apt-get update; \ @@ -14,7 +15,7 @@ RUN set -eux; \ if ! command -v ps > /dev/null; then \ apt-get install -y --no-install-recommends procps; \ fi; \ - curl -L https://www.mongodb.org/static/pgp/server-${server_version}.asc | apt-key add -; \ + curl -L https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc | apt-key add -; \ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/${server_version} multiverse" | tee /etc/apt/sources.list.d/mongodb-org-${server_version}.list; \ rm -rf /var/lib/apt/lists/* diff --git a/build/package/docker/repo/amazonlinux2023.Dockerfile b/build/package/docker/repo/amazonlinux2023.Dockerfile index 861fa02d33..e02dcf7bc1 100644 --- a/build/package/docker/repo/amazonlinux2023.Dockerfile +++ b/build/package/docker/repo/amazonlinux2023.Dockerfile @@ -3,10 +3,11 @@ FROM artifactory.corp.mongodb.com/dockerhub/amazonlinux:2023 ARG package ARG entrypoint ARG server_version +ARG pgp_server_version ARG mongo_package ARG mongo_repo -RUN printf "[${mongo_package}-${server_version}]\nname=MongoDB Repository\nbaseurl=${mongo_repo}/yum/amazon/2023/${mongo_package}/${server_version}/\$basearch/\ngpgcheck=1\nenabled=1\ngpgkey=https://www.mongodb.org/static/pgp/server-${server_version}.asc\n" > /etc/yum.repos.d/${mongo_package}-${server_version}.repo +RUN printf "[${mongo_package}-${server_version}]\nname=MongoDB Repository\nbaseurl=${mongo_repo}/yum/amazon/2023/${mongo_package}/${server_version}/\$basearch/\ngpgcheck=1\nenabled=1\ngpgkey=https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc\n" > /etc/yum.repos.d/${mongo_package}-${server_version}.repo RUN set -eux; \ yum install -y ${package} diff --git a/build/package/docker/repo/centos8.Dockerfile b/build/package/docker/repo/centos8.Dockerfile index a97e7a4b1b..41bb2fde49 100644 --- a/build/package/docker/repo/centos8.Dockerfile +++ b/build/package/docker/repo/centos8.Dockerfile @@ -3,12 +3,13 @@ FROM artifactory.corp.mongodb.com/dockerhub/centos:8 ARG package ARG entrypoint ARG server_version +ARG pgp_server_version ARG mongo_package ARG mongo_repo RUN rm -rf /etc/yum.repos.d/* -RUN printf "[${mongo_package}-${server_version}]\nname=MongoDB Repository\nbaseurl=${mongo_repo}/yum/redhat/\$releasever/${mongo_package}/${server_version}/\$basearch/\ngpgcheck=1\nenabled=1\ngpgkey=https://www.mongodb.org/static/pgp/server-${server_version}.asc\n" > /etc/yum.repos.d/${mongo_package}-${server_version}.repo +RUN printf "[${mongo_package}-${server_version}]\nname=MongoDB Repository\nbaseurl=${mongo_repo}/yum/redhat/\$releasever/${mongo_package}/${server_version}/\$basearch/\ngpgcheck=1\nenabled=1\ngpgkey=https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc\n" > /etc/yum.repos.d/${mongo_package}-${server_version}.repo RUN set -eux; \ yum install -y ${package} diff --git a/build/package/docker/repo/debian11.Dockerfile b/build/package/docker/repo/debian11.Dockerfile index 7150be0ecf..0c8ca84e93 100644 --- a/build/package/docker/repo/debian11.Dockerfile +++ b/build/package/docker/repo/debian11.Dockerfile @@ -3,6 +3,7 @@ FROM artifactory.corp.mongodb.com/dockerhub/debian:11-slim ARG package ARG entrypoint ARG server_version +ARG pgp_server_version ARG mongo_package ARG mongo_repo @@ -16,7 +17,7 @@ RUN set -eux; \ if ! command -v ps > /dev/null; then \ apt-get install -y --no-install-recommends procps; \ fi; \ - curl -L https://www.mongodb.org/static/pgp/server-${server_version}.asc | apt-key add -; \ + curl -L https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc | apt-key add -; \ echo "deb [ arch=amd64,arm64 ] ${mongo_repo}/apt/debian bullseye/${mongo_package}/${server_version} main" | tee /etc/apt/sources.list.d/${mongo_package}-${server_version}.list; \ apt-get update; \ apt-get install -y --no-install-recommends ${package}; \ diff --git a/build/package/docker/repo/debian12.Dockerfile b/build/package/docker/repo/debian12.Dockerfile index 01863098e8..a13bbbc29c 100644 --- a/build/package/docker/repo/debian12.Dockerfile +++ b/build/package/docker/repo/debian12.Dockerfile @@ -3,6 +3,7 @@ FROM artifactory.corp.mongodb.com/dockerhub/debian:12-slim ARG package ARG entrypoint ARG server_version +ARG pgp_server_version ARG mongo_package ARG mongo_repo @@ -16,7 +17,7 @@ RUN set -eux; \ if ! command -v ps > /dev/null; then \ apt-get install -y --no-install-recommends procps; \ fi; \ - curl -L https://www.mongodb.org/static/pgp/server-${server_version}.asc | apt-key add -; \ + curl -L https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc | apt-key add -; \ echo "deb [ arch=amd64,arm64 ] ${mongo_repo}/apt/debian bookworm/${mongo_package}/${server_version} main" | tee /etc/apt/sources.list.d/${mongo_package}-${server_version}.list; \ apt-get update; \ apt-get install -y --no-install-recommends ${package}; \ diff --git a/build/package/docker/repo/docker-build.sh b/build/package/docker/repo/docker-build.sh index 8bdb74fc36..213c87b4d4 100755 --- a/build/package/docker/repo/docker-build.sh +++ b/build/package/docker/repo/docker-build.sh @@ -18,6 +18,7 @@ set -Eeou pipefail docker build \ --build-arg server_version="${server_version-}" \ + --build-arg pgp_server_version="${pgp_server_version-}" \ --build-arg package="${package-}" \ --build-arg entrypoint="${entrypoint-}" \ --build-arg mongo_package="${mongo_package-}" \ diff --git a/build/package/docker/repo/rhel9.Dockerfile b/build/package/docker/repo/rhel9.Dockerfile index 28ac7409fa..34f64679db 100644 --- a/build/package/docker/repo/rhel9.Dockerfile +++ b/build/package/docker/repo/rhel9.Dockerfile @@ -3,12 +3,13 @@ FROM registry.access.redhat.com/ubi9/ubi ARG package ARG entrypoint ARG server_version +ARG pgp_server_version ARG mongo_package ARG mongo_repo RUN rm -rf /etc/yum.repos.d/* -RUN printf "[${mongo_package}-${server_version}]\nname=MongoDB Repository\nbaseurl=${mongo_repo}/yum/redhat/\$releasever/${mongo_package}/${server_version}/\$basearch/\ngpgcheck=1\nenabled=1\ngpgkey=https://www.mongodb.org/static/pgp/server-${server_version}.asc\n" > /etc/yum.repos.d/${mongo_package}-${server_version}.repo +RUN printf "[${mongo_package}-${server_version}]\nname=MongoDB Repository\nbaseurl=${mongo_repo}/yum/redhat/\$releasever/${mongo_package}/${server_version}/\$basearch/\ngpgcheck=1\nenabled=1\ngpgkey=https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc\n" > /etc/yum.repos.d/${mongo_package}-${server_version}.repo RUN set -eux; \ yum install -y ${package} diff --git a/build/package/docker/repo/suse15.Dockerfile b/build/package/docker/repo/suse15.Dockerfile index 9bcec910b9..f6b80f088b 100644 --- a/build/package/docker/repo/suse15.Dockerfile +++ b/build/package/docker/repo/suse15.Dockerfile @@ -3,6 +3,7 @@ FROM registry.suse.com/suse/sle15 ARG package ARG entrypoint ARG server_version +ARG pgp_server_version ARG mongo_package ARG mongo_repo diff --git a/build/package/docker/repo/ubuntu20.04.Dockerfile b/build/package/docker/repo/ubuntu20.04.Dockerfile index c6fbe2fdae..e7c08b4494 100644 --- a/build/package/docker/repo/ubuntu20.04.Dockerfile +++ b/build/package/docker/repo/ubuntu20.04.Dockerfile @@ -3,6 +3,7 @@ FROM artifactory.corp.mongodb.com/dockerhub/ubuntu:20.04 ARG package ARG entrypoint ARG server_version +ARG pgp_server_version ARG mongo_package ARG mongo_repo @@ -16,7 +17,7 @@ RUN set -eux; \ if ! command -v ps > /dev/null; then \ apt-get install -y --no-install-recommends procps; \ fi; \ - curl -L https://www.mongodb.org/static/pgp/server-${server_version}.asc | apt-key add -; \ + curl -L https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc | apt-key add -; \ echo "deb [ arch=amd64,arm64 ] ${mongo_repo}/apt/ubuntu focal/${mongo_package}/${server_version} multiverse" | tee /etc/apt/sources.list.d/${mongo_package}-${server_version}.list; \ apt-get update; \ apt-get install -y --no-install-recommends ${package}; \ diff --git a/build/package/docker/repo/ubuntu22.04.Dockerfile b/build/package/docker/repo/ubuntu22.04.Dockerfile index 51fc7e1b97..b11fc2c3af 100644 --- a/build/package/docker/repo/ubuntu22.04.Dockerfile +++ b/build/package/docker/repo/ubuntu22.04.Dockerfile @@ -3,6 +3,7 @@ FROM artifactory.corp.mongodb.com/dockerhub/ubuntu:22.04 ARG package ARG entrypoint ARG server_version +ARG pgp_server_version ARG mongo_package ARG mongo_repo @@ -16,7 +17,7 @@ RUN set -eux; \ if ! command -v ps > /dev/null; then \ apt-get install -y --no-install-recommends procps; \ fi; \ - curl -L https://www.mongodb.org/static/pgp/server-${server_version}.asc | apt-key add -; \ + curl -L https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc | apt-key add -; \ echo "deb [ arch=amd64,arm64 ] ${mongo_repo}/apt/ubuntu jammy/${mongo_package}/${server_version} multiverse" | tee /etc/apt/sources.list.d/${mongo_package}-${server_version}.list; \ apt-get update; \ apt-get install -y --no-install-recommends ${package}; \ diff --git a/build/package/docker/repo/ubuntu24.04.Dockerfile b/build/package/docker/repo/ubuntu24.04.Dockerfile index e6ed8b0206..9b36a947e9 100644 --- a/build/package/docker/repo/ubuntu24.04.Dockerfile +++ b/build/package/docker/repo/ubuntu24.04.Dockerfile @@ -3,6 +3,7 @@ FROM artifactory.corp.mongodb.com/dockerhub/ubuntu:24.04 ARG package ARG entrypoint ARG server_version +ARG pgp_server_version ARG mongo_package ARG mongo_repo @@ -16,7 +17,7 @@ RUN set -eux; \ if ! command -v ps > /dev/null; then \ apt-get install -y --no-install-recommends procps; \ fi; \ - curl -L https://www.mongodb.org/static/pgp/server-${server_version}.asc | apt-key add -; \ + curl -L https://www.mongodb.org/static/pgp/server-${pgp_server_version}.asc | apt-key add -; \ echo "deb [ arch=amd64,arm64 ] ${mongo_repo}/apt/ubuntu noble/${mongo_package}/${server_version} multiverse" | tee /etc/apt/sources.list.d/${mongo_package}-${server_version}.list; \ apt-get update; \ apt-get install -y --no-install-recommends ${package}; \ diff --git a/internal/cli/deployments/options/deployment_opts.go b/internal/cli/deployments/options/deployment_opts.go index 386b370598..c2aee6406c 100644 --- a/internal/cli/deployments/options/deployment_opts.go +++ b/internal/cli/deployments/options/deployment_opts.go @@ -21,10 +21,12 @@ import ( "io" "regexp" "sort" + "strconv" "strings" "time" "github.com/AlecAivazis/survey/v2" + "github.com/Masterminds/semver/v3" "github.com/briandowns/spinner" "github.com/mongodb/atlas-cli-core/config" "github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli" @@ -156,7 +158,8 @@ func getLocalDevImage() string { } func (opts *DeploymentOpts) MongodDockerImageName() string { - return getLocalDevImage() + ":" + opts.MdbVersion + v, _ := semver.NewVersion(opts.MdbVersion) + return getLocalDevImage() + ":" + strconv.FormatUint(v.Major(), 10) } func (opts *DeploymentOpts) Spin(funcs ...func() error) error { diff --git a/internal/cli/deployments/setup.go b/internal/cli/deployments/setup.go index e1ce4b5bfb..f130e1f785 100644 --- a/internal/cli/deployments/setup.go +++ b/internal/cli/deployments/setup.go @@ -52,8 +52,10 @@ import ( const ( internalMongodPort = 27017 - mdb7 = "7.0" - mdb8 = "8.0" + mdb70 = "7.0" + mdb80 = "8.0" + mdb8 = "8" + mdb7 = "7" defaultSettings = "default" customSettings = "custom" cancelSettings = "cancel" @@ -106,7 +108,8 @@ var ( options.VsCodeConnect: "MongoDB for VsCode", skipConnect: "Skip Connection", } - mdbVersions = []string{mdb7, mdb8} + mdbVersions = []string{mdb70, mdb80, mdb8, mdb7} + mdbMajorVersions = []string{mdb7, mdb8} ) type SetupOpts struct { @@ -347,8 +350,8 @@ func (opts *SetupOpts) promptDeploymentName() error { func (opts *SetupOpts) promptMdbVersion() error { p := &survey.Select{ - Message: "Major MongoDB Version", - Options: mdbVersions, + Message: "Major MongoDB Version (latest minor version will be used)", + Options: mdbMajorVersions, Default: opts.MdbVersion, Help: "Major MongoDB Version for the deployment. Atlas CLI applies the latest minor version available.", } @@ -517,7 +520,7 @@ func (opts *SetupOpts) setDefaultSettings() error { if err := templatewriter.Print(os.Stderr, ` [Default Settings] Deployment Name {{.DeploymentName}} -MongoDB Version {{.MdbVersion}} +MongoDB Major Version {{.MdbVersion}} (latest minor version) `, opts); err != nil { return err diff --git a/internal/cli/deployments/setup_test.go b/internal/cli/deployments/setup_test.go index 043884e5aa..b4a008adaa 100644 --- a/internal/cli/deployments/setup_test.go +++ b/internal/cli/deployments/setup_test.go @@ -23,6 +23,7 @@ import ( "github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli/deployments/test/fixture" "github.com/mongodb/mongodb-atlas-cli/atlascli/internal/container" "github.com/mongodb/mongodb-atlas-cli/atlascli/internal/log" + "github.com/stretchr/testify/assert" "go.uber.org/mock/gomock" ) @@ -65,7 +66,7 @@ func TestSetupOpts_LocalDev_HappyPathClean(t *testing.T) { force: true, } - const dockerImageName = "docker.io/mongodb/mongodb-atlas-local:8.0" + const dockerImageName = "docker.io/mongodb/mongodb-atlas-local:8" // Container engine is fine deploymentTest.MockContainerEngine.EXPECT().Ready().Return(nil).Times(1) @@ -130,7 +131,7 @@ func TestSetupOpts_LocalDev_HappyPathOfflinePull(t *testing.T) { force: true, } - const dockerImageName = "docker.io/mongodb/mongodb-atlas-local:8.0" + const dockerImageName = "docker.io/mongodb/mongodb-atlas-local:8" // Container engine is fine deploymentTest.MockContainerEngine.EXPECT().Ready().Return(nil).Times(1) @@ -198,7 +199,7 @@ func TestSetupOpts_LocalDev_UnhappyPathOfflinePull(t *testing.T) { force: true, } - const dockerImageName = "docker.io/mongodb/mongodb-atlas-local:8.0" + const dockerImageName = "docker.io/mongodb/mongodb-atlas-local:8" // Container engine is fine deploymentTest.MockContainerEngine.EXPECT().Ready().Return(nil).Times(1) @@ -274,7 +275,7 @@ func TestSetupOpts_LocalDev_RemoveUnhealthyDeployment(t *testing.T) { force: true, } - const dockerImageName = "docker.io/mongodb/mongodb-atlas-local:8.0" + const dockerImageName = "docker.io/mongodb/mongodb-atlas-local:8" // Container engine is fine deploymentTest.MockContainerEngine.EXPECT().Ready().Return(nil).Times(1) @@ -310,3 +311,46 @@ func TestSetupOpts_LocalDev_RemoveUnhealthyDeployment(t *testing.T) { t.Fatal("Run() unexpected success, should fail") } } + +func TestValidateFlags_mdbVersions(t *testing.T) { + testCases := []struct { + name string + version string + expectedError error + }{ + {name: "mdb70", version: mdb70, expectedError: nil}, + {name: "mdb80", version: mdb80, expectedError: nil}, + {name: "mdb8", version: mdb8, expectedError: nil}, + {name: "mdb7", version: mdb7, expectedError: nil}, + {name: "mdb82", version: "8.2", expectedError: errInvalidMongoDBVersion}, + {name: "invalid", version: "9.0", expectedError: errInvalidMongoDBVersion}, + } + for _, testCase := range testCases { + opts := &SetupOpts{} + opts.MdbVersion = testCase.version + err := opts.validateFlags() + if testCase.expectedError != nil { + assert.ErrorIs(t, err, testCase.expectedError) + } else { + assert.NoError(t, err) + } + } +} + +func TestSetupOpts_MongodDockerImageName(t *testing.T) { + testCases := []struct { + name string + version string + expectedImage string + }{ + {name: "mdb70", version: mdb70, expectedImage: "docker.io/mongodb/mongodb-atlas-local:7"}, + {name: "mdb80", version: mdb80, expectedImage: "docker.io/mongodb/mongodb-atlas-local:8"}, + {name: "mdb8", version: mdb8, expectedImage: "docker.io/mongodb/mongodb-atlas-local:8"}, + {name: "mdb7", version: mdb7, expectedImage: "docker.io/mongodb/mongodb-atlas-local:7"}, + } + for _, testCase := range testCases { + opts := &SetupOpts{} + opts.MdbVersion = testCase.version + assert.Equal(t, testCase.expectedImage, opts.MongodDockerImageName()) + } +} diff --git a/test/e2e/atlas/deployments/local/auth/deprecated/deploymentslocalauthindexdeprecated/deployments_local_auth_index_deprecated_test.go b/test/e2e/atlas/deployments/local/auth/deprecated/deploymentslocalauthindexdeprecated/deployments_local_auth_index_deprecated_test.go index 50a8a04d59..17f4ee4ea9 100644 --- a/test/e2e/atlas/deployments/local/auth/deprecated/deploymentslocalauthindexdeprecated/deployments_local_auth_index_deprecated_test.go +++ b/test/e2e/atlas/deployments/local/auth/deprecated/deploymentslocalauthindexdeprecated/deployments_local_auth_index_deprecated_test.go @@ -145,7 +145,7 @@ func TestDeploymentsLocalWithAuthIndexDeprecated(t *testing.T) { cols := strings.Fields(outputLines[1]) assert.Equal(t, deploymentName, cols[0]) assert.Equal(t, "LOCAL", cols[1]) - assert.Contains(t, cols[2], "8.0.") + assert.Contains(t, cols[2], "8.2.") assert.Equal(t, "IDLE", cols[3]) }) diff --git a/test/e2e/atlas/deployments/local/auth/new/deploymentslocalauth/deployments_local_auth_test.go b/test/e2e/atlas/deployments/local/auth/new/deploymentslocalauth/deployments_local_auth_test.go index e5d861fbf8..d3c9daedc0 100644 --- a/test/e2e/atlas/deployments/local/auth/new/deploymentslocalauth/deployments_local_auth_test.go +++ b/test/e2e/atlas/deployments/local/auth/new/deploymentslocalauth/deployments_local_auth_test.go @@ -145,7 +145,7 @@ func TestDeploymentsLocalWithAuth(t *testing.T) { cols := strings.Fields(outputLines[1]) assert.Equal(t, deploymentName, cols[0]) assert.Equal(t, "LOCAL", cols[1]) - assert.Contains(t, cols[2], "8.0.") + assert.Contains(t, cols[2], "8.2.") assert.Equal(t, "IDLE", cols[3]) }) diff --git a/test/e2e/atlas/deployments/local/noauth/deploymentslocalnoauth/deployments_local_noauth_test.go b/test/e2e/atlas/deployments/local/noauth/deploymentslocalnoauth/deployments_local_noauth_test.go index af431c68e0..5d6bd37af5 100644 --- a/test/e2e/atlas/deployments/local/noauth/deploymentslocalnoauth/deployments_local_noauth_test.go +++ b/test/e2e/atlas/deployments/local/noauth/deploymentslocalnoauth/deployments_local_noauth_test.go @@ -138,7 +138,7 @@ func TestDeploymentsLocal(t *testing.T) { cols := strings.Fields(outputLines[1]) assert.Equal(t, deploymentName, cols[0]) assert.Equal(t, "LOCAL", cols[1]) - assert.Contains(t, cols[2], "8.0.") + assert.Contains(t, cols[2], "8.2.") assert.Equal(t, "IDLE", cols[3]) }) diff --git a/tools/cmd/genevergreen/generate/generate.go b/tools/cmd/genevergreen/generate/generate.go index 24604a6302..2838aac57f 100644 --- a/tools/cmd/genevergreen/generate/generate.go +++ b/tools/cmd/genevergreen/generate/generate.go @@ -31,9 +31,11 @@ var ( "6.0", "7.0", "8.0", + "8.2", } unsupportedNewOsByVersion = map[string][]string{ + "8.2": {"debian11"}, "8.0": {"debian11"}, "7.0": {"ubuntu2404"}, "6.0": {"ubuntu2404"}, @@ -106,12 +108,13 @@ func RepoTasks(c *shrub.Configuration) { Dependency(newDependency(os, serverVersion, repo)). Function("clone"). FunctionWithVars("docker build repo", map[string]string{ - "server_version": serverVersion, - "package": pkg, - "entrypoint": entrypoint, - "image": os, - "mongo_package": "mongodb-" + repo, - "mongo_repo": mongoRepo, + "server_version": serverVersion, + "pgp_server_version": getGpgServerVersion(serverVersion), + "package": pkg, + "entrypoint": entrypoint, + "image": os, + "mongo_package": "mongodb-" + repo, + "mongo_repo": mongoRepo, }) c.Tasks = append(c.Tasks, t) v.AddTasks(t.Name) @@ -167,8 +170,9 @@ func PostPkgMetaTasks(c *shrub.Configuration) { Variant: "goreleaser_atlascli_snapshot", }).Function("clone"). FunctionWithVars("docker build meta", map[string]string{ - "image": postPkgImg[os], - "server_version": sv, + "image": postPkgImg[os], + "server_version": sv, + "pgp_server_version": getGpgServerVersion(sv), }) c.Tasks = append(c.Tasks, t) @@ -179,6 +183,11 @@ func PostPkgMetaTasks(c *shrub.Configuration) { c.Variants = append(c.Variants, v) } +func getGpgServerVersion(serverVersion string) string { + // minor version uses the same major version gpg key e.g. 8.2 uses 8.0 gpg key + return strings.Split(serverVersion, ".")[0] + ".0" +} + const buildNamePrefix = "generated_release_atlascli_publish_" func PublishStableTasks(c *shrub.Configuration) { diff --git a/tools/cmd/genevergreen/generate/generate_test.go b/tools/cmd/genevergreen/generate/generate_test.go index 90fd1d1593..7269e75ce2 100644 --- a/tools/cmd/genevergreen/generate/generate_test.go +++ b/tools/cmd/genevergreen/generate/generate_test.go @@ -61,6 +61,8 @@ func TestPublishStableTasks(t *testing.T) { commandFound = true distro := c.Vars["distro"] serverVersion := c.Vars["server_version"] + pgpServerVersion := c.Vars["pgp_server_version"] + assert.NotEmpty(t, pgpServerVersion) // ensure unsupportedNewOs is not used assert.NotContains(t, unsupportedNewOsByVersion[serverVersion], distro) assert.NotEmpty(t, distro) @@ -68,8 +70,8 @@ func TestPublishStableTasks(t *testing.T) { } assert.True(t, commandFound, "expected to find a push command") - assert.Len(t, c.Variants, 3) - assert.Len(t, c.Tasks, 90) + assert.Len(t, c.Variants, 4) + assert.Len(t, c.Tasks, 120) } func TestPostPkgMetaTasks(t *testing.T) { @@ -83,6 +85,8 @@ func TestPostPkgMetaTasks(t *testing.T) { } image := c.Vars["image"] serverVersion := c.Vars["server_version"] + pgpServerVersion := c.Vars["pgp_server_version"] + assert.NotEmpty(t, pgpServerVersion) // find the key from the image for key, value := range postPkgImg { if value == image { @@ -92,7 +96,7 @@ func TestPostPkgMetaTasks(t *testing.T) { } } assert.Len(t, c.Variants, 1) - assert.Len(t, c.Tasks, 18) + assert.Len(t, c.Tasks, 24) } func TestRepoTasks(t *testing.T) { @@ -106,12 +110,21 @@ func TestRepoTasks(t *testing.T) { } image := c.Vars["image"] serverVersion := c.Vars["server_version"] + pgpServerVersion := c.Vars["pgp_server_version"] + assert.NotEmpty(t, pgpServerVersion) // ensure unsupportedNewOs is not used assert.NotContains(t, unsupportedNewOsByVersion[serverVersion], image) assert.NotEmpty(t, image) } } - assert.Len(t, c.Variants, 3) - assert.Len(t, c.Tasks, 36) + assert.Len(t, c.Variants, 4) + assert.Len(t, c.Tasks, 48) +} + +func TestGetGpgServerVersion(t *testing.T) { + assert.Equal(t, "8.0", getGpgServerVersion("8.2")) + assert.Equal(t, "8.0", getGpgServerVersion("8.0")) + assert.Equal(t, "7.0", getGpgServerVersion("7.0")) + assert.Equal(t, "6.0", getGpgServerVersion("6.0")) } diff --git a/tools/cmd/genevergreen/generate/publish.go b/tools/cmd/genevergreen/generate/publish.go index 9ad4dd0891..520cb95471 100644 --- a/tools/cmd/genevergreen/generate/publish.go +++ b/tools/cmd/genevergreen/generate/publish.go @@ -86,12 +86,13 @@ func newPublishTask(taskName, extension, edition, distro, taskServerVersion, not Function("clone"). Function("install curator"). FunctionWithVars("push", map[string]string{ - "distro": distro, - "ext": extension, - "server_version": taskServerVersion, - "notary_key_name": notaryKey, - "arch": arch, - "edition": edition, + "distro": distro, + "ext": extension, + "server_version": taskServerVersion, + "pgp_server_version": getGpgServerVersion(taskServerVersion), + "notary_key_name": notaryKey, + "arch": arch, + "edition": edition, }) return t }