Skip to content

Commit da48028

Browse files
authored
build: add CI release (#13)
* Update group to com.smartling.api to remove namespace conflicts with legacy SDK * Add publishing and signing configuration * Add Maven wrapper * Switch Docker image to official openjdk:11
1 parent 79b52b6 commit da48028

File tree

15 files changed

+911
-20
lines changed

15 files changed

+911
-20
lines changed

.circleci/config.yml

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@ version: 2
22
jobs:
33
test:
44
docker:
5-
- image: smartlingci/javajdk:11
6-
environment:
7-
JAVAOPTIONS: "-Xms512m -Xmx2048m"
5+
- image: openjdk:11
86
steps:
97
- checkout
108
- run:
119
name: Build & Test
12-
command: 'mvn clean test'
10+
command: './mvnw clean test'
1311
- run:
1412
name: Collect Test Results
1513
command: |
@@ -21,15 +19,32 @@ jobs:
2119
docker:
2220
- image: openjdk:11
2321
steps:
22+
- add_ssh_keys:
23+
fingerprints:
24+
- "52:1a:a4:d8:67:65:05:a3:0c:a0:7a:41:3f:90:af:ba"
2425
- checkout
2526
- run:
26-
name: Deploy Artifacts
27+
name: Configure Git
28+
command: |
29+
git config --global user.email "[email protected]"
30+
git config --global user.name "Smartling, Inc."
31+
- run:
32+
name: Import GPG Key
33+
command: gpg --batch --passphrase ${GPG_SIGNING_PASSWORD} --import .circleci/gpg.key.txt
34+
- run:
35+
name: Release
2736
command: |
28-
git config --global user.name "Continuous integration"
29-
git config --global user.email "[email protected]"
37+
gpg --no-tty --batch --pinentry-mode loopback --passphrase ${GPG_SIGNING_PASSWORD} --clear-sign pom.xml
38+
./.circleci/release.sh
3039
3140
workflows:
3241
version: 2
33-
check:
42+
build_and_release:
3443
jobs:
3544
- test
45+
- deploy:
46+
requires:
47+
- test
48+
filters:
49+
branches:
50+
only: master

.circleci/gpg.key.txt

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
-----BEGIN PGP PRIVATE KEY BLOCK-----
2+
3+
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
141+
7Bs0ZooaMH/SyFO9CayTI1cQKuPR
142+
=tX9E
143+
-----END PGP PRIVATE KEY BLOCK-----

.circleci/release.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
echo "Checking if we should release"
6+
if ! ./mvnw -Prelease conventional-commits:validate; then
7+
echo "No changes to release"
8+
exit 0
9+
fi
10+
11+
./mvnw -B -Prelease -DskipTests -Darguments='-DskipTests' -s .circleci/settings.xml conventional-commits:version release:prepare
12+
./mvnw -B -DskipTests -Darguments=-DskipTests -s .circleci/settings.xml release:perform

.circleci/settings.xml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
4+
http://maven.apache.org/xsd/settings-1.0.0.xsd">
5+
6+
<activeProfiles>
7+
<activeProfile>gpg</activeProfile>
8+
</activeProfiles>
9+
10+
<profiles>
11+
<profile>
12+
<id>gpg</id>
13+
<properties>
14+
<gpg.passsphrase>${env.GPG_SIGNING_PASSWORD}</gpg.passsphrase>
15+
</properties>
16+
</profile>
17+
</profiles>
18+
19+
<servers>
20+
<server>
21+
<id>sonatype-oss-staging</id>
22+
<username>${env.SONATYPE_USERNAME}</username>
23+
<password>${env.SONATYPE_PASSWORD}</password>
24+
</server>
25+
</servers>
26+
</settings>

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
* text=auto
22
*.java text
33
*.xml text
4+
mvnw.cmd text eol=crlf
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
/*
2+
* Copyright 2007-present the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
import java.net.*;
17+
import java.io.*;
18+
import java.nio.channels.*;
19+
import java.util.Properties;
20+
21+
public class MavenWrapperDownloader {
22+
23+
private static final String WRAPPER_VERSION = "0.5.5";
24+
/**
25+
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
26+
*/
27+
private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
28+
+ WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
29+
30+
/**
31+
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
32+
* use instead of the default one.
33+
*/
34+
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
35+
".mvn/wrapper/maven-wrapper.properties";
36+
37+
/**
38+
* Path where the maven-wrapper.jar will be saved to.
39+
*/
40+
private static final String MAVEN_WRAPPER_JAR_PATH =
41+
".mvn/wrapper/maven-wrapper.jar";
42+
43+
/**
44+
* Name of the property which should be used to override the default download url for the wrapper.
45+
*/
46+
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
47+
48+
public static void main(String args[]) {
49+
System.out.println("- Downloader started");
50+
File baseDirectory = new File(args[0]);
51+
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
52+
53+
// If the maven-wrapper.properties exists, read it and check if it contains a custom
54+
// wrapperUrl parameter.
55+
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
56+
String url = DEFAULT_DOWNLOAD_URL;
57+
if(mavenWrapperPropertyFile.exists()) {
58+
FileInputStream mavenWrapperPropertyFileInputStream = null;
59+
try {
60+
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
61+
Properties mavenWrapperProperties = new Properties();
62+
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
63+
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
64+
} catch (IOException e) {
65+
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
66+
} finally {
67+
try {
68+
if(mavenWrapperPropertyFileInputStream != null) {
69+
mavenWrapperPropertyFileInputStream.close();
70+
}
71+
} catch (IOException e) {
72+
// Ignore ...
73+
}
74+
}
75+
}
76+
System.out.println("- Downloading from: " + url);
77+
78+
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
79+
if(!outputFile.getParentFile().exists()) {
80+
if(!outputFile.getParentFile().mkdirs()) {
81+
System.out.println(
82+
"- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
83+
}
84+
}
85+
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
86+
try {
87+
downloadFileFromURL(url, outputFile);
88+
System.out.println("Done");
89+
System.exit(0);
90+
} catch (Throwable e) {
91+
System.out.println("- Error downloading");
92+
e.printStackTrace();
93+
System.exit(1);
94+
}
95+
}
96+
97+
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
98+
if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
99+
String username = System.getenv("MVNW_USERNAME");
100+
char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
101+
Authenticator.setDefault(new Authenticator() {
102+
@Override
103+
protected PasswordAuthentication getPasswordAuthentication() {
104+
return new PasswordAuthentication(username, password);
105+
}
106+
});
107+
}
108+
URL website = new URL(urlString);
109+
ReadableByteChannel rbc;
110+
rbc = Channels.newChannel(website.openStream());
111+
FileOutputStream fos = new FileOutputStream(destination);
112+
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
113+
fos.close();
114+
rbc.close();
115+
}
116+
117+
}

.mvn/wrapper/maven-wrapper.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2+
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar

0 commit comments

Comments
 (0)