diff --git a/.evergreen/config_generator/components/earthly.py b/.evergreen/config_generator/components/earthly.py index 99d890fccf7..0ebdb305a9f 100644 --- a/.evergreen/config_generator/components/earthly.py +++ b/.evergreen/config_generator/components/earthly.py @@ -21,26 +21,27 @@ T = TypeVar('T') -_ENV_PARAM_NAME = 'MONGOC_EARTHLY_ENV' +_ENV_PARAM_NAME = 'MONGOC_EARTHLY_FROM' +_ECR_HOST = '901841024863.dkr.ecr.us-east-1.amazonaws.com' _CC_PARAM_NAME = 'MONGOC_EARTHLY_C_COMPILER' 'The name of the EVG expansion for the Earthly c_compiler argument' - -EnvKey = Literal[ - 'u20', - 'u22', - 'almalinux8', - 'almalinux9', - 'almalinux10', - 'alpine3.19', - 'alpine3.20', - 'alpine3.21', - 'alpine3.22', +EnvImage = Literal[ + 'ubuntu:20.04', + 'ubuntu:22.04', + 'ubuntu:24.04', + 'almalinux:8', + 'almalinux:9', + 'almalinux:10', + 'alpine:3.19', + 'alpine:3.20', + 'alpine:3.21', + 'alpine:3.22', 'archlinux', - 'centos9', - 'centos10', + 'quay.io/centos/centos:stream9', + 'quay.io/centos/centos:stream10', ] -"Identifiers for environments. These correspond to special 'env.*' targets in the Earthfile." +'Base environment images to be built.' CompilerName = Literal['gcc', 'clang'] 'The name of the compiler program that is used for the build. Passed via --c_compiler to Earthly.' @@ -51,32 +52,42 @@ "Options for the TLS backend configuration parameter (AKA 'ENABLE_SSL')" CxxVersion = Literal['master', 'r4.1.0', 'none'] 'C++ driver refs that are under CI test' +SnappyOption = Literal['false', 'true'] # A separator character, since we cannot use whitespace _SEPARATOR = '\N{NO-BREAK SPACE}\N{BULLET}\N{NO-BREAK SPACE}' -def os_split(env: EnvKey) -> tuple[str, None | str]: +def os_split(env: EnvImage) -> tuple[str, None | str]: """Convert the environment key into a pretty name+version pair""" match env: # Match 'alpine3.18' 'alpine53.123' etc. - case alp if mat := re.match(r'alpine(\d+\.\d+)', alp): + case alp if mat := re.match(r'alpine:(\d+\.\d+)', alp): return ('Alpine', mat[1]) case 'archlinux': return 'ArchLinux', None # Match 'u22', 'u20', 'u71' etc. - case ubu if mat := re.match(r'u(\d\d)', ubu): - return 'Ubuntu', f'{mat[1]}.04' + case ubu if mat := re.match(r'ubuntu:(\d\d.*)', ubu): + return 'Ubuntu', f'{mat[1]}' # Match 'centos9', 'centos10', etc. - case cent if mat := re.match(r'centos(\d+)', cent): - return 'CentOS', f'{mat[1]}' + case cent if mat := re.match(r'.*centos:(stream)?(\d+.*)', cent): + return 'CentOS', f'{mat[2]}' # Match 'almalinux8', 'almalinux10', etc. - case alm if mat := re.match(r'almalinux(\d+)', alm): + case alm if mat := re.match(r'almalinux:(\d+.*)', alm): return 'AlmaLinux', f'{mat[1]}' case _: raise ValueError(f'Failed to split OS env key {env=} into a name+version pair (unrecognized)') +def from_container_image(img: EnvImage) -> str: + """ + Modify an unqualified FROM container identifier to route to our ECR host + """ + if '/' in img or img.startswith('+'): + return img + return f'{_ECR_HOST}/dockerhub/library/{img}' + + class EarthlyVariant(NamedTuple): """ Define a "variant" that runs under a set of Earthly parameters. These are @@ -84,14 +95,14 @@ class EarthlyVariant(NamedTuple): expansion parameters. """ - env: EnvKey + from_: EnvImage c_compiler: CompilerName @property def display_name(self) -> str: """The pretty name for this variant""" base: str - match os_split(self.env): + match os_split(self.from_): case name, None: base = name case name, version: @@ -110,7 +121,7 @@ def task_selector_tag(self) -> str: The task tag that is used to select the tasks that want to run on this variant. """ - return f'{self.env}-{self.c_compiler}' + return f'{self.from_}-{self.c_compiler}' @property def expansions(self) -> Mapping[str, str]: @@ -120,7 +131,7 @@ def expansions(self) -> Mapping[str, str]: """ return { _CC_PARAM_NAME: self.c_compiler, - _ENV_PARAM_NAME: self.env, + _ENV_PARAM_NAME: from_container_image(self.from_), } def as_evg_variant(self) -> BuildVariant: @@ -145,6 +156,7 @@ class Configuration(NamedTuple): sasl: SASLOption tls: TLSOption test_mongocxx_ref: CxxVersion + snappy: SnappyOption @property def suffix(self) -> str: @@ -169,7 +181,7 @@ class DockerLoginAmazonECR(Function): ], args=[ '-c', - 'aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 901841024863.dkr.ecr.us-east-1.amazonaws.com', + f'aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin {_ECR_HOST}', ], ), ] @@ -206,11 +218,11 @@ def earthly_exec( './tools/earthly.sh', args=[ # Use Amazon ECR as pull-through cache for DockerHub to avoid rate limits. - '--buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3', + f'--buildkit-image={_ECR_HOST}/dockerhub/earthly/buildkitd:v0.8.3', *(f'--secret={k}' for k in (secrets or ())), f'+{target}', # Use Amazon ECR as pull-through cache for DockerHub to avoid rate limits. - '--default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub', + f'--default_search_registry={_ECR_HOST}/dockerhub/library', *(f'--{arg}={val}' for arg, val in (args or {}).items()), ], command_type=EvgCommandType(kind), @@ -243,20 +255,26 @@ def earthly_task( earthly_args = config._asdict() earthly_args |= { # Add arguments that come from parameter expansions defined in the build variant - 'env': f'${{{_ENV_PARAM_NAME}}}', + 'from': f'${{{_ENV_PARAM_NAME}}}', 'c_compiler': f'${{{_CC_PARAM_NAME}}}', + 'cxx_compiler': f'${{{_CC_PARAM_NAME}}}', } return EvgTask( name=name, commands=[ DockerLoginAmazonECR.call(), - # First, just build the "env-warmup" which will prepare the build environment. + # First, just build the "build-environment" which will prepare the build environment. # This won't generate any output, but allows EVG to track it as a separate build step # for timing and logging purposes. The subequent build step will cache-hit the # warmed-up build environments. earthly_exec( kind='setup', - target='env-warmup', + target='build-environment', + args=earthly_args, + ), + earthly_exec( + kind='setup', + target='configure', args=earthly_args, ), # Now execute the main tasks: @@ -274,7 +292,7 @@ def earthly_task( CONTAINER_RUN_DISTROS = [ 'amazon2', - "debian11-latest-large", + 'debian11-latest-large', 'debian12-latest-large', 'ubuntu2204-large', 'ubuntu2404-large', diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index e368108ddc3..9da1add68d5 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -1122,14 +1122,14 @@ tasks: - name: check-headers commands: - func: check-headers - - name: "check:sasl=Cyrus\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=master" + - name: "check:sasl=Cyrus\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=master\_\u2022\_snappy=false" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1141,13 +1141,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --sasl=Cyrus - --tls=OpenSSL - --test_mongocxx_ref=master - - --env=${MONGOC_EARTHLY_ENV} + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=OpenSSL + - --test_mongocxx_ref=master + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1158,21 +1178,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --targets=test-example test-cxx-driver - --sasl=Cyrus - --tls=OpenSSL - --test_mongocxx_ref=master - - --env=${MONGOC_EARTHLY_ENV} + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=Cyrus\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=none" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=master\_\u2022\_snappy=true" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1184,13 +1206,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --sasl=Cyrus - --tls=OpenSSL - - --test_mongocxx_ref=none - - --env=${MONGOC_EARTHLY_ENV} + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=OpenSSL + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1201,21 +1243,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --targets=test-example + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver - --sasl=Cyrus - --tls=OpenSSL - - --test_mongocxx_ref=none - - --env=${MONGOC_EARTHLY_ENV} + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=Cyrus\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=r4.1.0" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=none\_\u2022\_snappy=false" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1227,13 +1271,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --sasl=Cyrus - --tls=OpenSSL - - --test_mongocxx_ref=r4.1.0 - - --env=${MONGOC_EARTHLY_ENV} + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=OpenSSL + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1244,21 +1308,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --targets=test-example test-cxx-driver + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example - --sasl=Cyrus - --tls=OpenSSL - - --test_mongocxx_ref=r4.1.0 - - --env=${MONGOC_EARTHLY_ENV} + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=Cyrus\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=master" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=none\_\u2022\_snappy=true" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1270,13 +1336,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --sasl=Cyrus - - --tls=off - - --test_mongocxx_ref=master - - --env=${MONGOC_EARTHLY_ENV} + - --tls=OpenSSL + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=OpenSSL + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1287,21 +1373,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --targets=test-example test-cxx-driver + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example - --sasl=Cyrus - - --tls=off - - --test_mongocxx_ref=master - - --env=${MONGOC_EARTHLY_ENV} + - --tls=OpenSSL + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=Cyrus\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=none" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=r4.1.0\_\u2022\_snappy=false" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1313,13 +1401,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --sasl=Cyrus - - --tls=off - - --test_mongocxx_ref=none - - --env=${MONGOC_EARTHLY_ENV} + - --tls=OpenSSL + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=OpenSSL + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1330,21 +1438,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --targets=test-example + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver - --sasl=Cyrus - - --tls=off - - --test_mongocxx_ref=none - - --env=${MONGOC_EARTHLY_ENV} + - --tls=OpenSSL + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=Cyrus\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=r4.1.0" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=r4.1.0\_\u2022\_snappy=true" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1356,13 +1466,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --sasl=Cyrus - - --tls=off + - --tls=OpenSSL + - --test_mongocxx_ref=r4.1.0 + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=OpenSSL - --test_mongocxx_ref=r4.1.0 - - --env=${MONGOC_EARTHLY_ENV} + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1373,21 +1503,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --targets=test-example test-cxx-driver - --sasl=Cyrus - - --tls=off + - --tls=OpenSSL - --test_mongocxx_ref=r4.1.0 - - --env=${MONGOC_EARTHLY_ENV} + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=off\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=master" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=master\_\u2022\_snappy=false" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1399,13 +1531,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --sasl=off - - --tls=OpenSSL + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=master + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=off - --test_mongocxx_ref=master - - --env=${MONGOC_EARTHLY_ENV} + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1416,21 +1568,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --targets=test-example test-cxx-driver - - --sasl=off - - --tls=OpenSSL + - --sasl=Cyrus + - --tls=off - --test_mongocxx_ref=master - - --env=${MONGOC_EARTHLY_ENV} + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=off\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=none" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=master\_\u2022\_snappy=true" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1442,13 +1596,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --sasl=off - - --tls=OpenSSL - - --test_mongocxx_ref=none - - --env=${MONGOC_EARTHLY_ENV} + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1459,21 +1633,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --targets=test-example - - --sasl=off - - --tls=OpenSSL - - --test_mongocxx_ref=none - - --env=${MONGOC_EARTHLY_ENV} + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=off\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=r4.1.0" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=none\_\u2022\_snappy=false" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1485,13 +1661,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --sasl=off - - --tls=OpenSSL - - --test_mongocxx_ref=r4.1.0 - - --env=${MONGOC_EARTHLY_ENV} + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1502,21 +1698,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --targets=test-example test-cxx-driver - - --sasl=off - - --tls=OpenSSL - - --test_mongocxx_ref=r4.1.0 - - --env=${MONGOC_EARTHLY_ENV} + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=off\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=master" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=none\_\u2022\_snappy=true" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1528,13 +1726,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --sasl=off + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus - --tls=off - - --test_mongocxx_ref=master - - --env=${MONGOC_EARTHLY_ENV} + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1545,21 +1763,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --targets=test-example test-cxx-driver - - --sasl=off + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example + - --sasl=Cyrus - --tls=off - - --test_mongocxx_ref=master - - --env=${MONGOC_EARTHLY_ENV} + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=off\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=none" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=r4.1.0\_\u2022\_snappy=false" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1571,13 +1791,33 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --sasl=off + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus - --tls=off - - --test_mongocxx_ref=none - - --env=${MONGOC_EARTHLY_ENV} + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1588,21 +1828,23 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub - - --targets=test-example - - --sasl=off + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver + - --sasl=Cyrus - --tls=off - - --test_mongocxx_ref=none - - --env=${MONGOC_EARTHLY_ENV} + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} - - name: "check:sasl=off\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=r4.1.0" + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=Cyrus\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=r4.1.0\_\u2022\_snappy=true" run_on: - amazon2 - debian11-latest-large - debian12-latest-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1614,13 +1856,813 @@ tasks: - DOCKER_CONFIG args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - - +env-warmup - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=r4.1.0 + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=r4.1.0 + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver + - --sasl=Cyrus + - --tls=off + - --test_mongocxx_ref=r4.1.0 + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=master\_\u2022\_snappy=false" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=master + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=master + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=master + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=master\_\u2022\_snappy=true" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=none\_\u2022\_snappy=false" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=none\_\u2022\_snappy=true" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=r4.1.0\_\u2022\_snappy=false" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=OpenSSL\_\u2022\_test_mongocxx_ref=r4.1.0\_\u2022\_snappy=true" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=r4.1.0 + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=r4.1.0 + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver + - --sasl=off + - --tls=OpenSSL + - --test_mongocxx_ref=r4.1.0 + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=master\_\u2022\_snappy=false" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=master + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=master + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver + - --sasl=off + - --tls=off + - --test_mongocxx_ref=master + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=master\_\u2022\_snappy=true" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver + - --sasl=off + - --tls=off + - --test_mongocxx_ref=master + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=none\_\u2022\_snappy=false" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example + - --sasl=off + - --tls=off + - --test_mongocxx_ref=none + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=none\_\u2022\_snappy=true" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example + - --sasl=off + - --tls=off + - --test_mongocxx_ref=none + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=r4.1.0\_\u2022\_snappy=false" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: test + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +run + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --targets=test-example test-cxx-driver + - --sasl=off + - --tls=off + - --test_mongocxx_ref=r4.1.0 + - --snappy=false + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - name: "check:sasl=off\_\u2022\_tls=off\_\u2022\_test_mongocxx_ref=r4.1.0\_\u2022\_snappy=true" + run_on: + - amazon2 + - debian11-latest-large + - debian12-latest-large + - ubuntu2204-large + - ubuntu2404-large + tags: [earthly, pr-merge-gate, "almalinux:10-clang", "almalinux:10-gcc", "almalinux:8-clang", "almalinux:8-gcc", "almalinux:9-clang", "almalinux:9-gcc", "alpine:3.19-clang", "alpine:3.19-gcc", "alpine:3.20-clang", "alpine:3.20-gcc", "alpine:3.21-clang", "alpine:3.21-gcc", "alpine:3.22-clang", "alpine:3.22-gcc", archlinux-clang, archlinux-gcc, "quay.io/centos/centos:stream10-clang", "quay.io/centos/centos:stream10-gcc", "quay.io/centos/centos:stream9-clang", "quay.io/centos/centos:stream9-gcc", "ubuntu:20.04-clang", "ubuntu:20.04-gcc", "ubuntu:22.04-clang", "ubuntu:22.04-gcc", "ubuntu:24.04-clang", "ubuntu:24.04-gcc"] + commands: + - func: docker-login-amazon-ecr + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +build-environment + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library + - --sasl=off + - --tls=off + - --test_mongocxx_ref=r4.1.0 + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} + - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} + - command: subprocess.exec + type: setup + params: + binary: ./tools/earthly.sh + working_dir: mongoc + include_expansions_in_env: + - DOCKER_CONFIG + args: + - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 + - +configure + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --sasl=off - --tls=off - --test_mongocxx_ref=r4.1.0 - - --env=${MONGOC_EARTHLY_ENV} + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - command: subprocess.exec type: test params: @@ -1631,13 +2673,15 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +run - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library - --targets=test-example test-cxx-driver - --sasl=off - --tls=off - --test_mongocxx_ref=r4.1.0 - - --env=${MONGOC_EARTHLY_ENV} + - --snappy=true + - --from=${MONGOC_EARTHLY_FROM} - --c_compiler=${MONGOC_EARTHLY_C_COMPILER} + - --cxx_compiler=${MONGOC_EARTHLY_C_COMPILER} - name: clang-format tags: [clang-format] commands: @@ -7653,4 +8697,4 @@ tasks: args: - --buildkit-image=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/earthly/buildkitd:v0.8.3 - +verify-headers - - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub + - --default_search_registry=901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index cc35dc56648..877e0f90c8d 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -1,144 +1,116 @@ buildvariants: - - name: almalinux10-clang + - name: almalinux:10-clang display_name: AlmaLinux 10 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: almalinux10 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/almalinux:10 tasks: - - name: .almalinux10-clang - - name: almalinux10-gcc + - name: .almalinux:10-clang + - name: almalinux:10-gcc display_name: AlmaLinux 10 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: almalinux10 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/almalinux:10 tasks: - - name: .almalinux10-gcc - - name: almalinux8-clang + - name: .almalinux:10-gcc + - name: almalinux:8-clang display_name: AlmaLinux 8 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: almalinux8 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/almalinux:8 tasks: - - name: .almalinux8-clang - - name: almalinux8-gcc + - name: .almalinux:8-clang + - name: almalinux:8-gcc display_name: AlmaLinux 8 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: almalinux8 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/almalinux:8 tasks: - - name: .almalinux8-gcc - - name: almalinux9-clang + - name: .almalinux:8-gcc + - name: almalinux:9-clang display_name: AlmaLinux 9 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: almalinux9 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/almalinux:9 tasks: - - name: .almalinux9-clang - - name: almalinux9-gcc + - name: .almalinux:9-clang + - name: almalinux:9-gcc display_name: AlmaLinux 9 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: almalinux9 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/almalinux:9 tasks: - - name: .almalinux9-gcc - - name: alpine3.19-clang + - name: .almalinux:9-gcc + - name: alpine:3.19-clang display_name: Alpine 3.19 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.19 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/alpine:3.19 tasks: - - name: .alpine3.19-clang - - name: alpine3.19-gcc + - name: .alpine:3.19-clang + - name: alpine:3.19-gcc display_name: Alpine 3.19 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.19 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/alpine:3.19 tasks: - - name: .alpine3.19-gcc - - name: alpine3.20-clang + - name: .alpine:3.19-gcc + - name: alpine:3.20-clang display_name: Alpine 3.20 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.20 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/alpine:3.20 tasks: - - name: .alpine3.20-clang - - name: alpine3.20-gcc + - name: .alpine:3.20-clang + - name: alpine:3.20-gcc display_name: Alpine 3.20 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.20 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/alpine:3.20 tasks: - - name: .alpine3.20-gcc - - name: alpine3.21-clang + - name: .alpine:3.20-gcc + - name: alpine:3.21-clang display_name: Alpine 3.21 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.21 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/alpine:3.21 tasks: - - name: .alpine3.21-clang - - name: alpine3.21-gcc + - name: .alpine:3.21-clang + - name: alpine:3.21-gcc display_name: Alpine 3.21 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.21 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/alpine:3.21 tasks: - - name: .alpine3.21-gcc - - name: alpine3.22-clang + - name: .alpine:3.21-gcc + - name: alpine:3.22-clang display_name: Alpine 3.22 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.22 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/alpine:3.22 tasks: - - name: .alpine3.22-clang - - name: alpine3.22-gcc + - name: .alpine:3.22-clang + - name: alpine:3.22-gcc display_name: Alpine 3.22 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.22 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/alpine:3.22 tasks: - - name: .alpine3.22-gcc + - name: .alpine:3.22-gcc - name: archlinux-clang display_name: ArchLinux (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: archlinux + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/archlinux tasks: - name: .archlinux-clang - name: archlinux-gcc display_name: ArchLinux (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: archlinux + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/archlinux tasks: - name: .archlinux-gcc - - name: centos10-clang - display_name: CentOS 10 (LLVM/Clang) - expansions: - MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: centos10 - tasks: - - name: .centos10-clang - - name: centos10-gcc - display_name: CentOS 10 (GCC) - expansions: - MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: centos10 - tasks: - - name: .centos10-gcc - - name: centos9-clang - display_name: CentOS 9 (LLVM/Clang) - expansions: - MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: centos9 - tasks: - - name: .centos9-clang - - name: centos9-gcc - display_name: CentOS 9 (GCC) - expansions: - MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: centos9 - tasks: - - name: .centos9-gcc - name: clang-format display_name: clang-format run_on: @@ -263,6 +235,34 @@ buildvariants: display_name: OpenSSL Compatibility Matrix tasks: - name: .openssl-compat + - name: quay.io/centos/centos:stream10-clang + display_name: CentOS 10 (LLVM/Clang) + expansions: + MONGOC_EARTHLY_C_COMPILER: clang + MONGOC_EARTHLY_FROM: quay.io/centos/centos:stream10 + tasks: + - name: .quay.io/centos/centos:stream10-clang + - name: quay.io/centos/centos:stream10-gcc + display_name: CentOS 10 (GCC) + expansions: + MONGOC_EARTHLY_C_COMPILER: gcc + MONGOC_EARTHLY_FROM: quay.io/centos/centos:stream10 + tasks: + - name: .quay.io/centos/centos:stream10-gcc + - name: quay.io/centos/centos:stream9-clang + display_name: CentOS 9 (LLVM/Clang) + expansions: + MONGOC_EARTHLY_C_COMPILER: clang + MONGOC_EARTHLY_FROM: quay.io/centos/centos:stream9 + tasks: + - name: .quay.io/centos/centos:stream9-clang + - name: quay.io/centos/centos:stream9-gcc + display_name: CentOS 9 (GCC) + expansions: + MONGOC_EARTHLY_C_COMPILER: gcc + MONGOC_EARTHLY_FROM: quay.io/centos/centos:stream9 + tasks: + - name: .quay.io/centos/centos:stream9-gcc - name: sanitizers-matrix-asan display_name: sanitizers-matrix-asan expansions: @@ -368,31 +368,45 @@ buildvariants: display_name: std-matrix tasks: - name: .std-matrix - - name: u20-clang + - name: ubuntu:20.04-clang display_name: Ubuntu 20.04 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: u20 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04 tasks: - - name: .u20-clang - - name: u20-gcc + - name: .ubuntu:20.04-clang + - name: ubuntu:20.04-gcc display_name: Ubuntu 20.04 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: u20 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04 tasks: - - name: .u20-gcc - - name: u22-clang + - name: .ubuntu:20.04-gcc + - name: ubuntu:22.04-clang display_name: Ubuntu 22.04 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: u22 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:22.04 tasks: - - name: .u22-clang - - name: u22-gcc + - name: .ubuntu:22.04-clang + - name: ubuntu:22.04-gcc display_name: Ubuntu 22.04 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: u22 + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:22.04 + tasks: + - name: .ubuntu:22.04-gcc + - name: ubuntu:24.04-clang + display_name: Ubuntu 24.04 (LLVM/Clang) + expansions: + MONGOC_EARTHLY_C_COMPILER: clang + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:24.04 + tasks: + - name: .ubuntu:24.04-clang + - name: ubuntu:24.04-gcc + display_name: Ubuntu 24.04 (GCC) + expansions: + MONGOC_EARTHLY_C_COMPILER: gcc + MONGOC_EARTHLY_FROM: 901841024863.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:24.04 tasks: - - name: .u22-gcc + - name: .ubuntu:24.04-gcc diff --git a/Earthfile b/Earthfile index 6ebb576e250..6a16145ef21 100644 --- a/Earthfile +++ b/Earthfile @@ -1,84 +1,85 @@ VERSION --arg-scope-and-set --pass-args --use-function-keyword 0.7 -LOCALLY + +# For target names, descriptions, and build parameters, run the "doc" Earthly subcommand. +# Example use: +build --from=ubuntu:22.04 --sasl=off --tls=OpenSSL --c_compiler=gcc # Allow setting the "default" container image registry to use for image short names (e.g. to Amazon ECR). ARG --global default_search_registry=docker.io -IMPORT ./tools/ AS tools +# Set a base container image at the root so that this project can be imported +FROM $default_search_registry/alpine:3.20 -# For target names, descriptions, and build parameters, run the "doc" Earthly subcommand. -# Example use: +build --env=u22 --sasl=off --tls=OpenSSL --c_compiler=gcc +# Not intended to be overridden, but provide some defaults used across targets +ARG --global __source_dir = "/opt/mcd/source" +ARG --global __build_dir = "/opt/mcd/build" -# COPY_SOURCE : -# Copy source files required for the build into the specified "--into" directory -COPY_SOURCE: - FUNCTION - ARG --required into - COPY --dir \ - build/ \ - CMakeLists.txt \ - COPYING \ - NEWS \ - README.rst \ - src/ \ - THIRD_PARTY_NOTICES \ - VERSION_CURRENT \ - "$into" +init: + ARG --required from + FROM --pass-args $from + DO +INIT -# CONFIGURE : -# Configure the project in $source_dir into $build_dir with a common set of configuration options -CONFIGURE: - FUNCTION - ARG --required source_dir - ARG --required build_dir +# build-environment : +# A target that just presents the environment required for a mongo-c-driver build +build-environment: + FROM --pass-args +init + DO --pass-args +INSTALL_DEPS + +# configure : +# Installs deps and configures the project without building. +configure: + FROM --pass-args +build-environment + + # Various important paths for the build + ARG source_dir = $__source_dir + ARG build_dir = $__build_dir + + # Add the source tree into the container + DO +COPY_SOURCE --into=$source_dir + + # Configure the project ARG --required tls ARG --required sasl RUN cmake -S "$source_dir" -B "$build_dir" -G "Ninja Multi-Config" \ -D ENABLE_MAINTAINER_FLAGS=ON \ -D ENABLE_SHM_COUNTERS=ON \ -D ENABLE_SASL=$(echo $sasl | __str upper) \ - -D ENABLE_SNAPPY=ON \ + -D ENABLE_SNAPPY=AUTO \ -D ENABLE_SRV=ON \ -D ENABLE_ZLIB=BUNDLED \ -D ENABLE_SSL=$(echo $tls | __str upper) \ - -D ENABLE_COVERAGE=ON \ + -D ENABLE_COVERAGE=OFF \ -D ENABLE_DEBUG_ASSERTIONS=ON \ -Werror # build : -# Build libmongoc and libbson using the specified environment. +# Install deps, configures, and builds libmongoc and libbson. # -# The --env argument specifies the build environment among the `+env.xyz` environment -# targets, using --purpose=build for the build environment. Refer to the target -# list for a list of available build environments. +# Building this target requires certain arguments to be specified, the most important +# being `--from`, which specifies the base container image that is used for the build build: - # env is an argument - ARG --required env - FROM --pass-args +env.$env --purpose=build - # The configuration to be built - ARG config=RelWithDebInfo - # The prefix at which to install the built result - ARG install_prefix=/opt/mongo-c-driver - # Build configuration parameters. Will be case-normalized for CMake usage. - ARG --required sasl - ARG --required tls - LET source_dir=/opt/mongoc/source - LET build_dir=/opt/mongoc/build - DO +COPY_SOURCE --into=$source_dir - ENV CCACHE_HOME=/root/.cache/ccache - DO --pass-args +CONFIGURE --source_dir=$source_dir --build_dir=$build_dir - RUN --mount=type=cache,target=$CCACHE_HOME \ - env CCACHE_BASE="$source_dir" \ - cmake --build $build_dir --config $config - RUN cmake --install $build_dir --prefix="$install_prefix" --config $config - SAVE ARTIFACT /opt/mongoc/build/* /build-tree/ - SAVE ARTIFACT /opt/mongo-c-driver/* /root/ + ARG config = "RelWithDebInfo" + LET install_prefix = "/opt/mongo-c-driver" + + # Do the configure step. Force the default value for $build_dir + FROM --pass-args +configure --build_dir=$__build_dir + + # Run the add-ccache command here. This needs to run directly within the same + # target that makes use of it, to ensure that the CACHE line has an effect + # within that target + DO --pass-args +ADD_CCACHE + + # Build the project + RUN cmake --build $__build_dir --config $config + # Install to the local prefix + RUN cmake --install $__build_dir --prefix="$install_prefix" --config $config + # Export the build results and the install tree + SAVE ARTIFACT $__build_dir/* /build-tree/ + SAVE ARTIFACT $install_prefix/* /root/ # test-example will build one of the libmongoc example projects using the build # that comes from the +build target. Arguments for +build should also be provided test-example: - ARG --required env - FROM --pass-args +env.$env --purpose=build + FROM --pass-args +build-environment # Grab the built library COPY --pass-args +build/root /opt/mongo-c-driver # Add the example files @@ -106,63 +107,28 @@ test-example: # # Arguments for +build should be provided. test-cxx-driver: - ARG --required env - ARG --required test_mongocxx_ref - FROM --pass-args +env.$env --purpose=build - ARG cxx_compiler - IF test "$cxx_compiler" = "" - # No cxx_compiler is set, so infer based on a possible c_compiler option - ARG c_compiler - IF test "$c_compiler" != "" - # ADD_CXX_COMPILER will remap the C compiler name to an appropriate C++ name - LET cxx_compiler="$c_compiler" - ELSE - LET cxx_compiler = gcc - END - END - ARG cxx_version_current=0.0.0 - DO tools+ADD_CXX_COMPILER --cxx_compiler=$cxx_compiler + FROM --pass-args +build-environment + + # Copy over the C driver libary build COPY --pass-args +build/root /opt/mongo-c-driver + LET source=/opt/mongo-cxx-driver/src LET build=/opt/mongo-cxx-driver/bld GIT CLONE --branch=$test_mongocxx_ref https://github.com/mongodb/mongo-cxx-driver.git $source + + # Set the VERSION_CURRENT file + ARG cxx_version_current=0.0.0 RUN echo $cxx_version_current > $source/build/VERSION_CURRENT - RUN cmake -S $source -B $build -G Ninja -D CMAKE_PREFIX_PATH=/opt/mongo-c-driver -D CMAKE_CXX_STANDARD=17 - ENV CCACHE_HOME=/root/.cache/ccache - ENV CCACHE_BASE=$source - RUN --mount=type=cache,target=$CCACHE_HOME cmake --build $build -# PREP_CMAKE "warms up" the CMake installation cache for the current environment -PREP_CMAKE: - FUNCTION - # Run all CMake commands using uvx: - RUN __alias cmake uvx cmake - RUN __alias ctest uvx --from=cmake ctest - # Executing any CMake command will warm the cache: - RUN cmake --version | head -n 1 - -env-warmup: - ARG --required env - BUILD --pass-args +env.$env --purpose=build - BUILD --pass-args +env.$env --purpose=test - -# Simultaneously builds and tests multiple different platforms -multibuild: - BUILD +run --targets "test-example" \ - --env=alpine3.19 --env=alpine3.20 --env=alpine3.21 --env=alpine3.22 \ - --env=u20 --env=u22 --env=u24 \ - --env=centos9 --env=centos10 \ - --env=almalinux8 --env=almalinux9 --env=almalinux10 \ - --env=archlinux \ - --tls=OpenSSL --tls=off \ - --sasl=Cyrus --sasl=off \ - --c_compiler=gcc --c_compiler=clang \ - --test_mongocxx_ref=master + # Configure the project + RUN cmake -S $source -B $build -G Ninja -D CMAKE_PREFIX_PATH=/opt/mongo-c-driver -D CMAKE_CXX_STANDARD=17 + # Build + RUN cmake --build $build # release-archive : # Create a release archive of the source tree. (Refer to dev docs) release-archive: - FROM $default_search_registry/library/alpine:3.20 + FROM $default_search_registry/alpine:3.20 RUN apk add git bash ARG --required prefix ARG --required ref @@ -176,7 +142,7 @@ release-archive: LET version = $(cat VERSION_CURRENT) # Pick the waterfall project based on the tag - COPY tools+tools-dir/__str /usr/local/bin/__str + DO +INIT IF __str test "$version" -matches ".*\.0\$" # This is a minor release. Link to the build on the main project. LET base = "mongo_c_driver" @@ -207,7 +173,7 @@ release-archive: # Obtain the signing public key. Exported as an artifact /c-driver.pub signing-pubkey: - FROM $default_search_registry/library/alpine:3.20 + FROM $default_search_registry/alpine:3.20 RUN apk add curl RUN curl --location --silent --fail "https://pgp.mongodb.com/c-driver.pub" -o /c-driver.pub SAVE ARTIFACT /c-driver.pub @@ -237,7 +203,7 @@ sign-file: # Generate a signed release artifact. Refer to the "Earthly" page of our dev docs for more information. # (Refer to dev docs) signed-release: - FROM $default_search_registry/library/alpine:3.20 + FROM $default_search_registry/alpine:3.20 RUN apk add git # The version of the release. This affects the filepaths of the output and is the default for --ref ARG --required version @@ -326,7 +292,7 @@ sbom-validate: --exclude jira snyk: - FROM --platform=linux/amd64 $default_search_registry/library/ubuntu:24.04 + FROM --platform=linux/amd64 $default_search_registry/ubuntu:24.04 RUN apt-get update && apt-get -y install curl RUN curl --location https://github.com/snyk/cli/releases/download/v1.1291.1/snyk-linux -o /usr/local/bin/snyk RUN chmod a+x /usr/local/bin/snyk @@ -398,7 +364,7 @@ test-vcpkg-manifest-mode: make test-manifest-mode vcpkg-base: - FROM $default_search_registry/library/alpine:3.18 + FROM $default_search_registry/alpine:3.18 RUN apk add cmake curl gcc g++ musl-dev ninja-is-really-ninja zip unzip tar \ build-base git pkgconf perl bash linux-headers ENV VCPKG_ROOT=/opt/vcpkg-git @@ -417,27 +383,21 @@ vcpkg-base: verify-headers: # We test against multiple different platforms, because glibc/musl versions may # rearrange their header contents and requirements, so we want to check against as - # many as possible. + # many as possible. Also so set some reasonable build dep so the caller doesn't + # need to specify. In the future, it is possible that we will need to test + # other environments and build settings. BUILD +do-verify-headers-impl \ - --from +env.alpine3.19 \ - --from +env.almalinux8 \ - --from +env.u20 \ - --from +env.centos10 \ - --sasl=off --tls=off --cxx_compiler=gcc --c_compiler=gcc + --from $default_search_registry/alpine:3.19 \ + --from $default_search_registry/almalinux:8 \ + --from $default_search_registry/ubuntu:20.04 \ + --from quay.io/centos/centos:stream10 \ + --sasl=off --tls=off --cxx_compiler=gcc --c_compiler=gcc --snappy=off do-verify-headers-impl: - ARG --required from - # We don't really care about the specifics of the build env/settings, so set some - # reasonable defaults so the caller doesn't need to specify. In the future, it is - # possible that we will need to test other environments and build settings. - FROM --pass-args "$from" --purpose=build - # Add C++ so we can test as C++ headers - DO --pass-args tools+ADD_CXX_COMPILER - DO +COPY_SOURCE --into=/s - DO --pass-args +CONFIGURE --source_dir /s --build_dir /s/_build + FROM --pass-args +configure --build_dir=$__build_dir # The "all_verify_interface_header_sets" target is created automatically # by CMake for the VERIFY_INTERFACE_HEADER_SETS target property. - RUN cmake --build /s/_build --target all_verify_interface_header_sets + RUN cmake --build $__build_dir --target all_verify_interface_header_sets # run : # Run one or more targets simultaneously. @@ -453,158 +413,233 @@ run: BUILD +$__target END +# COPY_SOURCE : +# Copy source files required for the build into the specified "--into" directory +COPY_SOURCE: + FUNCTION + ARG --required into + COPY --dir \ + build/ \ + CMakeLists.txt \ + COPYING \ + etc/ \ + NEWS \ + README.rst \ + src/ \ + THIRD_PARTY_NOTICES \ + VERSION_CURRENT \ + "$into" -# d88888b d8b db db db d888888b d8888b. .d88b. d8b db .88b d88. d88888b d8b db d888888b .d8888. -# 88' 888o 88 88 88 `88' 88 `8D .8P Y8. 888o 88 88'YbdP`88 88' 888o 88 `~~88~~' 88' YP -# 88ooooo 88V8o 88 Y8 8P 88 88oobY' 88 88 88V8o 88 88 88 88 88ooooo 88V8o 88 88 `8bo. -# 88~~~~~ 88 V8o88 `8b d8' 88 88`8b 88 88 88 V8o88 88 88 88 88~~~~~ 88 V8o88 88 `Y8b. -# 88. 88 V888 `8bd8' .88. 88 `88. `8b d8' 88 V888 88 88 88 88. 88 V888 88 db 8D -# Y88888P VP V8P YP Y888888P 88 YD `Y88P' VP V8P YP YP YP Y88888P VP V8P YP `8888Y' - -env.archlinux: - FROM --pass-args tools+init-env --from $default_search_registry/library/archlinux - RUN pacman-key --init - ARG --required purpose - - RUN __install ninja snappy uv +INIT: + FUNCTION + IF ! __have_command __have_command + COPY --chmod=755 tools/__tool /usr/local/bin/__tool + RUN __tool __init + IF __can_install epel-release + RUN __do "Enabling EPEL repositories..." __install epel-release + END + IF ! __have_command curl + RUN __do "Installing curl..." __install curl + END - IF test "$purpose" = build - RUN __install ccache + ARG uv_version = "0.8.15" + ARG uv_install_sh_url = "https://astral.sh/uv/$uv_version/install.sh" + IF ! __have_command uv + RUN curl -LsSf "$uv_install_sh_url" \ + | env UV_UNMANAGED_INSTALL=/opt/uv sh - \ + && __alias uv /opt/uv/uv \ + && __alias uvx /opt/uv/uvx + END END - # We don't install SASL here, because it's pre-installed on Arch - DO --pass-args tools+ADD_TLS - DO --pass-args tools+ADD_C_COMPILER - DO +PREP_CMAKE - -env.alpine3.19: - DO --pass-args +ALPINE_ENV --version=3.19 - -env.alpine3.20: - DO --pass-args +ALPINE_ENV --version=3.20 - -env.alpine3.21: - DO --pass-args +ALPINE_ENV --version=3.21 +# d8888b. d88888b d8888b. d88888b d8b db d8888b. d88888b d8b db .o88b. db db +# 88 `8D 88' 88 `8D 88' 888o 88 88 `8D 88' 888o 88 d8P Y8 `8b d8' +# 88 88 88ooooo 88oodD' 88ooooo 88V8o 88 88 88 88ooooo 88V8o 88 8P `8bd8' +# 88 88 88~~~~~ 88~~~ 88~~~~~ 88 V8o88 88 88 88~~~~~ 88 V8o88 8b 88 +# 88 .8D 88. 88 88. 88 V888 88 .8D 88. 88 V888 Y8b d8 88 +# Y8888D' Y88888P 88 Y88888P VP V8P Y8888D' Y88888P VP V8P `Y88P' YP +# +# +# d888888b d8b db .d8888. d888888b .d8b. db db .d8888. +# `88' 888o 88 88' YP `~~88~~' d8' `8b 88 88 88' YP +# 88 88V8o 88 `8bo. 88 88ooo88 88 88 `8bo. +# 88 88 V8o88 `Y8b. 88 88~~~88 88 88 `Y8b. +# .88. 88 V888 db 8D 88 88 88 88booo. 88booo. db 8D +# Y888888P VP V8P `8888Y' YP YP YP Y88888P Y88888P `8888Y' + +INSTALL_DEPS: + FUNCTION + DO +INIT -env.alpine3.22: - DO --pass-args +ALPINE_ENV --version=3.22 + IF __can_install build-essential + RUN __install build-essential + END + IF test -f /etc/alpine-release + RUN __install pkgconfig musl-dev + END -ALPINE_ENV: + RUN __do "Warming up uv caches..." uv --quiet run --with=cmake --with=ninja true && \ + __alias cmake uvx --with=ninja cmake && \ + __alias ctest uvx --from=cmake --with=ninja ctest && \ + __alias cpack uvx --from=cmake --with=ninja cpack + + # Compilers + DO --pass-args +ADD_C_COMPILER + DO --pass-args +ADD_CXX_COMPILER + # Dev utilities + DO --pass-args +ADD_CCACHE + DO --pass-args +ADD_LLD + # Third-party libraries + DO --pass-args +ADD_SASL + DO --pass-args +ADD_SNAPPY + DO --pass-args +ADD_TLS + +ADD_CCACHE: FUNCTION - ARG --required version - FROM --pass-args tools+init-env --from $default_search_registry/library/alpine:$version - RUN __install bash curl ninja musl-dev make python3 - ARG --required purpose - - IF test "$version" = "3.19" -o "$version" = "3.20" - # uv is not yet available. Install via pipx. - RUN __install pipx - ENV PATH="/opt/uv/bin:$PATH" - RUN PIPX_BIN_DIR=/opt/uv/bin pipx install uv - ELSE - RUN __install uv + ARG ccache = on + IF __bool "$ccache" + IF __have_command ccache || __can_install ccache + RUN __have_command ccache || __install ccache + ENV CCACHE_DIR = /opt/ccache/cache + CACHE /opt/ccache/cache + ENV CMAKE_C_COMPILER_LAUNCHER = ccache + ENV CMAKE_CXX_COMPILER_LAUNCHER = ccache + END END - IF test "$purpose" = "build" - RUN __install snappy-dev ccache - ELSE IF test "$purpose" = "test" - RUN __install snappy +ADD_LLD: + FUNCTION + ARG lld = on + IF __bool "$lld" + IF __can_install lld + RUN __do "Installing LLD linker..." __install lld + ELSE + RUN __fail "Do not know how to install LLD on this environment. Set --lld=false or update the ADD_LLD function." + END END - DO --pass-args tools+ADD_SASL - DO --pass-args tools+ADD_TLS - # Add "gcc" when installing Clang, since it pulls in a lot of runtime libraries and - # utils that are needed for linking with Clang - DO --pass-args tools+ADD_C_COMPILER --clang_pkg="gcc clang compiler-rt" - DO +PREP_CMAKE - -env.u20: - DO --pass-args +UBUNTU_ENV --version=20.04 - -env.u22: - DO --pass-args +UBUNTU_ENV --version=22.04 - -env.u24: - DO --pass-args +UBUNTU_ENV --version=24.04 - -UBUNTU_ENV: +ADD_C_COMPILER: FUNCTION - ARG --required version - FROM --pass-args tools+init-env --from $default_search_registry/library/ubuntu:$version - RUN __install curl build-essential - ARG --required purpose - - # uv is not available via apt. Avoid snapd (systemd) by using pipx instead. - RUN __install python3-venv pipx - ENV PATH="/opt/uv/bin:$PATH" - RUN PIPX_BIN_DIR=/opt/uv/bin pipx install uv - - IF test "$purpose" = build - RUN __install ninja-build gcc ccache libsnappy-dev zlib1g-dev - ELSE IF test "$purpose" = test - RUN __install libsnappy1v5 ninja-build + ARG --required c_compiler + IF test "$c_compiler" = "gcc" + IF __can_install gcc + RUN __install gcc + ELSE + RUN __fail "Unable to infer the GCC C compiler for this environment. Update ADD_C_COMPILER!" + END + ENV CC=gcc + ELSE IF test "$c_compiler" = "clang" + IF __can_install clang + RUN __install clang + ELSE + RUN __fail "Unable to infer the Clang C compiler package for this environment. Update ADD_CXX_COMPILER!" + END + IF __can_install compiler-rt + RUN __install compiler-rt + END + ENV CC=clang + ELSE + RUN __fail "Unknown C compiler specifier: “%s” (Expected one of “gcc” or “clang”)" "$c_compiler" END - DO --pass-args tools+ADD_SASL - DO --pass-args tools+ADD_TLS - DO --pass-args tools+ADD_C_COMPILER - DO +PREP_CMAKE - -env.centos9: - DO --pass-args +CENTOS_STREAM_ENV --version=9 --image=quay.io/centos/centos:stream9 - -env.centos10: - DO --pass-args +CENTOS_STREAM_ENV --version=10 --image=quay.io/centos/centos:stream10 - -env.almalinux8: - DO --pass-args +CENTOS_STREAM_ENV --version 8 --image=$default_search_registry/library/almalinux:8 - -env.almalinux9: - DO --pass-args +CENTOS_STREAM_ENV --version 9 --image=$default_search_registry/library/almalinux:9 - -env.almalinux10: - DO --pass-args +CENTOS_STREAM_ENV --version 10 --image=$default_search_registry/library/almalinux:10 - -CENTOS_STREAM_ENV: +ADD_CXX_COMPILER: FUNCTION - ARG --required version - ARG --required image - FROM --pass-args tools+init-env --from "$image" - - RUN yum -y install epel-release - RUN yum -y install "dnf-command(config-manager)" - IF test "$version" = "8" - RUN yum config-manager --enable powertools + ARG --required cxx_compiler + IF test "$cxx_compiler" = "gcc" + IF __have_command g++ + # We already have a GCC C++ compiler installed. Nothing needs to be done. + ELSE IF __can_install gcc-g++ + RUN __install gcc-g++ + ELSE IF __can_install g++ + RUN __install g++ + ELSE IF __can_install gcc-c++ + RUN __install gcc-c++ + ELSE + RUN __fail "Unable to infer the GCC C++ compiler package for this environment. Update ADD_CXX_COMPILER!" + END + ENV CXX=g++ + ELSE IF test "$cxx_compiler" = "clang" + IF __have_command clang++ + # We already have Clang's C++ compiler available. Nothing to do. + ELSE IF __can_install clang++ + RUN __install clang++ + ELSE IF __can_install clang + RUN __install clang + ELSE + RUN __fail "Unable to infer the Clang C++ compiler package for this environment. Update ADD_CXX_COMPILER!" + END + IF __can_install compiler-rt + RUN __install compiler-rt + END + ENV CXX=clang++ + ELSE IF __str test "$cxx_compiler" -ieq "none" + # Do not install a C++ compiler ELSE - RUN yum config-manager --enable crb + RUN __fail "Unknown C++ compiler specifier: “%s” (Expected one of “gcc”, “clang”, or “none”)" "$cxx_compiler" END - RUN yum -y install gcc gcc-c++ make - - ARG --required purpose - IF test "$purpose" = build - RUN yum -y install ninja-build ccache snappy-devel zlib-devel - ELSE IF test "$purpose" = test - RUN yum -y install ninja-build snappy +ADD_SNAPPY: + FUNCTION + ARG --required snappy + IF __bool "$snappy" + IF __can_install snappy-dev + RUN __install snappy-dev snappy + ELSE IF __can_install libsnappy-dev + RUN __install libsnappy-dev + ELSE IF __can_install snappy-devel + RUN __install snappy-devel + END END - IF test "$version" = "8" - # Neither uv nor pipx is available via yum. - # uv requires Python 3.7+, but system default is Python 3.6. yum provides Python 3.8+. - RUN yum -y install python38 - RUN python3 -m pip install --no-warn-script-location pipx - ENV PATH="/opt/uv/bin:$PATH" - RUN PIPX_BIN_DIR=/opt/uv/bin python3 -m pipx install uv - ELSE IF test "$version" = "9" - # uv is not available via yum. Avoid snapd (systemd) by using pipx instead. - RUN yum -y install pipx - ENV PATH="/opt/uv/bin:$PATH" - RUN PIPX_BIN_DIR=/opt/uv/bin pipx install uv +ADD_TLS: + FUNCTION + ARG --required tls + IF __str test "$tls" -ieq OpenSSL + # Alpine + IF __can_install openssl-dev + RUN __install openssl openssl-dev + # Debian-based: + ELSE IF __can_install libssl-dev + # APT will handle this as a regex to match a libssl runtime package: + RUN __install libssl-dev + # RHEL-based + ELSE IF __can_install openssl-devel + RUN __install openssl-libs openssl-devel + # ArchLinux: + ELSE IF test -f /etc/arch-release + RUN __install openssl + # Otherwise, we don't recognize this system: + ELSE + RUN __fail "Cannot infer the OpenSSL TLS library package names. Please update the ADD_TLS utility" + END + ELSE IF __str test "$tls" -ieq "off" + # Nothing to do ELSE - RUN yum -y install uv + RUN __fail "Unknown --tls value “%s” (Expect one of “OpenSSL” or “off”)" "$tls" END - DO --pass-args tools+ADD_SASL --cyrus_dev_pkg="cyrus-sasl-devel" --cyrus_rt_pkg="cyrus-sasl-lib" - DO --pass-args tools+ADD_TLS --openssl_dev_pkg="openssl-devel" --openssl_rt_pkg="openssl-libs" - DO --pass-args tools+ADD_C_COMPILER - DO +PREP_CMAKE +ADD_SASL: + FUNCTION + ARG --required sasl + IF __str test "$sasl" -ieq Cyrus + # Debian-based + IF __can_install libsasl2-dev + RUN __install libsasl2-2 libsasl2-dev + # Alpine: + ELSE IF __can_install cyrus-sasl-dev + RUN __install cyrus-sasl cyrus-sasl-dev + # RHEL-based: + ELSE IF __can_install cyrus-sasl-devel + RUN __install cyrus-sasl-lib cyrus-sasl-devel + # Archlinux + ELSE IF __can_install libsasl + RUN __install libsasl + # Otherwise, error: + ELSE + RUN __fail "Cannot infer the Cyrus SASL library package names. Please update the ADD_SASL utility" + END + ELSE IF __str test "$sasl" -ieq off + # Do nothing + ELSE + RUN __fail "Unknown value for --sasl “%s” (Expect one of “Cyrus” or “off”)" "$sasl" + END diff --git a/docs/dev/earthly.rst b/docs/dev/earthly.rst index 1e11445bac3..64c585bba17 100644 --- a/docs/dev/earthly.rst +++ b/docs/dev/earthly.rst @@ -11,6 +11,7 @@ pipeline so that they run consistently across hosts and across time. .. _docker: https://www.docker.com/ .. _podman: https://podman.io/ + Running Earthly *************** @@ -56,11 +57,11 @@ run Earthly from the ``mongo-c-driver`` repository, use `tools/earthly.sh`. Testing Earthly =============== -To verify that Earthly is running, execute the ``+env.u20`` Earthly -target. This will exercise most Earthly functionality without requiring any -special parameters or modifying the working directory:: +To verify that Earthly is running, execute the ``+init`` Earthly target with +``--from=alpine``. This will exercise most Earthly functionality without +requiring any special parameters or modifying the working directory:: - $ ./tools/earthly.sh +env.u20 + $ ./tools/earthly.sh +init --from=alpine Init 🚀 ———————————————————————————————————————————————————————————————————————————————— @@ -76,6 +77,115 @@ This section documents some of the available Earthly targets contained in the top-level ``Earthfile`` in the repository. More are defined, and can be enumerated using ``earthly ls`` or ``earthly doc`` in the root of the repository. + +Build & Test Tasks +================== + +.. program:: +init +.. earthly-target:: +init + + Initializes basic environment properties. Requires from `--from` argument + + .. option:: --from + + .. |--from| replace:: :option:`--from <+init --from>` + + :required: Specify the basis image. Should be a valid container image + identifier. This target parameter is propagated to several other targets. + + The first step in `+init` and any targets derived from it is to execute + a ``FROM `` line using this image identifier. + + +.. program:: +build-environment +.. earthly-target:: +build-environment + + Runs `+init` and installs all build-time dependencies for ``mongo-c-driver``. + Requires |--from|. + + This target will automatically decide the best was to install dependencies + based on the container image selected using |--from|. + + .. rubric:: Parameters + + .. option:: --c_compiler {gcc,clang} + + :required: Set the C compiler to be installed. + + .. option:: --cxx_compiler {gcc,clang,none} + + :required: Sets the C++ compiler to be installed. if ``none``, then no + C++ compiler will be added to the container environment. + + .. option:: --snappy + + :required: Whether to install Snappy in the environment. + + .. option:: --tls {OpenSSL,off} + + :required: Toggle the TLS implementation to be used. Currently, only supports + ``OpenSSL`` or ``off`` to disable TLS support. + + .. option:: --sasl {Cyrus,off} + + :required: Toggle the SASL implementation to use. + + .. option:: --ccache + + :default: ``on`` + :optional: Toggle whether the build will attempt to add and use Ccache. + + .. option:: --lld + + :default: ``on`` + :optional: Toggle whether the build will attempt to install and use the + LLD linker. + + +.. program:: +configure +.. earthly-target:: +configure + + Runs `+build-environment` and then configures the project using CMake. + + Requires all the same arguments as `+build-environment`. + + +.. program:: +build +.. earthly-target:: +build + + Runs `+configure` and then builds ``mongo-c-driver``. + + Requires all arguments for `+configure`, transitively. + + .. earthly-artifact:: +build/build-tree/ + + A directory containing the CMake build tree created by the task. + + .. earthly-artifact:: +build/root/ + + A directory containing the installation result for ``mongo-c-driver``. + This directory contains the top-level ``include/``, ``lib/``, etc. + directories generated by ``cmake --install``. + + +.. program:: +verify-headers +.. earthly-target:: +verify-headers + + This runs `CMake's header verification`__ on the library sources, to ensure + that the public API headers can be ``#include``\ 'd directly in a C++ + compiler. + + __ https://cmake.org/cmake/help/latest/prop_tgt/VERIFY_INTERFACE_HEADER_SETS.html + + This target does not produce any output artifacts. This only checks that our + public API headers are valid. This checks against a variety of environments + to test that we are including the necessary standard library headers in our + public API headers. + + +Release Tasks +============= + .. program:: +signed-release .. earthly-target:: +signed-release @@ -159,10 +269,10 @@ enumerated using ``earthly ls`` or ``earthly doc`` in the root of the repository .. rubric:: Parameters .. option:: --file - **Required**. Specify a path to a file (on the host) to be signed. This - file must be a descendant of the directory that contains the ``Earthfile`` - and must not be excluded by an ``.earthlyignore`` file (it is copied - into the container using the COPY__ command.) + :required: Specify a path to a file (on the host) to be signed. This + file must be a descendant of the directory that contains the ``Earthfile`` + and must not be excluded by an ``.earthlyignore`` file (it is copied + into the container using the COPY__ command.) __ https://docs.earthly.dev/docs/earthfile#copy @@ -171,41 +281,10 @@ enumerated using ``earthly ls`` or ``earthly doc`` in the root of the repository GRS_CONFIG_USER1_PASSWORD GRS_CONFIG_USER1_USERNAME - **Required**. [#creds]_ + :required: [#creds]_ .. seealso:: `earthly.secrets` - .. _earthly.amazon-ecr: - - Authenticating with Amazon ECR - ============================== - - In order to run `+sign-file` or any target that depends upon it, the - container engine client\ [#oci]_ will need to be authenticated with the - DevProd-provided Amazon ECR instance using AWS CLI v2:: - - # Forward the short-term AWS credentials to the container engine client. - $ aws ecr get-login-password --profile | podman login --username AWS --password-stdin 901841024863.dkr.ecr.us-east-1.amazonaws.com - - Configure the AWS profile using ``aws configure sso`` or modifying the - ``$HOME/.aws/config`` file such that: - - - The SSO start URL is ``https://d-9067613a84.awsapps.com/start#/``. - - The SSO and client region are ``us-east-1``. - - The SSO registration scope is ``sso:account:access`` (default). - - The SSO account ID is ``901841024863`` (aka ``devprod-platforms-ecr``). - - The SSO role name is ``ECRScopedAccess`` (default). - - To refresh short-term credentials when they have expired, run - ``aws sso login --profile `` followed by the same - ``aws ecr get-login-password ... | podman login ...`` command described - above. - - .. seealso:: `"DevProd Platforms Container Registry" - `_ and - `"Configuring IAM Identity Center authentication with the AWS CLI" - `_. - .. earthly-target:: +sbom-generate Updates the `etc/cyclonedx.sbom.json` file **in-place** based on the contents @@ -242,12 +321,12 @@ enumerated using ``earthly ls`` or ``earthly doc`` in the root of the repository .. rubric:: Parameters .. option:: --branch - **Required**. The name of the branch or tag to be snapshot. + :required: The name of the branch or tag to be snapshot. .. option:: --name - **Required**. The name for the monitored snapshot ("target reference") to - be stored in the Snyk server. + :required: The name for the monitored snapshot ("target reference") to + be stored in the Snyk server. .. note:: If a target with this name already exists in the Snyk server, then executing `+snyk-monitor-snapshot` will replace that target. @@ -298,21 +377,6 @@ enumerated using ``earthly ls`` or ``earthly doc`` in the root of the repository See: `SNYK_TOKEN` -.. program:: +verify-headers -.. earthly-target:: +verify-headers - - This runs `CMake's header verification`__ on the library sources, to ensure - that the public API headers can be ``#include``\ 'd directly in a C++ - compiler. - - __ https://cmake.org/cmake/help/latest/prop_tgt/VERIFY_INTERFACE_HEADER_SETS.html - - This target does not produce any output artifacts. This only checks that our - public API headers are valid. This checks against a variety of environments - to test that we are including the necessary standard library headers in our - public API headers. - - .. _earthly.secrets: Setting Earthly Secrets @@ -342,6 +406,39 @@ during execution. Your ``.secret`` file will look something like this: .. seealso:: `The Earthly documentation on passing secrets `_ + +.. _earthly.amazon-ecr: + +Authenticating with Amazon ECR +****************************** + +In order to run `+sign-file` or any target that depends upon it, the container +engine client\ [#oci]_ will need to be authenticated with the DevProd-provided +Amazon ECR instance using AWS CLI v2:: + + # Forward the short-term AWS credentials to the container engine client. + $ aws ecr get-login-password --profile | podman login --username AWS --password-stdin 901841024863.dkr.ecr.us-east-1.amazonaws.com + +Configure the AWS profile using ``aws configure sso`` or modifying the +``$HOME/.aws/config`` file such that: + +- The SSO start URL is ``https://d-9067613a84.awsapps.com/start#/``. +- The SSO and client region are ``us-east-1``. +- The SSO registration scope is ``sso:account:access`` (default). +- The SSO account ID is ``901841024863`` (aka ``devprod-platforms-ecr``). +- The SSO role name is ``ECRScopedAccess`` (default). + +To refresh short-term credentials when they have expired, run +``aws sso login --profile `` followed by the same +``aws ecr get-login-password ... | podman login ...`` command described +above. + +.. seealso:: `"DevProd Platforms Container Registry" + `_ and + `"Configuring IAM Identity Center authentication with the AWS CLI" + `_. + + .. [#oci] You container engine client will probably be Docker or Podman. Wherever the diff --git a/tools/__alias b/tools/__alias deleted file mode 100644 index 4799ea66654..00000000000 --- a/tools/__alias +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env sh - -# Create an alias in /usr/local/bin/ for the command given by the arguments -# Usage: -# -# __alias [ [...]] -# -# The generated alias can be invoked via , and any subsequent arguments -# are appended to the argument list that were given when __alias was invoked. - -# shellcheck disable=SC3043,SC3044 - -set -eu - -# Usage: __readvar -# Read the value of the variable named by into a variable -__readvar() { - local __readvar_tmp - eval "__readvar_tmp=\$(printf %s. \"\${$2}\"); $1=\${__readvar_tmp%.}" -} - -__fail() { - printf %s "$@" - return 1 -} - -# $ __strsub_inplace -# Replace each occurrence of with within the string variable -__strsub_inplace() { - test $# -eq 3 || __fail "__strsub_inplace expects three arguments (Got %s)" $# || return - local __strsub_varname="$1" __strsub_needle="$2" __strsub_repl="$3" - # Read the value of into __strsub_remaining - __readvar __strsub_remaining "$__strsub_varname" - # Accumulate into __strsub_acc - local __strsub_head __strsub_acc='' - while true; do - # Grab all content until the next needle: - __strsub_head=${__strsub_remaining%%"$__strsub_needle"*} - if test "$__strsub_head" = "$__strsub_remaining"; then - # Nothing match the needle, so we are done - __strsub_acc="$__strsub_acc$__strsub_remaining" - break - fi - # Everything after the needle: - __strsub_remaining=${__strsub_remaining#*"$__strsub_needle"} - # Accumulate the result: - __strsub_acc="$__strsub_acc$__strsub_head$__strsub_repl" - done - # Read the accumulated string back into the output variable: - __readvar "$__strsub_varname" __strsub_acc -} - -_ESCAPES="$(printf '[][ \t\n\r\a*?!\\\$;()\\{\\}'"'"']')" -__quote() { - local __quote_input="$1" - # shellcheck disable=SC2295 - local __quote_tmp="${__quote_input#*$_ESCAPES}" || return - if test "$__quote_input" = ""; then - # Empty string: Just emit empty quotes - printf '""' - return - elif test "$__quote_tmp" = "$__quote_input"; then - # No special chars, so don't quote it: - printf %s "$__quote_input" - return - else - # Special chars. Escape any inner quotes, then wrap in quotes - __strsub_inplace __quote_input "'" "'\\''" - printf "'%s'" "$__quote_input" - fi -} - -command='' name="$1" -shift -for x in "$@"; do - x=$(__quote "$x") - command="$command$x " -done -command="$command\"\$@\"" -filename="/usr/local/bin/$name" - -echo "#!/usr/bin/env sh" > "$filename" -echo "$command" >> "$filename" -chmod a+x "$filename" -echo "Created command alias '$filename' of [$command]" 1>&2 diff --git a/tools/__boolstr b/tools/__boolstr deleted file mode 100644 index 63e16256791..00000000000 --- a/tools/__boolstr +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env sh - -# Execute the given argument list as a command. If exits zero, prints "true", -# otherwise "false". stdout from the subcommand will be supressed. stderr will -# be forwarded. This script itself will always exit zero. - -# Usage: __boolstr [cmd...] - -"$@" 1>/dev/null - -if test $? = 0; then - printf "true" -else - printf "false" -fi diff --git a/tools/__fail b/tools/__fail deleted file mode 100644 index 01daecd68d0..00000000000 --- a/tools/__fail +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env sh - -# shellcheck disable=SC2059 -printf "$@" 1>&2 - -exit 1 diff --git a/tools/__install b/tools/__install deleted file mode 100755 index bfd93496e8b..00000000000 --- a/tools/__install +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env sh - -# Install the named packages using the platform's package manager. -# This script "just does the right thing" to install a package as a step in a -# caching container build, as a bare "pkg-tool install" might be insufficient -# or subtly broken, and we only really care about installing a list of packages -# -# Usage: