From fbf25a3d8cff6003cf6f77208277fe7333d04d1c Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Sat, 11 May 2019 16:35:20 -0500 Subject: [PATCH 1/3] Upgrade gradle and deps --- .circleci/config.yml | 66 ++-------------- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 56177 -> 55746 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- gradlew.bat | 2 +- .../compileClasspath.lockfile | 9 ++- .../runtimeClasspath.lockfile | 9 ++- .../testCompileClasspath.lockfile | 65 ++++++++-------- .../testRuntimeClasspath.lockfile | 71 +++++++++--------- .../.stutter/{java9.lock => java11.lock} | 5 +- reckon-gradle/.stutter/java8.lock | 7 +- reckon-gradle/build.gradle | 5 +- .../compatTestCompileClasspath.lockfile | 9 ++- .../compatTestRuntimeClasspath.lockfile | 9 ++- .../compileClasspath.lockfile | 13 ++-- .../runtimeClasspath.lockfile | 17 +++-- .../testCompileClasspath.lockfile | 13 ++-- .../testRuntimeClasspath.lockfile | 17 +++-- 19 files changed, 150 insertions(+), 173 deletions(-) rename reckon-gradle/.stutter/{java9.lock => java11.lock} (67%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 30d33dea..cff8b98a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -8,16 +8,16 @@ defaults: &defaults keys: - v2-gradle-caches-{{ checksum "reckon-core/gradle/dependency-locks/runtimeClasspath.lockfile" }}-{{ checksum "reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile" }} - attach_workspace: - at: '.' + at: "." - run: name: Compile and test command: ./gradlew clean check --continue - save_cache: paths: - - '~/.gradle/caches' + - "~/.gradle/caches" key: v2-gradle-caches-{{ checksum "reckon-core/gradle/dependency-locks/runtimeClasspath.lockfile" }}-{{ checksum "reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile" }} - store_test_results: - path: '~/gradle-test-results' + path: "~/gradle-test-results" when: always branches-and-tags: &branches-and-tags filters: @@ -38,41 +38,14 @@ tags-only: &tags-only ############################################################################### version: 2 jobs: - update-dependencies: - docker: - - image: ajoberstar/circleci-openjdk-gradle:8-jdk - steps: - - checkout - - restore_cache: - keys: - - v2-gradle-caches-{{ checksum "reckon-core/gradle/dependency-locks/runtimeClasspath.lockfile" }}-{{ checksum "reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile" }} - - run: - name: Update locks - command: ./gradlew stutterWriteLocks lock --write-locks - - run: - name: Diff lock files - command: git --no-pager diff - - persist_to_workspace: - root: '.' - paths: - - 'gradle/dependency-locks/' - - '*/gradle/dependency-locks/' - - '*/*/gradle/dependency-locks/' - - '.stutter/' - - '*/.stutter/' - - '*/*/.stutter/' build-java-8: <<: *defaults docker: - image: ajoberstar/circleci-openjdk-gradle:8-jdk - build-java-9: + build-java-11: <<: *defaults docker: - - image: ajoberstar/circleci-openjdk-gradle:9-jdk - build-java-10: - <<: *defaults - docker: - - image: ajoberstar/circleci-openjdk-gradle:10-jdk + - image: ajoberstar/circleci-openjdk-gradle:11-jdk publish: docker: - image: ajoberstar/circleci-openjdk-gradle:8-jdk @@ -96,36 +69,11 @@ workflows: jobs: - build-java-8: <<: *branches-and-tags - - build-java-9: + - build-java-11: <<: *branches-and-tags - requires: - - build-java-8 - - build-java-10: - <<: *branches-and-tags - requires: - - build-java-8 - publish: <<: *tags-only requires: - build-java-8 - - build-java-9 - - build-java-10 + - build-java-11 context: ajoberstar - weekly-deps: - triggers: - - schedule: - cron: "0 8 * * 5" - filters: - branches: - only: master - jobs: - - update-dependencies - - build-java-8: - requires: - - update-dependencies - - build-java-9: - requires: - - build-java-8 - - build-java-10: - requires: - - build-java-8 diff --git a/build.gradle b/build.gradle index a567163c..4035ffa6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'org.ajoberstar.defaults' version '0.12.0' + id 'org.ajoberstar.defaults' version '0.15.1-rc.1' } apply from: 'gradle/locking.gradle' diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 29953ea141f55e3b8fc691d31b5ca8816d89fa87..8c8ba28df4655d0987b800dce5db7403c049e220 100644 GIT binary patch delta 46481 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

d1ZzV`PJaf;LURr$w8USfDLW+{$cK=5Uq0( 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 A!Ty`tdMcmVU|iPucjag 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�?CQdV#sbW)MN)x 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 Date: Sat, 11 May 2019 18:32:11 -0500 Subject: [PATCH 2/3] Fail on invalid increment in Scope.infer When the base normal and base version aren't within 1 major/minor/patch increment, there's something weird going on in the history, because the versions aren't contiguous. This may be something we need to support for parallel development at some point, but right now this makes it more explicit and allows specific use cases to be raised. --- .../java/org/ajoberstar/reckon/core/Scope.java | 12 +++++++----- .../org/ajoberstar/reckon/core/VersionTest.groovy | 14 +++++++++++--- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Scope.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Scope.java index c08bb408..fb679c52 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Scope.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Scope.java @@ -15,7 +15,7 @@ public enum Scope { * literal matches. This method supports mixed case String representations, like Major or minor, * instead of just PATCH. Additionally, it provides a better error message when an invalid scope is * provided. - * + * * @param value the string to parse as a scope * @return the matching scope * @throws IllegalArgumentException if no match was found @@ -38,11 +38,11 @@ public static Scope from(String value) { * normal versions looking for the first difference of 1 that it finds. Anything else is considered * an invalid difference. For example, 1.0.0 to 2.0.0 is MAJOR, 1.0.0 to 1.1.0 is MINOR, 1.0.0 to * 1.0.1 is PATCH, 1.0.0 to 3.0.0 is invalid. - * + * * @param before the earlier version to compare * @param after the later version to compare - * @return the scope of the change between the two versions, or empty if they are the same or have - * an invalid increment + * @return the scope of the change between the two versions, or empty if they are the same + * @throws IllegalStateException if they have an invalid increment */ public static Optional infer(Version before, Version after) { int major = after.getVersion().getMajorVersion() - before.getVersion().getMajorVersion(); @@ -54,8 +54,10 @@ public static Optional infer(Version before, Version after) { return Optional.of(Scope.MINOR); } else if (major == 0 && minor == 0 && patch == 1) { return Optional.of(Scope.PATCH); - } else { + } else if (major == 0 && minor == 0 && patch == 0) { return Optional.empty(); + } else { + throw new IllegalStateException("Scope between bases " + before + " and " + after + " must be same or 1 MAJOR/MINOR/PATCH increment apart and are not. Cannot determine correct action."); } } } diff --git a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/VersionTest.groovy b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/VersionTest.groovy index 1900d48d..b507726f 100644 --- a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/VersionTest.groovy +++ b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/VersionTest.groovy @@ -44,8 +44,16 @@ class VersionTest extends Specification { Scope.infer(Version.valueOf('1.2.3'), Version.valueOf('1.2.4-milestone.1')) == Optional.of(Scope.PATCH) Scope.infer(Version.valueOf('1.2.3'), Version.valueOf('1.3.0-milestone.1')) == Optional.of(Scope.MINOR) Scope.infer(Version.valueOf('1.2.3'), Version.valueOf('2.0.0-milestone.1')) == Optional.of(Scope.MAJOR) - Scope.infer(Version.valueOf('1.2.3'), Version.valueOf('0.4.0')) == Optional.empty() - Scope.infer(Version.valueOf('1.2.3'), Version.valueOf('2.1.0')) == Optional.empty() - Scope.infer(Version.valueOf('1.2.3'), Version.valueOf('1.2.5')) == Optional.empty() + Scope.infer(Version.valueOf('1.2.3'), Version.valueOf('1.2.3')) == Optional.empty() + } + + @Unroll + def 'inferScope fails for invalid increment'(Version after) { + when: + Scope.infer(Version.valueOf('1.2.3'), after) == Optional.empty() + then: + thrown(IllegalStateException) + where: + after << [Version.valueOf('0.4.0'), Version.valueOf('2.1.0'), Version.valueOf('1.2.5')] } } From bf9c66efdeefd6d412017fe6bb312762f87497b9 Mon Sep 17 00:00:00 2001 From: Andrew Oberstar Date: Sat, 11 May 2019 18:34:08 -0500 Subject: [PATCH 3/3] Fixed rebuild behavior with parallel branches In some cases the inferred target normal would be different from the target normal of the final reckoned version. This can cause an issue if you're trying to release an older version and the inferred target normal is a version you already released. The code now verifies the normal version of the final reckoned version, rather than relying on the potentially incorrect target normal. This fixes #108. --- .../org/ajoberstar/reckon/core/Reckoner.java | 18 ++- .../reckon/core/ReckonerIntegTest.groovy | 153 ++++++++++++++++++ 2 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerIntegTest.groovy diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java index 129f34ab..321b7f0e 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java @@ -14,11 +14,15 @@ import java.util.stream.Stream; import org.eclipse.jgit.lib.Repository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Primary interface to Reckon. Use {@code builder} to get to an instance of {@code Reckoner}. */ public final class Reckoner { + private static final Logger logger = LoggerFactory.getLogger(Reckoner.class); + public static final String FINAL_STAGE = "final"; public static final String SNAPSHOT_STAGE = "snapshot"; @@ -47,6 +51,7 @@ private Reckoner(Clock clock, VcsInventorySupplier inventorySupplier, Function 0) { @@ -81,9 +86,11 @@ private Version reckonNormal(VcsInventory inventory) { Scope scope; if (providedScope.isPresent()) { scope = providedScope.get(); + logger.debug("Using provided scope value: {}", scope); } else { Optional inferredScope = Scope.infer(inventory.getBaseNormal(), inventory.getBaseVersion()); scope = inferredScope.orElse(Scope.MINOR); + logger.debug("Inferred scope from base version: {}", scope); } Version targetNormal = inventory.getBaseNormal().incrementNormal(scope); @@ -91,6 +98,7 @@ private Version reckonNormal(VcsInventory inventory) { // if a version's already being developed on a parallel branch we'll skip it if (inventory.getParallelNormals().contains(targetNormal)) { targetNormal = targetNormal.incrementNormal(scope); + logger.debug("Skipping {} as it's being developed on a parallel branch. Incrementing again with {}", targetNormal, scope); } return targetNormal; @@ -109,12 +117,14 @@ private Version reckonTargetVersion(VcsInventory inventory, Version targetNormal } if (FINAL_STAGE.equals(stage)) { + logger.debug("Using final stage."); return targetNormal; } // rebuild behavior if (inventory.isClean() && inventory.getCurrentVersion().isPresent() && stage == null) { Version current = inventory.getCurrentVersion().get(); + logger.debug("Clean repo with current version and no provided stage. Treating as a rebuild of {}.", current); return current; } @@ -123,16 +133,20 @@ private Version reckonTargetVersion(VcsInventory inventory, Version targetNormal int baseStageNum = targetBase.getStage().map(Version.Stage::getNum).orElse(0); if (SNAPSHOT_STAGE.equals(defaultStage)) { + logger.debug("Using snapshot stage."); return Version.valueOf(String.format("%s-%s", targetBase.getNormal(), "SNAPSHOT")); } else if (stage == null) { + logger.debug("No stage provided. Treating as an insignificant version."); String buildMetadata = inventory.getCommitId() .filter(sha -> inventory.isClean()) .orElseGet(() -> DATE_FORMAT.format(ZonedDateTime.now(clock))); return Version.valueOf(String.format("%s-%s.%d.%d+%s", targetBase.getNormal(), baseStageName, baseStageNum, inventory.getCommitsSinceBase(), buildMetadata)); } else if (stage.equals(baseStageName)) { + logger.debug("Provided stage {} is same as in target base {}. Incrementing the stage number.", stage, targetBase); return Version.valueOf(String.format("%s-%s.%d", targetBase.getNormal(), baseStageName, baseStageNum + 1)); } else { + logger.debug("Provided stage {} is different than in target base {}. Starting stage number at 1.", stage, targetBase); return Version.valueOf(String.format("%s-%s.%d", targetBase.getNormal(), stage, 1)); } } diff --git a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerIntegTest.groovy b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerIntegTest.groovy new file mode 100644 index 00000000..20d57fe5 --- /dev/null +++ b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerIntegTest.groovy @@ -0,0 +1,153 @@ +package org.ajoberstar.reckon.core + +import java.time.Clock; +import java.time.Instant; +import java.time.ZoneId; + +import java.nio.file.Files +import java.security.SecureRandom +import org.ajoberstar.grgit.Grgit +import spock.lang.Shared +import spock.lang.Specification +import spock.lang.Ignore + +class ReckonerIntegTest extends Specification { + private static final Clock CLOCK = Clock.fixed(Instant.ofEpochSecond(1530724706), ZoneId.of('UTC')) + private static final String TIMESTAMP = '20180704T171826Z' + + File repoDir + Grgit grgit + SecureRandom random = new SecureRandom() + + def 'rebuild works with parallel branches'() { + given: + def feature1 = commit() + tag('0.1.0') + branch('release-0.1') + def feature2 = commit() + tag('0.2.0-rc.1') + commit() + checkout('release-0.1') + commit() + tag('0.1.1') + + expect: + reckonStage(null, null) == '0.1.1' + checkout('0.1.0') + reckonStage(null, null) == '0.1.0' + checkout('master') + tag('0.2.0') + reckonStage(null, null) == '0.2.0' + checkout('0.1.1') + reckonStage(null, null) == '0.1.1' + checkout('0.1.0') + reckonStage(null, null) == '0.1.0' + } + + @Ignore + def 'multiple release branches'() { + given: + commit() + branch('release/2.0.x') + checkout('release/2.0.x') + commit() + tag('2.0.0') + commit() + tag('2.0.1') + checkout('2.0.0') + branch('release/2.1.x') + checkout('release/2.1.x') + commit() + checkout('2.0.0') + branch('release/3.0.x') + checkout('release/3.0.x') + commit() + tag('3.0.0-dev.0') + commit() + tag('3.0.0-rc.1') + checkout('2.0.0') + branch('release/3.1.x') + checkout('release/3.1.x') + commit() + tag('3.1.0-dev.0') + commit() + + expect: + reckonStage(null, null) == '3.1.0-dev.1.1+20180704T171826Z' + } + + def setup() { + repoDir = Files.createTempDirectory('repo').toFile() + grgit = Grgit.init(dir: repoDir) + } + + def cleanup() { + grgit.close() + assert !repoDir.exists() || repoDir.deleteDir() + } + + private String reckonStage(scope, stage) { + return Reckoner.builder() + .clock(CLOCK) + .git(grgit.repository.jgit.repository) + .scopeCalc { i -> Optional.ofNullable(scope) } + .stages('beta', 'milestone', 'rc', 'final') + .stageCalc { i, v -> Optional.ofNullable(stage) } + .build() + .reckon(); + } + + private String reckonSnapshot(scope, stage) { + return Reckoner.builder() + .clock(CLOCK) + .git(grgit.repository.jgit.repository) + .scopeCalc { i -> Optional.ofNullable(scope) } + .snapshots() + .stageCalc { i, v -> Optional.ofNullable(stage) } + .build() + .reckon(); + } + + private void commit() { + byte[] bytes = new byte[128] + random.nextBytes(bytes) + int fileName = random.nextInt(); + new File(grgit.repository.rootDir, "${fileName}.txt") << bytes + grgit.add(patterns: ["${fileName}.txt"]) + def commit = grgit.commit(message: 'do') + println "Created commit: ${commit.abbreviatedId}" + } + + private void branch(String name) { + def currentHead = grgit.head() + def currentBranch = grgit.branch.current + def newBranch = grgit.branch.add(name: name) + def atCommit = grgit.resolve.toCommit(newBranch.fullName) + println "Added new branch ${name} at ${atCommit.abbreviatedId}" + assert currentBranch == grgit.branch.current + assert currentHead == atCommit + } + + private void tag(String name, boolean annotate = true) { + def currentHead = grgit.head() + def newTag = grgit.tag.add(name: name, annotate: annotate) + def atCommit = grgit.resolve.toCommit(newTag.fullName) + println "Added new tag ${name} at ${atCommit.abbreviatedId}" + assert currentHead == atCommit + } + + private void checkout(String name) { + def currentHead = grgit.head() + grgit.checkout(branch: name) + def atCommit = grgit.resolve.toCommit(name) + println "Checkout out ${name}, which is at ${atCommit.abbreviatedId}" + assert name == grgit.branch.current.name || grgit.branch.current.name == 'HEAD' + } + + private void merge(String name) { + def currentBranch = grgit.branch.current.name + grgit.merge(head: name) + println "Merged ${name} into ${currentBranch}" + assert currentBranch == grgit.branch.current.name + } +}