Skip to content

Commit eb28609

Browse files
committed
Added AzureDevOpsUtil and minor refactoring in IosCodesigning classes
1 parent 18f2f31 commit eb28609

File tree

10 files changed

+75
-10
lines changed

10 files changed

+75
-10
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=0.15.4.3-SNAPSHOT
1+
version=0.15.5.0-SNAPSHOT

src/main/java/lv/ctco/scm/gradle/MobilePluginTask.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package lv.ctco.scm.gradle;
22

3+
import lv.ctco.scm.gradle.utils.AzureDevOpsUtil;
34
import lv.ctco.scm.gradle.utils.TeamcityUtil;
45

56
import org.gradle.api.DefaultTask;
@@ -39,6 +40,9 @@ private void printError(String errorMessage) {
3940
getLogger().lifecycle(TeamcityUtil.generateBuildStatusServiceMessage("Execution failed for task "+this.getPath()));
4041
getLogger().lifecycle(TeamcityUtil.generateBuildProblemDescriptionServiceMessage(errorMessage));
4142
}
43+
if (AzureDevOpsUtil.isAzureDevOpsEnvironment()) {
44+
getLogger().lifecycle(AzureDevOpsUtil.generateErrorMessageServiceMessage(errorMessage));
45+
}
4246
}
4347

4448
}

src/main/java/lv/ctco/scm/gradle/android/ProjectInfoTask.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
package lv.ctco.scm.gradle.android;
88

9+
import lv.ctco.scm.gradle.utils.AzureDevOpsUtil;
910
import lv.ctco.scm.gradle.utils.TeamcityUtil;
1011

1112
import org.gradle.api.DefaultTask;
@@ -36,6 +37,9 @@ public void doTaskAction() {
3637
getLogger().lifecycle(TeamcityUtil.generateBuildNumberServiceMessage(buildVersion));
3738
getLogger().lifecycle(TeamcityUtil.generateSetParameterServiceMessage("project.version.iteration", releaseVersion));
3839
}
40+
if (AzureDevOpsUtil.isAzureDevOpsEnvironment()) {
41+
getLogger().lifecycle(AzureDevOpsUtil.generateBuildNumberServiceMessage(buildVersion));
42+
}
3943
}
4044

4145
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package lv.ctco.scm.gradle.utils;
2+
3+
public final class AzureDevOpsUtil {
4+
5+
private AzureDevOpsUtil() {}
6+
7+
public static boolean isAzureDevOpsEnvironment() {
8+
return PropertyUtil.hasEnvironmentProperty("TF_BUILD");
9+
}
10+
11+
public static String generateSetParameterServiceMessage(String parameterName, String parameterValue) {
12+
return "##vso[task.setvariable variable="+parameterName+";isOutput=true]"+parameterValue;
13+
}
14+
15+
public static String generateBuildNumberServiceMessage(String buildNumber) {
16+
return "##vso[build.updatebuildnumber]"+buildNumber;
17+
}
18+
19+
public static String generateErrorMessageServiceMessage(String errorMessageText) {
20+
return "##vso[task.logissue type=error]"+errorMessageText;
21+
}
22+
23+
}

src/main/java/lv/ctco/scm/gradle/utils/ErrorUtil.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ private static void printError(String taskName, String errorMessage) {
2222
logger.lifecycle(TeamcityUtil.generateBuildStatusServiceMessage("Execution failed for task "+taskName));
2323
logger.lifecycle(TeamcityUtil.generateBuildProblemDescriptionServiceMessage(errorMessage));
2424
}
25+
if (AzureDevOpsUtil.isAzureDevOpsEnvironment()) {
26+
logger.lifecycle(AzureDevOpsUtil.generateErrorMessageServiceMessage(errorMessage));
27+
}
2528
}
2629

2730
public static void errorInTask(String taskName, String errorMessage) {

src/main/java/lv/ctco/scm/gradle/xamarin/ProjectInfoTask.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
package lv.ctco.scm.gradle.xamarin;
88

9+
import lv.ctco.scm.gradle.utils.AzureDevOpsUtil;
910
import lv.ctco.scm.gradle.utils.ErrorUtil;
1011
import lv.ctco.scm.mobile.utils.RevisionUtil;
1112
import lv.ctco.scm.gradle.utils.TeamcityUtil;
@@ -60,6 +61,9 @@ public void doTaskAction() {
6061
getLogger().lifecycle(TeamcityUtil.generateBuildNumberServiceMessage(buildVersion));
6162
getLogger().lifecycle(TeamcityUtil.generateSetParameterServiceMessage("project.version.iteration", releaseVersion));
6263
}
64+
if (AzureDevOpsUtil.isAzureDevOpsEnvironment()) {
65+
getLogger().lifecycle(AzureDevOpsUtil.generateBuildNumberServiceMessage(buildVersion));
66+
}
6367
}
6468

6569
}

src/main/java/lv/ctco/scm/gradle/xcode/ProjectInfoTask.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
package lv.ctco.scm.gradle.xcode;
88

