Skip to content

Commit 448c026

Browse files
authored
Add ability to publish to private maven repository (#43)
* Add updated version plugin which applies to all subprojects * Remove use of all deprecated properties * Add ability to publish artifacts to private maven repository * Update TravisCI configuration to handle publishing artifacts
1 parent f6ac1db commit 448c026

File tree

5 files changed

+85
-21
lines changed

5 files changed

+85
-21
lines changed

.travis.yml

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@ jdk:
44
- openjdk-ea
55
env:
66
global:
7-
# Following encrypted environment variables must be present for successful deployment
8-
# DEV_ACCOUNT_ID,DEV_ACCESS_KEY_ID,DEV_SECRET_ACCESS_KEY
9-
# PROD_ACCOUNT_ID,PROD_ACCESS_KEY_ID,PROD_SECRET_ACCESS_KEY
107
- AWS_DEFAULT_REGION=
118
- ECR_REPOSITORY_NAME=
9+
# The following environment variables must be encrypted for successful deployment
10+
- AWS_ACCESS_KEY_ID=
11+
- AWS_SECRET_ACCESS_KEY=
12+
- DEV_AWS_ACCOUNT_ID=
13+
- DEV_AWS_ACCESS_KEY_ID=
14+
- DEV_AWS_SECRET_ACCESS_KEY=
15+
- PROD_AWS_ACCOUNT_ID=
16+
- PROD_AWS_ACCESS_KEY_ID=
17+
- PROD_AWS_SECRET_ACCESS_KEY=
1218
before_install:
1319
- pip install --user pip --upgrade
1420
- pip install --user awscli --upgrade
@@ -26,15 +32,19 @@ jobs:
2632
- stage: test
2733
after_success:
2834
- ./gradlew sonarqube
35+
- stage: publish artifacts
36+
if: env(AWS_ACCESS_KEY_ID) IS NOT blank AND env(AWS_SECRET_ACCESS_KEY) IS NOT blank
37+
jdk: openjdk11
38+
script: ./gradlew publish
2939
- stage: deploy to development
30-
if: env(DEV_ACCOUNT_ID) is present
40+
if: env(DEV_AWS_ACCOUNT_ID) IS NOT blank AND env(DEV_AWS_ACCESS_KEY_ID) IS NOT blank
3141
jdk: openjdk11
3242
env:
3343
- CLUSTER_NAME=
3444
- SERVICE_NAME=
35-
- AWS_ACCESS_KEY_ID=$DEV_ACCESS_KEY_ID
36-
- AWS_SECRET_ACCESS_KEY=$DEV_SECRET_ACCESS_KEY
37-
- REPOSITORY_URI=$DEV_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_REPOSITORY_NAME
45+
- AWS_ACCESS_KEY_ID=$DEV_AWS_ACCESS_KEY_ID
46+
- AWS_SECRET_ACCESS_KEY=$DEV_AWS_SECRET_ACCESS_KEY
47+
- REPOSITORY_URI=$DEV_AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_REPOSITORY_NAME
3848
script: skip
3949
before_deploy: deployment/scripts/common/push-docker-image.sh
4050
deploy:
@@ -44,14 +54,14 @@ jobs:
4454
on:
4555
branch: master
4656
- stage: deploy to production
47-
if: env(PROD_ACCOUNT_ID) is present
57+
if: env(PROD_AWS_ACCOUNT_ID) IS NOT blank AND env(PROD_AWS_SECRET_ACCESS_KEY) IS NOT blank
4858
jdk: openjdk11
4959
env:
5060
- CLUSTER_NAME=
5161
- SERVICE_NAME=
52-
- AWS_ACCESS_KEY_ID=$PROD_ACCESS_KEY_ID
53-
- AWS_SECRET_ACCESS_KEY=$PROD_SECRET_ACCESS_KEY
54-
- REPOSITORY_URI=$PROD_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_REPOSITORY_NAME
62+
- AWS_ACCESS_KEY_ID=$PROD_AWS_ACCESS_KEY_ID
63+
- AWS_SECRET_ACCESS_KEY=$PROD_AWS_SECRET_ACCESS_KEY
64+
- REPOSITORY_URI=$PROD_AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$ECR_REPOSITORY_NAME
5565
script: skip
5666
before_deploy: deployment/scripts/common/push-docker-image.sh
5767
deploy:

build.gradle

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@ plugins {
33
id 'idea'
44
id "org.sonarqube" version "2.7" apply false
55
id "com.github.spotbugs" version "1.6.9" apply false
6+
id "com.bnc.gradle.travis-ci-versioner" version "1.0.6"
7+
}
8+
9+
ext {
10+
awsAccessKeyId = hasProperty('AWS_ACCESS_KEY_ID') ? AWS_ACCESS_KEY_ID : System.getenv('AWS_ACCESS_KEY_ID')
11+
awsSecretAccessKey = hasProperty('AWS_SECRET_ACCESS_KEY') ? AWS_SECRET_ACCESS_KEY : System.getenv('AWS_SECRET_ACCESS_KEY')
12+
}
13+
14+
travisVersioner {
15+
major 0
16+
minor 0
617
}
718

819
allprojects {
@@ -13,14 +24,20 @@ allprojects {
1324
apply plugin: 'org.sonarqube'
1425

1526
group = 'com.bnc'
16-
version = '0.0.1-SNAPSHOT'
1727
sourceCompatibility = JavaVersion.VERSION_11
1828
targetCompatibility = JavaVersion.VERSION_11
1929
compileJava.options.encoding = "UTF-8"
2030

2131
repositories {
2232
mavenCentral()
2333
jcenter()
34+
maven {
35+
url "s3://artifact.bravenewcoin.com.s3-website-us-west-2.amazonaws.com/maven/release"
36+
credentials(AwsCredentials) {
37+
accessKey "${awsAccessKeyId}"
38+
secretKey "${awsSecretAccessKey}"
39+
}
40+
}
2441
}
2542

2643
spotbugs {

client/build.gradle

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,27 @@
1+
plugins {
2+
id 'maven-publish'
3+
}
4+
15
jar {
2-
baseName = rootProject.name + "-" + project.name
6+
archivesBaseName = rootProject.name + "-" + project.name
7+
}
8+
9+
publishing {
10+
publications {
11+
mavenJava(MavenPublication) {
12+
from components.java
13+
}
14+
}
15+
16+
repositories {
17+
maven {
18+
url "s3://artifact.bravenewcoin.com/maven/${project.version.endsWith('-SNAPSHOT') ? 'snapshot' : 'release'}"
19+
credentials(AwsCredentials) {
20+
accessKey "${awsAccessKeyId}"
21+
secretKey "${awsSecretAccessKey}"
22+
}
23+
}
24+
}
325
}
426

527
sonarqube {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.bnc.sbjb;
2+
3+
public class HelloWorld {
4+
5+
private final String name;
6+
7+
public HelloWorld(String name) {
8+
this.name = name;
9+
}
10+
11+
@Override
12+
public String toString() {
13+
return String.format("Hello %s", name);
14+
}
15+
}

service/build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
plugins {
22
id "org.springframework.boot" version "2.1.4.RELEASE"
33
id "io.spring.dependency-management" version "1.0.7.RELEASE"
4-
id "com.palantir.docker" version "0.21.0"
4+
id "com.palantir.docker" version "0.22.0"
55
id "com.gorylenko.gradle-git-properties" version "2.0.0"
66
}
77

88
jar {
9-
baseName = rootProject.name + "-" + project.name
9+
archivesBaseName = rootProject.name + "-" + project.name
1010
}
1111

1212
springBoot {
@@ -22,18 +22,18 @@ sonarqube {
2222
}
2323

2424
if (!project.hasProperty("REPOSITORY_URI")) {
25-
ext.REPOSITORY_URI = jar.baseName
25+
ext.REPOSITORY_URI = jar.archiveBaseName.getOrNull()
2626
}
2727

2828
if (!project.hasProperty("TAG")) {
29-
ext.TAG = jar.version
29+
ext.TAG = jar.archiveVersion.getOrNull()
3030
}
3131

3232
docker {
33-
name "${REPOSITORY_URI}"
34-
tags "${TAG}", 'latest'
35-
files bootJar.archivePath, "${project.projectDir.absolutePath}/config/newrelic/newrelic.yml"
36-
buildArgs(['JAR_FILE': "${bootJar.archiveName}"])
33+
name "${REPOSITORY_URI}:latest"
34+
tag "version", "${REPOSITORY_URI}:${TAG}"
35+
files bootJar.archiveFile.getOrNull(), "${project.projectDir.absolutePath}/config/newrelic/newrelic.yml"
36+
buildArgs(['JAR_FILE': "${bootJar.archiveFileName.getOrNull()}"])
3737
}
3838

3939
dependencyManagement {

0 commit comments

Comments
 (0)