Skip to content

Commit b94356b

Browse files
committed
JPERF-445: Support sudo and Docker in Docker
Augment the vast `docker-java` lib rather than hiding it under our layers. Drop `testcontainers` in favor of the underlying `docker-java` API. Use `com.atlassian.performance.tools:ssh` for more interoperability. This new API is already tested in `virtual-users` (merged for weeks) and locally in `infrastructure` (tested tens of times today).
1 parent 8ddc9fd commit b94356b

31 files changed

+694
-374
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,15 @@ Dropping a requirement of a major version of a dependency is a new contract.
2323
## [Unreleased]
2424
[Unreleased]: https://github.com/atlassian/ssh-ubuntu/compare/master...release-0.1.0
2525

26+
### Removed
27+
- Remove `SshUbuntu`.
28+
29+
### Added
30+
- Add `SudoSshUbuntuImage`. Resolve [JPERF-445].
31+
- Add `AutoCloseable` wrappers for some `docker-java` resources.
32+
33+
[JPERF-445]: https://ecosystem.atlassian.net/browse/JPERF-445
34+
2635
## [0.1.0] - 2019-02-15
2736
[0.1.0]: https://github.com/atlassian/ssh-ubuntu/compare/release-0.1.0...initial-commit
2837

README.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
[![Build Status](https://travis-ci.com/atlassian/ssh-ubuntu.svg?branch=master)](https://travis-ci.com/atlassian/ssh-ubuntu)
22

3-
# Ssh Ubuntu
3+
# SSH Ubuntu
4+
>>>>>>> bc63cb3... JPERF-445: Support sudo and Docker in Docker
45
5-
Provides SSH to Ubuntu based machine.
6+
Provides SSH to an Ubuntu instance, which can:
7+
* run Docker
8+
* run `sudo`
9+
* connect to containers in a Docker network
10+
11+
Requires Docker.
612

713
## Reporting issues
814

@@ -15,4 +21,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md).
1521

1622
## License
1723
Copyright (c) 2018 Atlassian and others.
18-
Apache 2.0 licensed, see [LICENSE.txt](LICENSE.txt) file.
24+
Apache 2.0 licensed, see [LICENSE.txt](LICENSE.txt) file.

build.gradle.kts

Lines changed: 7 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
2-
import com.bmuschko.gradle.docker.tasks.image.DockerPushImage
3-
import pl.allegro.tech.build.axion.release.OutputCurrentVersionTask
4-
import pl.allegro.tech.build.axion.release.infrastructure.di.GradleAwareContext
5-
61
val kotlinVersion = "1.2.70"
72

83
plugins {
94
kotlin("jvm").version("1.2.70")
10-
id("com.bmuschko.docker-remote-api").version("4.4.0")
115
`java-library`
126
id("com.atlassian.performance.tools.gradle-release").version("0.5.0")
137
}
@@ -18,7 +12,11 @@ configurations.all {
1812
failOnVersionConflict()
1913
eachDependency {
2014
when (requested.module.toString()) {
21-
"org.jetbrains:annotations" -> useVersion("13.0")
15+
"javax.annotation:javax.annotation-api" -> useVersion("1.3.2")
16+
"org.apache.httpcomponents:httpclient" -> useVersion("4.5.6")
17+
"commons-codec:commons-codec" -> useVersion("1.11")
18+
"org.bouncycastle:bcpkix-jdk15on" -> useVersion("1.60")
19+
"org.bouncycastle:bcprov-jdk15on" -> useVersion("1.60")
2220
"org.slf4j:slf4j-api" -> useVersion("1.7.25")
2321
}
2422
when (requested.group) {
@@ -29,14 +27,14 @@ configurations.all {
2927
}
3028

3129
dependencies {
30+
api("com.atlassian.performance.tools:ssh:[2.0.0,3.0.0)")
31+
api("com.github.docker-java:docker-java:3.1.1")
3232
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion")
33-
implementation("org.testcontainers:testcontainers:1.10.5")
3433
log4j(
3534
"api",
3635
"core",
3736
"slf4j-impl"
3837
).forEach { implementation(it) }
39-
testCompile("com.atlassian.performance.tools:ssh:[2.0.0,3.0.0)")
4038
testCompile("junit:junit:4.12")
4139
testCompile("org.assertj:assertj-core:3.11.1")
4240
}
@@ -51,32 +49,3 @@ tasks.getByName("wrapper", Wrapper::class).apply {
5149
gradleVersion = "5.0"
5250
distributionType = Wrapper.DistributionType.ALL
5351
}
54-
55-
val sshDockerImageName = "atlassian/ssh-ubuntu:${project.version}"
56-
57-
val buildDocker = task<DockerBuildImage>("buildDocker") {
58-
inputDir.set(file("docker"))
59-
tags.add(sshDockerImageName)
60-
}
61-
62-
val pushDocker = task<DockerPushImage>("pushDocker") {
63-
dependsOn(buildDocker)
64-
this.imageName.set(sshDockerImageName)
65-
this.registryCredentials.username.set(System.getenv("DOCKER_USERNAME"))
66-
this.registryCredentials.password.set(System.getenv("DOCKER_PASSWORD"))
67-
}
68-
69-
val generateProperties = task<Task>("generateProperties") {
70-
dependsOn(tasks["processResources"])
71-
doLast {
72-
File("$buildDir/resources/main/app.properties").bufferedWriter().use { writer ->
73-
mapOf("version" to project.version.toString())
74-
.toProperties()
75-
.store(writer,null)
76-
}
77-
}
78-
}
79-
80-
tasks["publish"].dependsOn(pushDocker)
81-
tasks["classes"].dependsOn(generateProperties)
82-
tasks["build"].dependsOn(buildDocker)

docker/Dockerfile

Lines changed: 0 additions & 3 deletions
This file was deleted.

docker/authorized_keys

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,69 @@
11
# This is a Gradle generated file for dependency locking.
22
# Manual edits can break the build and are not advised.
33
# This file is expected to be part of source control.
4+
com.atlassian.performance.tools:io:1.2.0
5+
com.atlassian.performance.tools:jvm-tasks:1.0.0
6+
com.atlassian.performance.tools:ssh:2.2.0
7+
com.fasterxml.jackson.core:jackson-annotations:2.9.0
8+
com.fasterxml.jackson.core:jackson-core:2.9.7
9+
com.fasterxml.jackson.core:jackson-databind:2.9.7
10+
com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.9.7
11+
com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.9.7
12+
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.7
13+
com.github.docker-java:docker-java:3.1.1
14+
com.google.guava:guava:19.0
15+
com.hierynomus:sshj:0.23.0
16+
com.jcraft:jzlib:1.1.3
17+
com.kohlschutter.junixsocket:junixsocket-common:2.0.4
18+
com.kohlschutter.junixsocket:junixsocket-native-common:2.0.4
19+
commons-codec:commons-codec:1.11
20+
commons-io:commons-io:2.6
21+
commons-lang:commons-lang:2.6
22+
commons-logging:commons-logging:1.2
23+
io.netty:netty-buffer:4.1.31.Final
24+
io.netty:netty-codec-http:4.1.31.Final
25+
io.netty:netty-codec-socks:4.1.31.Final
26+
io.netty:netty-codec:4.1.31.Final
27+
io.netty:netty-common:4.1.31.Final
28+
io.netty:netty-handler-proxy:4.1.31.Final
29+
io.netty:netty-handler:4.1.31.Final
30+
io.netty:netty-resolver:4.1.31.Final
31+
io.netty:netty-transport-native-epoll:4.1.31.Final
32+
io.netty:netty-transport-native-kqueue:4.1.31.Final
33+
io.netty:netty-transport-native-unix-common:4.1.31.Final
34+
io.netty:netty-transport:4.1.31.Final
35+
javax.annotation:javax.annotation-api:1.3.2
36+
javax.inject:javax.inject:1
37+
javax.ws.rs:javax.ws.rs-api:2.1
38+
log4j:log4j:1.2.17
39+
net.i2p.crypto:eddsa:0.2.0
40+
org.apache.commons:commons-compress:1.18
41+
org.apache.httpcomponents:httpclient:4.5.6
42+
org.apache.httpcomponents:httpcore:4.4.10
43+
org.apache.logging.log4j:log4j-api:2.10.0
44+
org.apache.logging.log4j:log4j-core:2.10.0
45+
org.apache.logging.log4j:log4j-slf4j-impl:2.10.0
46+
org.bouncycastle:bcpkix-jdk15on:1.60
47+
org.bouncycastle:bcprov-jdk15on:1.60
48+
org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b42
49+
org.glassfish.hk2.external:javax.inject:2.5.0-b42
50+
org.glassfish.hk2:hk2-api:2.5.0-b42
51+
org.glassfish.hk2:hk2-locator:2.5.0-b42
52+
org.glassfish.hk2:hk2-utils:2.5.0-b42
53+
org.glassfish.hk2:osgi-resource-locator:1.0.1
54+
org.glassfish.jersey.connectors:jersey-apache-connector:2.27
55+
org.glassfish.jersey.core:jersey-client:2.27
56+
org.glassfish.jersey.core:jersey-common:2.27
57+
org.glassfish.jersey.inject:jersey-hk2:2.27
58+
org.glassfish:javax.json:1.1
59+
org.javassist:javassist:3.22.0-CR2
60+
org.jetbrains.kotlin:kotlin-stdlib-common:1.2.70
61+
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.70
62+
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.70
63+
org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.70
64+
org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.70
65+
org.jetbrains.kotlin:kotlin-stdlib:1.2.70
66+
org.jetbrains:annotations:13.0
67+
org.scijava:native-lib-loader:2.0.2
68+
org.slf4j:jcl-over-slf4j:1.7.25
69+
org.slf4j:slf4j-api:1.7.25

gradle/dependency-locks/compileClasspath.lockfile

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,69 @@
11
# This is a Gradle generated file for dependency locking.
22
# Manual edits can break the build and are not advised.
33
# This file is expected to be part of source control.
4+
com.atlassian.performance.tools:io:1.2.0
5+
com.atlassian.performance.tools:jvm-tasks:1.0.0
6+
com.atlassian.performance.tools:ssh:2.2.0
7+
com.fasterxml.jackson.core:jackson-annotations:2.9.0
8+
com.fasterxml.jackson.core:jackson-core:2.9.7
9+
com.fasterxml.jackson.core:jackson-databind:2.9.7
10+
com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.9.7
11+
com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.9.7
12+
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.7
13+
com.github.docker-java:docker-java:3.1.1
14+
com.google.guava:guava:19.0
15+
com.hierynomus:sshj:0.23.0
16+
com.jcraft:jzlib:1.1.3
417
com.kohlschutter.junixsocket:junixsocket-common:2.0.4
518
com.kohlschutter.junixsocket:junixsocket-native-common:2.0.4
6-
javax.activation:javax.activation-api:1.2.0
19+
commons-codec:commons-codec:1.11
20+
commons-io:commons-io:2.6
21+
commons-lang:commons-lang:2.6
22+
commons-logging:commons-logging:1.2
23+
io.netty:netty-buffer:4.1.31.Final
24+
io.netty:netty-codec-http:4.1.31.Final
25+
io.netty:netty-codec-socks:4.1.31.Final
26+
io.netty:netty-codec:4.1.31.Final
27+
io.netty:netty-common:4.1.31.Final
28+
io.netty:netty-handler-proxy:4.1.31.Final
29+
io.netty:netty-handler:4.1.31.Final
30+
io.netty:netty-resolver:4.1.31.Final
31+
io.netty:netty-transport-native-epoll:4.1.31.Final
32+
io.netty:netty-transport-native-kqueue:4.1.31.Final
33+
io.netty:netty-transport-native-unix-common:4.1.31.Final
34+
io.netty:netty-transport:4.1.31.Final
735
javax.annotation:javax.annotation-api:1.3.2
8-
javax.xml.bind:jaxb-api:2.3.1
9-
junit:junit:4.12
10-
net.java.dev.jna:jna-platform:5.2.0
11-
net.java.dev.jna:jna:5.2.0
36+
javax.inject:javax.inject:1
37+
javax.ws.rs:javax.ws.rs-api:2.1
38+
log4j:log4j:1.2.17
39+
net.i2p.crypto:eddsa:0.2.0
1240
org.apache.commons:commons-compress:1.18
41+
org.apache.httpcomponents:httpclient:4.5.6
42+
org.apache.httpcomponents:httpcore:4.4.10
1343
org.apache.logging.log4j:log4j-api:2.10.0
1444
org.apache.logging.log4j:log4j-core:2.10.0
1545
org.apache.logging.log4j:log4j-slf4j-impl:2.10.0
16-
org.hamcrest:hamcrest-core:1.3
46+
org.bouncycastle:bcpkix-jdk15on:1.60
47+
org.bouncycastle:bcprov-jdk15on:1.60
48+
org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b42
49+
org.glassfish.hk2.external:javax.inject:2.5.0-b42
50+
org.glassfish.hk2:hk2-api:2.5.0-b42
51+
org.glassfish.hk2:hk2-locator:2.5.0-b42
52+
org.glassfish.hk2:hk2-utils:2.5.0-b42
53+
org.glassfish.hk2:osgi-resource-locator:1.0.1
54+
org.glassfish.jersey.connectors:jersey-apache-connector:2.27
55+
org.glassfish.jersey.core:jersey-client:2.27
56+
org.glassfish.jersey.core:jersey-common:2.27
57+
org.glassfish.jersey.inject:jersey-hk2:2.27
58+
org.glassfish:javax.json:1.1
59+
org.javassist:javassist:3.22.0-CR2
1760
org.jetbrains.kotlin:kotlin-stdlib-common:1.2.70
1861
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.70
1962
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.70
63+
org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.70
64+
org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.70
2065
org.jetbrains.kotlin:kotlin-stdlib:1.2.70
2166
org.jetbrains:annotations:13.0
22-
org.rnorth.duct-tape:duct-tape:1.0.7
23-
org.rnorth.visible-assertions:visible-assertions:2.1.2
24-
org.rnorth:tcp-unix-socket-proxy:1.0.2
2567
org.scijava:native-lib-loader:2.0.2
68+
org.slf4j:jcl-over-slf4j:1.7.25
2669
org.slf4j:slf4j-api:1.7.25
27-
org.testcontainers:testcontainers:1.10.5

gradle/dependency-locks/default.lockfile

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,69 @@
11
# This is a Gradle generated file for dependency locking.
22
# Manual edits can break the build and are not advised.
33
# This file is expected to be part of source control.
4+
com.atlassian.performance.tools:io:1.2.0
5+
com.atlassian.performance.tools:jvm-tasks:1.0.0
6+
com.atlassian.performance.tools:ssh:2.2.0
7+
com.fasterxml.jackson.core:jackson-annotations:2.9.0
8+
com.fasterxml.jackson.core:jackson-core:2.9.7
9+
com.fasterxml.jackson.core:jackson-databind:2.9.7
10+
com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.9.7
11+
com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.9.7
12+
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.7
13+
com.github.docker-java:docker-java:3.1.1
14+
com.google.guava:guava:19.0
15+
com.hierynomus:sshj:0.23.0
16+
com.jcraft:jzlib:1.1.3
417
com.kohlschutter.junixsocket:junixsocket-common:2.0.4
518
com.kohlschutter.junixsocket:junixsocket-native-common:2.0.4
6-
javax.activation:javax.activation-api:1.2.0
19+
commons-codec:commons-codec:1.11
20+
commons-io:commons-io:2.6
21+
commons-lang:commons-lang:2.6
22+
commons-logging:commons-logging:1.2
23+
io.netty:netty-buffer:4.1.31.Final
24+
io.netty:netty-codec-http:4.1.31.Final
25+
io.netty:netty-codec-socks:4.1.31.Final
26+
io.netty:netty-codec:4.1.31.Final
27+
io.netty:netty-common:4.1.31.Final
28+
io.netty:netty-handler-proxy:4.1.31.Final
29+
io.netty:netty-handler:4.1.31.Final
30+
io.netty:netty-resolver:4.1.31.Final
31+
io.netty:netty-transport-native-epoll:4.1.31.Final
32+
io.netty:netty-transport-native-kqueue:4.1.31.Final
33+
io.netty:netty-transport-native-unix-common:4.1.31.Final
34+
io.netty:netty-transport:4.1.31.Final
735
javax.annotation:javax.annotation-api:1.3.2
8-
javax.xml.bind:jaxb-api:2.3.1
9-
junit:junit:4.12
10-
net.java.dev.jna:jna-platform:5.2.0
11-
net.java.dev.jna:jna:5.2.0
36+
javax.inject:javax.inject:1
37+
javax.ws.rs:javax.ws.rs-api:2.1
38+
log4j:log4j:1.2.17
39+
net.i2p.crypto:eddsa:0.2.0
1240
org.apache.commons:commons-compress:1.18
41+
org.apache.httpcomponents:httpclient:4.5.6
42+
org.apache.httpcomponents:httpcore:4.4.10
1343
org.apache.logging.log4j:log4j-api:2.10.0
1444
org.apache.logging.log4j:log4j-core:2.10.0
1545
org.apache.logging.log4j:log4j-slf4j-impl:2.10.0
16-
org.hamcrest:hamcrest-core:1.3
46+
org.bouncycastle:bcpkix-jdk15on:1.60
47+
org.bouncycastle:bcprov-jdk15on:1.60
48+
org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b42
49+
org.glassfish.hk2.external:javax.inject:2.5.0-b42
50+
org.glassfish.hk2:hk2-api:2.5.0-b42
51+
org.glassfish.hk2:hk2-locator:2.5.0-b42
52+
org.glassfish.hk2:hk2-utils:2.5.0-b42
53+
org.glassfish.hk2:osgi-resource-locator:1.0.1
54+
org.glassfish.jersey.connectors:jersey-apache-connector:2.27
55+
org.glassfish.jersey.core:jersey-client:2.27
56+
org.glassfish.jersey.core:jersey-common:2.27
57+
org.glassfish.jersey.inject:jersey-hk2:2.27
58+
org.glassfish:javax.json:1.1
59+
org.javassist:javassist:3.22.0-CR2
1760
org.jetbrains.kotlin:kotlin-stdlib-common:1.2.70
1861
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.70
1962
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.70
63+
org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.70
64+
org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.70
2065
org.jetbrains.kotlin:kotlin-stdlib:1.2.70
2166
org.jetbrains:annotations:13.0
22-
org.rnorth.duct-tape:duct-tape:1.0.7
23-
org.rnorth.visible-assertions:visible-assertions:2.1.2
24-
org.rnorth:tcp-unix-socket-proxy:1.0.2
2567
org.scijava:native-lib-loader:2.0.2
68+
org.slf4j:jcl-over-slf4j:1.7.25
2669
org.slf4j:slf4j-api:1.7.25
27-
org.testcontainers:testcontainers:1.10.5

0 commit comments

Comments
 (0)