<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <parent>
    <groupId>com.atlassian.pom</groupId>
    <artifactId>public-pom</artifactId>
    <version>3.0.84</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.atlassian.bamboo</groupId>
  <artifactId>atlassian-bamboo-elastic-image</artifactId>
  <version>4.2</version>
  <packaging>ami</packaging>
  <name>Atlassian Bamboo Elastic Agent Default Image</name>

  <scm>
    <connection>scm:git:ssh://git@stash.atlassian.com:7997/bam/bamboo.git</connection>
    <developerConnection>scm:git:ssh://git@stash.atlassian.com:7997/bam/bamboo.git</developerConnection>
    <url>https://atlaseye.atlassian.com/browse/bamboo/trunk/bamboo-elastic-image</url>
  </scm>

  <properties>
    <imageBucket>${s3.imageBucketStem}-${s3.homeRegion}</imageBucket>
    <imagePrefix>elasticbamboo-${project.version}-ARCH-${elasticbamboo.label}${timestamp}</imagePrefix>
    <installerArtifactId>atlassian-bamboo-agent-elastic-installer</installerArtifactId>
    <installerClassifier>jar-with-dependencies</installerClassifier>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.atlassian.bamboo</groupId>
      <artifactId>${installerArtifactId}</artifactId>
      <version>5.9-m09</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <phase>process-resources</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>com.atlassian.bamboo</groupId>
                  <artifactId>${installerArtifactId}</artifactId>
                  <classifier>${installerClassifier}</classifier>
                  <outputDirectory>${project.build.directory}</outputDirectory>
                </artifactItem>
              </artifactItems>
              <overWriteSnapshots>true</overWriteSnapshots>
              <stripVersion>true</stripVersion>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <id>build-s3-assembly</id>
            <goals>
              <goal>single</goal>
            </goals>
            <phase>process-resources</phase>
            <configuration>
              <finalName>imagefiles</finalName>
              <descriptors>
                <descriptor>src/main/resources/assembly.xml</descriptor>
              </descriptors>
              <appendAssemblyId>false</appendAssemblyId>
              <outputDirectory>${project.build.directory}</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-build-environment</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requirePluginVersions>
                  <banSnapshots>false</banSnapshots>
                </requirePluginVersions>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <!-- used for tagging EC2 images -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>create</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <format>{0,date,yyyy-MM-dd_HH:mm:ss}</format>
          <items>
            <item>timestamp</item>
          </items>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.atlassian.maven.plugins</groupId>
        <artifactId>aws-maven-plugin</artifactId>
        <version>1.0.58</version>
        <extensions>true</extensions>
        <configuration>
          <!-- Secrets config -->
          <awsSecretAccessKey>${aws.secretAccessKey}</awsSecretAccessKey>
          <ec2PrivateKeyFile>${ec2.privateKeyFile}</ec2PrivateKeyFile>
          <awsAccessKeyID>${aws.accessKeyID}</awsAccessKeyID>
          <rebuildImage>true</rebuildImage>
          <amiIDFile>${project.build.directory}/${project.build.finalName}.${project.packaging}</amiIDFile>
          <imageListFile>src/main/ec2/bamboo_ami_list_base.txt</imageListFile>
          <ec2KeyName>elasticbamboo</ec2KeyName>
          <instanceType32>c1.medium</instanceType32>
          <instanceType64>m3.large</instanceType64>
          <ec2ImageTag>${project.version}::${user.name}::${buildNumber}</ec2ImageTag>
          <userDataFile>src/main/ec2/customisation/OS/userdata-OS-bamboo</userDataFile>
          <additionalDevAccounts>050544770435,081862267333</additionalDevAccounts>
          <files>
            <file>${ec2.publicCertificate}</file>
            <file>${ec2.privateKeyFile}</file>
            <file>${aws.accountPrivateKeyFile}</file>
            <file>src/main/ec2/customisation/OS/</file>            
            <file>src/main/ec2/resources/OS/bamboo/bamboo-agent.cfg.template.xml</file>
            <file>src/main/ec2/resources/OS/bamboo/bamboo-OS-capabilities.properties</file>
            <file>${project.build.directory}/imagefiles.zip</file>
            <file>src/main/ec2/imagetests</file>
          </files>
          <destination>/tmp</destination>
          <command>sh -x /tmp/customiseAmi-OS-bamboo.sh ${aws.accessKeyID} ${aws.secretAccessKey} ${aws.accountNumber} ${project.version} ${imagePrefix} ${imageBucket} ${s3.agentAssemblyBucketStem}-REGION</command>
          <manifest>${imageBucket}/${imagePrefix}/${imagePrefix}.manifest.xml</manifest>
          <windowsDefaultAmiId>ami-976edafe</windowsDefaultAmiId>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