9+
import lv.ctco.scm.gradle.utils.AzureDevOpsUtil;
910
import lv.ctco.scm.gradle.utils.ErrorUtil;
1011
import lv.ctco.scm.mobile.utils.PlistUtil;
1112
import lv.ctco.scm.mobile.utils.RevisionUtil;
@@ -64,6 +65,9 @@ public void doTaskAction() {
6465
getLogger().lifecycle(TeamcityUtil.generateBuildNumberServiceMessage(buildVersion));
6566
getLogger().lifecycle(TeamcityUtil.generateSetParameterServiceMessage("project.version.iteration", releaseVersion));
6667
}
68+
if (AzureDevOpsUtil.isAzureDevOpsEnvironment()) {
69+
getLogger().lifecycle(AzureDevOpsUtil.generateBuildNumberServiceMessage(buildVersion));
70+
}
6771
}
6872

6973
}

src/main/java/lv/ctco/scm/gradle/xdeps/XdepsDisplayInfoTask.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
package lv.ctco.scm.gradle.xdeps;
88

9+
import lv.ctco.scm.gradle.utils.AzureDevOpsUtil;
910
import lv.ctco.scm.gradle.utils.TeamcityUtil;
1011
import lv.ctco.scm.mobile.utils.RevisionUtil;
1112
import lv.ctco.scm.mobile.utils.VersionUtil;
@@ -58,6 +59,9 @@ public void doTaskAction() {
5859
getLogger().lifecycle(TeamcityUtil.generateSetParameterServiceMessage("project.xdeps.version.iteration", releaseVersion));
5960
getLogger().lifecycle(TeamcityUtil.generateSetParameterServiceMessage("project.xdeps.version.publish", buildVersion));
6061
}
62+
if (AzureDevOpsUtil.isAzureDevOpsEnvironment()) {
63+
getLogger().lifecycle(AzureDevOpsUtil.generateBuildNumberServiceMessage(buildVersion));
64+
}
6165

6266
List<DefaultMavenArtifactRepository> repositories = XdepsUtil.getMavenRepositories(getProject());
6367
getLogger().info("Detected {} defined Maven publication repositories", repositories.size());

src/main/java/lv/ctco/scm/mobile/utils/IosCodesigningIdentity.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,36 @@
66

77
package lv.ctco.scm.mobile.utils;
88

9+
import java.util.Arrays;
10+
import java.util.List;
11+
912
public class IosCodesigningIdentity {
1013

1114
private String commonName;
1215
private String identityName;
1316
private String identityType;
1417

18+
static final List<String> SUPPORTED_IDENTITY_TYPES = Arrays.asList(
19+
"Apple Distribution", "Apple Developer", "iPhone Distribution", "iPhone Developer"
20+
);
21+
22+
public IosCodesigningIdentity() {}
23+
24+
public IosCodesigningIdentity(String commonName) {
25+
this.commonName = commonName.trim();
26+
if (commonName.contains(":")) {
27+
String identityType = (commonName.trim().split(":")[0]).trim();
28+
if (SUPPORTED_IDENTITY_TYPES.contains(identityType)) {
29+
this.identityType = identityType;
30+
this.identityName = (commonName.split(":")[1]).trim();
31+
} else {
32+
throw new IllegalArgumentException("Unsupported commonName provided to IosCodesigningIdentity");
33+
}
34+
} else {
35+
throw new IllegalArgumentException("Invalid commonName provided to IosCodesigningIdentity");
36+
}
37+
}
38+
1539
public String getCommonName() {
1640
return commonName;
1741
}

src/main/java/lv/ctco/scm/mobile/utils/IosCodesigningUtil.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,16 @@ private IosCodesigningUtil() {}
4646
public static IosCodesigningIdentity getCodesigningIdentity(File appDir) {
4747
ExecCommand execCommand = new ExecCommand(EXECUTABLE_CODESIGN);
4848
execCommand.addArguments(new String[]{COMMAND_DISPLAY, OPTION_VERBOSE_4, appDir.getAbsolutePath()}, false);
49-
IosCodesigningIdentity iosCodesigningIdentity = new IosCodesigningIdentity();
5049
logger.debug("Executing command:{}", execCommand);
5150
ExecResult execResult = ExecUtil.executeCommand(execCommand, new CapturingOutputStream());
5251
if (execResult.isSuccess()) {
5352
for (String line : execResult.getOutput()) {
5453
if (line.trim().startsWith("Authority=")) {
55-
iosCodesigningIdentity.setCommonName(line.replaceFirst("Authority=", ""));
56-
if (iosCodesigningIdentity.getCommonName().startsWith("iPhone Distribution: ")) {
57-
iosCodesigningIdentity.setIdentityType("iPhone Distribution");
58-
iosCodesigningIdentity.setIdentityName(iosCodesigningIdentity.getCommonName().replace("iPhone Distribution: ", ""));
59-
} else if (iosCodesigningIdentity.getCommonName().startsWith("iPhone Developer: ")) {
60-
iosCodesigningIdentity.setIdentityType("iPhone Developer");
61-
iosCodesigningIdentity.setIdentityName(iosCodesigningIdentity.getCommonName().replace("iPhone Developer: ", ""));
54+
String identityType = line.trim().replaceFirst("Authority=", "").split(":")[0];
55+
logger.debug("Found identity type '{}' within signature authorities", identityType);
56+
if (IosCodesigningIdentity.SUPPORTED_IDENTITY_TYPES.contains(identityType)) {
57+
return new IosCodesigningIdentity(line.trim().replaceFirst("Authority=", ""));
6258
}
63-
return iosCodesigningIdentity;
6459
}
6560
}
6661
}

0 commit comments

Comments
 (0)