Skip to content

Commit

Permalink
chore: docker image & build script upgrades
Browse files Browse the repository at this point in the history
  • Loading branch information
dbolotin committed Jul 9, 2022
1 parent 62f41d0 commit 91451e3
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 22 deletions.
27 changes: 13 additions & 14 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ jobs:
needs:
- init

uses: milaboratory/github-ci/.github/workflows/java-gradle-app.yaml@v2
uses: milaboratory/github-ci/.github/workflows/java-gradle.yaml@v2
with:
# Environment
java-version: '8'
app-name: MiXCR
app-name-slug: 'mixcr'
java-version: '11'
product-name: MiXCR
product-name-slug: 'mixcr'

# Tests
test-unit: true
Expand All @@ -50,15 +50,17 @@ jobs:
test-integration-cache-key: 'tests-sequences-v1'

# Distribution
dist-docker: false
dist-archive: ${{ github.event_name != 'schedule' }}
dist-archive-tasks: 'distributionZip'
dist-archive-paths: './distributions/*.zip'
dist-archive-tasks: distributionZip
dist-archive-paths: ./distributions/mixcr*.zip
dist-archive-s3: true
dist-archive-s3-add-sha: true

# Release to S3
release-to-s3: ${{ github.event_name != 'schedule' }}
release-s3-add-version: true
release-s3-add-sha: ${{ fromJSON(needs.init.outputs.is-release) && 'false' || '8' }}
dist-docker: true
dist-docker-tasks: |
buildDockerImage
buildIMGTDockerImage
dist-docker-image-name: mixcr

# Send notifications
notify-telegram: true
Expand All @@ -71,9 +73,6 @@ jobs:
miRepoAccessKeyId=${{ secrets.AWS_CI_ACCESS_KEY_ID }}
miRepoSecretAccessKey= ${{ secrets.AWS_CI_SECRET_ACCESS_KEY }}
miGitHubMavenUser=${{ github.actor }}
miGitHubMavenToken=${{ secrets.GITHUB_TOKEN }}
AWS_KEY_ID: ${{ secrets.AWS_CI_ACCESS_KEY_ID }}
AWS_KEY_SECRET: ${{ secrets.AWS_CI_SECRET_ACCESS_KEY }}

Expand Down
73 changes: 70 additions & 3 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
import com.bmuschko.gradle.docker.tasks.image.Dockerfile
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import com.palantir.gradle.gitversion.VersionDetails
import de.undercouch.gradle.tasks.download.Download
import groovy.lang.Closure
import org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL
import java.net.InetAddress
Expand All @@ -25,6 +28,8 @@ plugins {
id("org.jetbrains.kotlin.plugin.dataframe") version "0.8.0-rc-8"
id("com.palantir.git-version") version "0.13.0" // don't upgrade, latest version that runs on Java 8
id("com.github.johnrengelman.shadow") version "7.1.2"
id("com.bmuschko.docker-java-application") version "7.4.0"
id("de.undercouch.download") version "5.1.0"
}
// Make IDE aware of the generated code:
kotlin.sourceSets.getByName("main").kotlin.srcDir("build/generated/ksp/main/kotlin/")
Expand All @@ -46,6 +51,9 @@ val isRelease = boolProperty("mi-release")

val longTests: String? by project
val miCiStage = properties["mi-ci-stage"] as String?

group = "com.milaboratory"
version = if (version != "unspecified") version else ""
description = "MiXCR"

java {
Expand Down Expand Up @@ -81,8 +89,8 @@ repositories {
}

val milibVersion = "2.0.0-3-master"
val repseqioVersion = "1.4.0-5-master"
val mitoolVersion = "1.1.0-2-main"
val repseqioVersion = "1.4.1-1-master"
val mitoolVersion = "1.1.0-9-main"
val miplotsVersion = "1.0.0-12-master"
val jacksonBomVersion = "2.13.3"

Expand Down Expand Up @@ -152,8 +160,67 @@ val distributionZip by tasks.registering(Zip::class) {
from(shadowJar) {
rename("-.*\\.jar", "\\.jar")
}
from("${project.rootDir}/mixcr")
from("${project.rootDir}/${project.name}")
from("${project.rootDir}/LICENSE")
}

val prepareDockerContext by tasks.registering(Copy::class) {
group = "docker"
from(shadowJar) {
rename("-.*\\.jar", "\\.jar")
}
from("${project.rootDir}/${project.name}")
from("${project.rootDir}/LICENSE")
into(layout.buildDirectory.dir("docker"))
}

val prepareIMGTDockerContext by tasks.registering(Download::class) {
group = "docker"
dependsOn(prepareDockerContext)
src("https://github.com/repseqio/library-imgt/releases/download/v8/imgt.202214-2.sv8.json.gz")
dest(layout.buildDirectory.dir("docker"))
}

val commonDockerContents: Dockerfile.() -> Unit = {
from("eclipse-temurin:17-jre")
label(mapOf("maintainer" to "MiLaboratories Inc <support@milaboratories.com>"))
workingDir("/data")
runCommand("mkdir /opt/${project.name}")
environmentVariable("PATH", "/opt/${project.name}:\${PATH}")
copyFile("LICENSE", "/opt/${project.name}/LICENSE")
copyFile(project.name, "/opt/${project.name}/${project.name}")
entryPoint(project.name)
copyFile("${project.name}.jar", "/opt/${project.name}/${project.name}.jar")
}

val createDockerfile by tasks.registering(Dockerfile::class) {
group = "docker"
dependsOn(prepareDockerContext)
commonDockerContents()
}

val imgtDockerfile = layout.buildDirectory.file("docker/Dockerfile.imgt")

val createIMGTDockerfile by tasks.registering(Dockerfile::class) {
group = "docker"
dependsOn(createDockerfile)
dependsOn(prepareIMGTDockerContext)
destFile.set(imgtDockerfile)
commonDockerContents()
copyFile("imgt*", "/opt/${project.name}/")
}

val buildDockerImage by tasks.registering(DockerBuildImage::class) {
group = "docker"
dependsOn(createDockerfile)
images.set(setOf(project.name) + if (version == "") emptySet() else setOf("${project.name}:${version}"))
}

val buildIMGTDockerImage by tasks.registering(DockerBuildImage::class) {
group = "docker"
dependsOn(createIMGTDockerfile)
dockerFile.set(imgtDockerfile)
images.set(setOf(project.name + ":latest-imgt") + if (version == "") emptySet() else setOf("${project.name}:${version}-imgt"))
}

publishing {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,7 @@
import gnu.trove.list.array.TIntArrayList;
import picocli.CommandLine;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.function.IntFunction;
import java.util.function.ToIntFunction;

Expand Down Expand Up @@ -153,7 +150,8 @@ public void run1() throws Exception {
OutputPort<NSequenceWithQuality[]> cInput = CUtils.wrap(mainReader, mapper);

// Running correction
correctionResult = corrector.correct(cInput, tagNames, mainReader);
// TODO Collections.EMPTY_MAP -> presets
correctionResult = corrector.correct(cInput, tagNames, Collections.EMPTY_MAP, mainReader);
report = corrector.getReport();
} else {
correctionResult = null;
Expand Down

0 comments on commit 91451e3

Please sign in to comment.