diff a/installers/linux/alpine/tar/build.gradle b/installers/linux/alpine/tar/build.gradle
--- /dev/null
+++ b/installers/linux/alpine/tar/build.gradle
@@ -0,0 +1,188 @@
+/*
+ * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Amazon designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+dependencies {
+    compile project(path: ':openjdksrc', configuration: 'archives')
+    compile project(path: ':prebuild', configuration: 'cacerts')
+}
+
+ext {
+    // all linux distros and macos support 'uname -m'
+    arch = ['uname', '-m'].execute().text.trim()
+
+	switch (arch) {
+	case 'aarch64':
+		arch_alias = arch
+		break;
+	case 'x86_64':
+		arch_alias = 'x64'
+		break;
+	default:
+		throw new GradleException("${arch} is not suported")
+    }
+}
+def jdkResultingImage = "$buildRoot/build/linux-${arch}-server-${correttoDebugLevel}/images/jdk"
+def testResultingImage = "$buildRoot/build/linux-${arch}-server-${correttoDebugLevel}/images/test"
+
+// deps
+def depsMap = [:]
+project.configurations.compile.getFiles().each { depsMap[it.getName()] = it }
+/**
+ * Create a local copy of the source tree in our
+ * build root -- this is required since OpenJDK's
+ * build wants to occur inside the source tree,
+ * and we don't want to tamper with someone
+ * else's tree.
+ */
+task copySource(type: Exec) {
+    if (!file(buildRoot).exists()) {
+        file(buildRoot).mkdirs()
+    }
+    workingDir '/usr/bin'
+    commandLine 'rsync', '-am',
+            '--exclude=pre-build',
+            '--exclude=installers',
+            '--exclude=corretto-build',
+            "${project.rootDir}/", buildRoot
+}
+
+/**
+ * Scan the patches folder for any .patch that needs
+ * to be applied before start building.
+ */
+task applyPatches() {
+    dependsOn copySource
+    doLast {
+        fileTree('patches').matching {
+            include '*.patch'
+        }.each { f ->
+            ant.patch(patchfile: f, dir: "$buildRoot", strip: 0)
+        }
+    }
+}
+
+task configureBuild(type: Exec) {
+
+    dependsOn project.configurations.compile
+    dependsOn applyPatches
+    workingDir "$buildRoot"
+
+    // Platform specific flags
+    def command = ['bash', 'configure']
+    // Common flags
+    command += project.correttoCommonFlags
+    command += ["--with-cacerts-file=${depsMap[caCerts]}",
+                "--with-zlib=system"
+    ]
+   commandLine command.flatten()
+}
+
+task executeBuild(type: Exec) {
+    dependsOn configureBuild
+    workingDir "$buildRoot"
+    commandLine 'make', 'images'
+    outputs.dir jdkResultingImage
+}
+
+task createTestImage(type: Exec) {
+    dependsOn executeBuild
+    workingDir "$buildRoot"
+    commandLine 'make','test-image'
+}
+
+task bundleThirdPartyBinaries {
+    dependsOn executeBuild
+    doLast {
+        // If property set, copy async profiler binaries to bundle
+        if (project.asyncProfilerBinariesPath != "") {
+            if (!file(project.asyncProfilerBinariesPath).isDirectory()) {
+                throw new GradleException("asyncProfilerBinariesPath is not a valid directory: ${project.asyncProfilerBinariesPath}")
+            }
+            copy {
+                from project.asyncProfilerBinariesPath
+                include 'bin/**', 'lib/**'
+                into jdkResultingImage
+            }
+            copy {
+                from project.asyncProfilerLegal
+                into "${jdkResultingImage}/legal"
+            }
+        }
+    }
+}
+
+task packageTestImage(type: Tar) {
+    dependsOn createTestImage
+    description = 'Package test results'
+    archiveFileName = "amazon-corretto-testimage-${project.version.full}-alpine-linux-${arch_alias}.tar.gz"
+    compression = Compression.GZIP
+    from(testResultingImage) {
+        include '**'
+    }
+    into "amazon-corretto-testimage-${project.version.full}-alpine-linux-${arch_alias}"
+}
+
+task packageDebugSymbols(type: Tar) {
+    dependsOn packageTestImage
+    description = 'Package debug symbols'
+    archiveFileName = "amazon-corretto-debugsymbols-${project.version.full}-alpine-linux-${arch_alias}.tar.gz"
+    compression = Compression.GZIP
+    from(jdkResultingImage) {
+        include 'bin/*.diz'
+        include 'lib/*.diz'
+        include 'lib/server/*.diz'
+        into "amazon-corretto-debugsymbols-${project.version.full}-alpine-linux-${arch_alias}"
+    }
+}
+
+task packageBuildResults(type: Tar) {
+    description = 'Compresses the JDK image and puts the results in build/distributions.'
+    dependsOn packageDebugSymbols
+    dependsOn executeBuild
+    dependsOn bundleThirdPartyBinaries
+    archiveFileName = "amazon-corretto-${project.version.full}-alpine-linux-${arch_alias}.tar.gz"
+    compression = Compression.GZIP
+    from(buildRoot) {
+        include project.rootFiles
+    }
+    from(jdkResultingImage) {
+        include 'bin/**'
+        include 'conf/**'
+        include 'include/**'
+        include 'jmods/**'
+        include 'lib/**'
+        include 'man/man1/**'
+        include 'release'
+        exclude '**/*.diz'
+    }
+
+    // Copy legal directory specifically to set permission correctly.
+    // See https://github.com/corretto/corretto-11/issues/129
+    from(jdkResultingImage) {
+        include 'legal/**'
+        fileMode = 0444
+    }
+    into "amazon-corretto-${project.version.full}-alpine-linux-${arch_alias}"
+}
+
+artifacts {
+    archives packageBuildResults
+}
