@@ -818,50 +818,115 @@ func (Cloud) Image(ctx context.Context) {
818818 Package (ctx )
819819}
820820
821+ << << << < HEAD
822+ == == == =
823+ // Load loads an artifact as a docker image.
824+ // 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
825+ // DOCKER_IMPORT_SOURCE - override source for import
826+ func (Cloud ) Load () error {
827+ agentVersion , err := mage .AgentPackageVersion ()
828+ if err != nil {
829+ return fmt .Errorf ("failed to get agent package version: %w" , err )
830+ }
831+
832+ // Need to get the FIPS env var flag to see if we are using the normal source cloud image name, or the FIPS variant
833+ fips := os .Getenv (fipsEnv )
834+ defer os .Setenv (fipsEnv , fips )
835+ fipsVal , err := strconv .ParseBool (fips )
836+ if err != nil {
837+ fipsVal = false
838+ }
839+ if err := os .Setenv (fipsEnv , strconv .FormatBool (fipsVal )); err != nil {
840+ return fmt .Errorf ("failed to set fips env var: %w" , err )
841+ }
842+ devtools .FIPSBuild = fipsVal
843+
844+ source := "build/distributions/elastic-agent-cloud-" + agentVersion + "-SNAPSHOT-linux-" + runtime .GOARCH + ".docker.tar.gz"
845+ if fipsVal {
846+ source = "build/distributions/elastic-agent-cloud-fips-" + agentVersion + "-SNAPSHOT-linux-" + runtime .GOARCH + ".docker.tar.gz"
847+ }
848+ if envSource , ok := os .LookupEnv ("DOCKER_IMPORT_SOURCE" ); ok && envSource != "" {
849+ source = envSource
850+ }
851+
852+ return sh .RunV ("docker" , "image" , "load" , "-i" , source )
853+ }
854+
855+ >> >> >> > 5 c5b174ae (ci : pin elastic - agent version (#8736 ))
821856// Push builds a cloud image tags it correctly and pushes to remote image repo.
822857// Previous login to elastic registry is required!
823858func (Cloud ) Push () error {
824- snapshot := os .Getenv (snapshotEnv )
825- defer os .Setenv (snapshotEnv , snapshot )
859+ agentVersion , err := mage .AgentPackageVersion ()
860+ if err != nil {
861+ return fmt .Errorf ("failed to get agent package version: %w" , err )
862+ }
826863
827- os .Setenv (snapshotEnv , "true" )
864+ << << << < HEAD
865+ sourceCloudImageName := fmt .Sprintf ("docker.elastic.co/beats-ci/elastic-agent-cloud:%s" , version )
866+ == == == =
867+ // Need to get the FIPS env var flag to see if we are using the normal source cloud image name, or the FIPS variant
868+ fips := os .Getenv (fipsEnv )
869+ defer os .Setenv (fipsEnv , fips )
870+ fipsVal , err := strconv .ParseBool (fips )
871+ if err != nil {
872+ fipsVal = false
873+ }
874+ if err := os .Setenv (fipsEnv , strconv .FormatBool (fipsVal )); err != nil {
875+ return fmt .Errorf ("failed to set fips env var: %w" , err )
876+ }
877+ devtools .FIPSBuild = fipsVal
828878
829- version := getVersion ()
830- var tag string
879+ sourceCloudImageName := fmt .Sprintf ("docker.elastic.co/beats-ci/elastic-agent-cloud:%s-SNAPSHOT" , agentVersion )
880+ if fipsVal {
881+ sourceCloudImageName = fmt .Sprintf ("docker.elastic.co/beats-ci/elastic-agent-cloud-fips:%s-SNAPSHOT" , agentVersion )
882+ }
883+ var targetTag string
831884 if envTag , isPresent := os .LookupEnv ("CUSTOM_IMAGE_TAG" ); isPresent && len (envTag ) > 0 {
832- tag = envTag
885+ targetTag = envTag
833886 } else {
834- commit := dockerCommitHash ()
835- time := time .Now ().Unix ()
836-
837- tag = fmt .Sprintf ("%s-%s-%d" , version , commit , time )
887+ targetTag = fmt .Sprintf ("%s-%s-%d" , agentVersion , dockerCommitHash (), time .Now ().Unix ())
838888 }
839-
840- sourceCloudImageName := fmt .Sprintf ("docker.elastic.co/beats-ci/elastic-agent-cloud:%s" , version )
889+ >> >> >> > 5 c5b174ae (ci : pin elastic - agent version (#8736 ))
841890 var targetCloudImageName string
842891 if customImage , isPresent := os .LookupEnv ("CI_ELASTIC_AGENT_DOCKER_IMAGE" ); isPresent && len (customImage ) > 0 {
843- targetCloudImageName = fmt .Sprintf ("%s:%s" , customImage , tag )
892+ targetCloudImageName = fmt .Sprintf ("%s:%s" , customImage , targetTag )
844893 } else {
845- targetCloudImageName = fmt .Sprintf (cloudImageTmpl , tag )
894+ targetCloudImageName = fmt .Sprintf (cloudImageTmpl , targetTag )
846895 }
847896
848897 fmt .Printf (">> Setting a docker image tag to %s\n " , targetCloudImageName )
849898 err := sh .RunV ("docker" , "tag" , sourceCloudImageName , targetCloudImageName )
850899 if err != nil {
851- return fmt .Errorf ("Failed setting a docker image tag: %w" , err )
900+ return fmt .Errorf ("failed setting a docker image tag: %w" , err )
852901 }
853902 fmt .Println (">> Docker image tag updated successfully" )
854903
855904 fmt .Println (">> Pushing a docker image to remote registry" )
856905 err = sh .RunV ("docker" , "image" , "push" , targetCloudImageName )
857906 if err != nil {
858- return fmt .Errorf ("Failed pushing docker image: %w" , err )
907+ return fmt .Errorf ("failed pushing docker image: %w" , err )
859908 }
860909 fmt .Printf (">> Docker image pushed to remote registry successfully: %s\n " , targetCloudImageName )
861910
862911 return nil
863912}
864913
914+ << << << < HEAD
915+ == == == =
916+ // Create a new devmachine that will be auto-deleted in 6 hours.
917+ // Example: MACHINE_IMAGE="family/platform-ingest-elastic-agent-ubuntu-2204" ZONE="us-central1-a" mage devmachine:create "pavel-dev-machine"
918+ // ZONE defaults to 'us-central1-a', MACHINE_IMAGE defaults to 'family/platform-ingest-elastic-agent-ubuntu-2204'
919+ func (Devmachine ) Create (instanceName string ) error {
920+ if instanceName == "" {
921+ return errors .New (
922+ `instanceName is required.
923+ Example:
924+ mage devmachine:create "pavel-dev-machine" ` )
925+ }
926+ return devmachine .Run (instanceName )
927+ }
928+
929+ >> >> >> > 5 c5b174ae (ci : pin elastic - agent version (#8736 ))
865930func Clean () {
866931 mg .Deps (devtools .Clean , Build .Clean )
867932}
0 commit comments