@@ -877,50 +877,115 @@ func (Cloud) Image(ctx context.Context) {
877877 Package (ctx )
878878}
879879
880+ << << << < HEAD
881+ == == == =
882+ // Load loads an artifact as a docker image.
883+ // Looks in build/distributions for an elastic-agent-cloud*.docker.tar.gz artifact and imports it as docker.elastic.co/beats-ci/elastic-agent-cloud:$VERSION
884+ // DOCKER_IMPORT_SOURCE - override source for import
885+ func (Cloud ) Load () error {
886+ agentVersion , err := mage .AgentPackageVersion ()
887+ if err != nil {
888+ return fmt .Errorf ("failed to get agent package version: %w" , err )
889+ }
890+
891+ // Need to get the FIPS env var flag to see if we are using the normal source cloud image name, or the FIPS variant
892+ fips := os .Getenv (fipsEnv )
893+ defer os .Setenv (fipsEnv , fips )
894+ fipsVal , err := strconv .ParseBool (fips )
895+ if err != nil {
896+ fipsVal = false
897+ }
898+ if err := os .Setenv (fipsEnv , strconv .FormatBool (fipsVal )); err != nil {
899+ return fmt .Errorf ("failed to set fips env var: %w" , err )
900+ }
901+ devtools .FIPSBuild = fipsVal
902+
903+ source := "build/distributions/elastic-agent-cloud-" + agentVersion + "-SNAPSHOT-linux-" + runtime .GOARCH + ".docker.tar.gz"
904+ if fipsVal {
905+ source = "build/distributions/elastic-agent-cloud-fips-" + agentVersion + "-SNAPSHOT-linux-" + runtime .GOARCH + ".docker.tar.gz"
906+ }
907+ if envSource , ok := os .LookupEnv ("DOCKER_IMPORT_SOURCE" ); ok && envSource != "" {
908+ source = envSource
909+ }
910+
911+ return sh .RunV ("docker" , "image" , "load" , "-i" , source )
912+ }
913+
914+ >> >> >> > 5 c5b174ae (ci : pin elastic - agent version (#8736 ))
880915// Push builds a cloud image tags it correctly and pushes to remote image repo.
881916// Previous login to elastic registry is required!
882917func (Cloud ) Push () error {
883- snapshot := os .Getenv (snapshotEnv )
884- defer os .Setenv (snapshotEnv , snapshot )
918+ agentVersion , err := mage .AgentPackageVersion ()
919+ if err != nil {
920+ return fmt .Errorf ("failed to get agent package version: %w" , err )
921+ }
885922
886- os .Setenv (snapshotEnv , "true" )
923+ << << << < HEAD
924+ sourceCloudImageName := fmt .Sprintf ("docker.elastic.co/beats-ci/elastic-agent-cloud:%s" , version )
925+ == == == =
926+ // Need to get the FIPS env var flag to see if we are using the normal source cloud image name, or the FIPS variant
927+ fips := os .Getenv (fipsEnv )
928+ defer os .Setenv (fipsEnv , fips )
929+ fipsVal , err := strconv .ParseBool (fips )
930+ if err != nil {
931+ fipsVal = false
932+ }
933+ if err := os .Setenv (fipsEnv , strconv .FormatBool (fipsVal )); err != nil {
934+ return fmt .Errorf ("failed to set fips env var: %w" , err )
935+ }
936+ devtools .FIPSBuild = fipsVal
887937
888- version := getVersion ()
889- var tag string
938+ sourceCloudImageName := fmt .Sprintf ("docker.elastic.co/beats-ci/elastic-agent-cloud:%s-SNAPSHOT" , agentVersion )
939+ if fipsVal {
940+ sourceCloudImageName = fmt .Sprintf ("docker.elastic.co/beats-ci/elastic-agent-cloud-fips:%s-SNAPSHOT" , agentVersion )
941+ }
942+ var targetTag string
890943 if envTag , isPresent := os .LookupEnv ("CUSTOM_IMAGE_TAG" ); isPresent && len (envTag ) > 0 {
891- tag = envTag
944+ targetTag = envTag
892945 } else {
893- commit := dockerCommitHash ()
894- time := time .Now ().Unix ()
895-
896- tag = fmt .Sprintf ("%s-%s-%d" , version , commit , time )
946+ targetTag = fmt .Sprintf ("%s-%s-%d" , agentVersion , dockerCommitHash (), time .Now ().Unix ())
897947 }
898-
899- sourceCloudImageName := fmt .Sprintf ("docker.elastic.co/beats-ci/elastic-agent-cloud:%s" , version )
948+ >> >> >> > 5 c5b174ae (ci : pin elastic - agent version (#8736 ))
900949 var targetCloudImageName string
901950 if customImage , isPresent := os .LookupEnv ("CI_ELASTIC_AGENT_DOCKER_IMAGE" ); isPresent && len (customImage ) > 0 {
902- targetCloudImageName = fmt .Sprintf ("%s:%s" , customImage , tag )
951+ targetCloudImageName = fmt .Sprintf ("%s:%s" , customImage , targetTag )
903952 } else {
904- targetCloudImageName = fmt .Sprintf (cloudImageTmpl , tag )
953+ targetCloudImageName = fmt .Sprintf (cloudImageTmpl , targetTag )
905954 }
906955
907956 fmt .Printf (">> Setting a docker image tag to %s\n " , targetCloudImageName )
908957 err := sh .RunV ("docker" , "tag" , sourceCloudImageName , targetCloudImageName )
909958 if err != nil {
910- return fmt .Errorf ("Failed setting a docker image tag: %w" , err )
959+ return fmt .Errorf ("failed setting a docker image tag: %w" , err )
911960 }
912961 fmt .Println (">> Docker image tag updated successfully" )
913962
914963 fmt .Println (">> Pushing a docker image to remote registry" )
915964 err = sh .RunV ("docker" , "image" , "push" , targetCloudImageName )
916965 if err != nil {
917- return fmt .Errorf ("Failed pushing docker image: %w" , err )
966+ return fmt .Errorf ("failed pushing docker image: %w" , err )
918967 }
919968 fmt .Printf (">> Docker image pushed to remote registry successfully: %s\n " , targetCloudImageName )
920969
921970 return nil
922971}
923972
973+ << << << < HEAD
974+ == == == =
975+ // Create a new devmachine that will be auto-deleted in 6 hours.
976+ // Example: MACHINE_IMAGE="family/platform-ingest-elastic-agent-ubuntu-2204" ZONE="us-central1-a" mage devmachine:create "pavel-dev-machine"
977+ // ZONE defaults to 'us-central1-a', MACHINE_IMAGE defaults to 'family/platform-ingest-elastic-agent-ubuntu-2204'
978+ func (Devmachine ) Create (instanceName string ) error {
979+ if instanceName == "" {
980+ return errors .New (
981+ `instanceName is required.
982+ Example:
983+ mage devmachine:create "pavel-dev-machine" ` )
984+ }
985+ return devmachine .Run (instanceName )
986+ }
987+
988+ >> >> >> > 5 c5b174ae (ci : pin elastic - agent version (#8736 ))
924989func Clean () {
925990 mg .Deps (devtools .Clean , Build .Clean )
926991}
0 commit comments