diff --git a/pom.xml b/pom.xml index 02fa1a4065..f112341dc1 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.alfresco alfresco-governance-services pom - 3.0.0-SNAPSHOT + 3.1.0-SNAPSHOT Alfresco Governance Services http://www.alfresco.org/ diff --git a/rm-automation/pom.xml b/rm-automation/pom.xml index 665e9668bf..8984ae2b6f 100644 --- a/rm-automation/pom.xml +++ b/rm-automation/pom.xml @@ -8,7 +8,7 @@ org.alfresco alfresco-governance-services - 3.0.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/rm-automation/rm-automation-community-rest-api/pom.xml b/rm-automation/rm-automation-community-rest-api/pom.xml index 27eb1e4ae9..20ba6c376f 100644 --- a/rm-automation/rm-automation-community-rest-api/pom.xml +++ b/rm-automation/rm-automation-community-rest-api/pom.xml @@ -8,7 +8,7 @@ org.alfresco alfresco-governance-services-automation - 3.0.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/rm-community/pom.xml b/rm-community/pom.xml index 679fcbc3e4..d1b26aee53 100644 --- a/rm-community/pom.xml +++ b/rm-community/pom.xml @@ -8,7 +8,7 @@ org.alfresco alfresco-governance-services - 3.0.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/rm-community/rm-community-repo/pom.xml b/rm-community/rm-community-repo/pom.xml index 52f23207b0..9e05d0758d 100644 --- a/rm-community/rm-community-repo/pom.xml +++ b/rm-community/rm-community-repo/pom.xml @@ -2,14 +2,14 @@ 4.0.0 alfresco-governance-services-community-repo - Alfresco Governance Services Community Repo - Alfresco Governance Services Community Repository Extension + AGS Repo + Alfresco Governance Services Repository Extension amp org.alfresco alfresco-governance-services-community - 3.0.0-SNAPSHOT + 3.1.0-SNAPSHOT @@ -709,4 +709,4 @@ - + \ No newline at end of file diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/compatibility/ModulePatchComponent.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/compatibility/ModulePatchComponent.java index 92524b0bf2..d9376a9fb6 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/compatibility/ModulePatchComponent.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/compatibility/ModulePatchComponent.java @@ -27,6 +27,8 @@ package org.alfresco.module.org_alfresco_module_rm.patch.compatibility; +import static org.alfresco.repo.module.ModuleVersionNumber.VERSION_ZERO; + import java.io.Serializable; import org.alfresco.module.org_alfresco_module_rm.patch.ModulePatchExecuterImpl; @@ -117,49 +119,63 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent @Override protected void executeInternal() { - ModuleVersionNumber moduleInstalledVersionNumber = getModuleVersionNumber(REGISTRY_PROPERTY_INSTALLED_VERSION); - ModuleVersionNumber moduleCurrentVersionNumber = getModuleVersionNumber(REGISTRY_PROPERTY_CURRENT_VERSION); - - String moduleName = getName(); + //Get the new module version + String moduleId = modulePatchExecuter.getModuleId(); + ModuleVersionNumber moduleNewVersionNumber = moduleService.getModule(moduleId).getModuleVersionNumber(); - if (isVersionLaterThan(moduleInstalledVersionNumber, moduleCurrentVersionNumber)) + // Get the module details from the registry + ModuleVersionNumber moduleCurrentVersionNumber = getModuleVersionNumber(REGISTRY_PROPERTY_CURRENT_VERSION, + moduleId); + // Get the module patch component name + String moduleName = getName(); + if (moduleCurrentVersionNumber.equals(VERSION_ZERO) || + moduleCurrentVersionNumber.equals(moduleNewVersionNumber)) // No previous record of it { - LOGGER.info("Module patch component '{}' is skipped for upgrade from version {} to version {}", - moduleName, moduleInstalledVersionNumber, moduleCurrentVersionNumber); + LOGGER.info("Module patch component '{}' is skipped, no previous version found.", moduleName); } else { - try + if (isVersionLaterThan(moduleCurrentVersionNumber, moduleNewVersionNumber)) { - LOGGER.info("Module patch component '{}' is executing ...", moduleName); - - // execute path within an isolated transaction - retryingTransactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() + LOGGER.info("Module patch component '{}' is skipped for upgrade from version {} to version {}", + moduleName, moduleCurrentVersionNumber, moduleNewVersionNumber); + } + else + { + try { - @Override - public Void execute() + LOGGER.info("Module patch component '{}' is executing ...", moduleName); + + // execute path within an isolated transaction + retryingTransactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() + { - behaviourFilter.disableBehaviour(); - try + @Override + public Void execute() { - executePatch(); + behaviourFilter.disableBehaviour(); + try + { + executePatch(); + } + finally + { + behaviourFilter.enableBehaviour(); + } + return null; } - finally - { - behaviourFilter.enableBehaviour(); - } - return null; - } - }, false, true); + }, false, true); - LOGGER.info(" ... completed module patch '{}'", moduleName); - - } catch (Exception exception) - { - // record the exception otherwise it gets swallowed - LOGGER.info(" ... error encountered. {}", exception.getMessage(), exception); - throw exception; + LOGGER.info(" ... completed module patch '{}'", moduleName); + + } + catch (Exception exception) + { + // record the exception otherwise it gets swallowed + LOGGER.info(" ... error encountered. {}", exception.getMessage(), exception); + throw exception; + } } } } @@ -167,14 +183,21 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent /** * Helper method to get the ModuleVersionNumber. */ - private ModuleVersionNumber getModuleVersionNumber(String registryProperty) + private ModuleVersionNumber getModuleVersionNumber(String registryProperty, String moduleId) { - String moduleId = modulePatchExecuter.getModuleId(); RegistryKey moduleKeyVersion = new RegistryKey(ModuleComponentHelper.URI_MODULES_1_0, new String[]{REGISTRY_PATH_MODULES, moduleId, registryProperty}); Serializable moduleVersion = this.registryService.getProperty(moduleKeyVersion); - - return new ModuleVersionNumber(moduleVersion.toString()); + + if (moduleVersion == null) + { + return VERSION_ZERO; + } + else + { + return new ModuleVersionNumber(moduleVersion.toString()); + } + } /** @@ -182,22 +205,27 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent * patches. * */ - private boolean isVersionLaterThan(ModuleVersionNumber installedModuleVersionNumber, - ModuleVersionNumber currentModuleVersionNumber) + private boolean isVersionLaterThan(ModuleVersionNumber moduleCurrentVersionNumber, + ModuleVersionNumber moduleNewVersionNumber) { // assume that the v2.0 and v2.1 patches should be run boolean versionLaterThan = false; // if this is an upgrade as opposed to a fresh install - if (installedModuleVersionNumber.compareTo(currentModuleVersionNumber) != 0) + if (moduleCurrentVersionNumber.compareTo(moduleNewVersionNumber) < 0) { // if the installed version is later than the minimum version number of this patch ModuleVersionNumber minVersion = this.getAppliesFromVersionNumber(); - if (installedModuleVersionNumber.compareTo(minVersion) >= 0) + if (moduleCurrentVersionNumber.compareTo(minVersion) >= 0) { versionLaterThan = true; } } + // v2.0 and v2.1 patches should not be run when both the current and the new version numbers are equals + else + { + versionLaterThan =true; + } return versionLaterThan; } diff --git a/rm-community/rm-community-rest-api-explorer/pom.xml b/rm-community/rm-community-rest-api-explorer/pom.xml index 764fda6b2b..cda7507d96 100644 --- a/rm-community/rm-community-rest-api-explorer/pom.xml +++ b/rm-community/rm-community-rest-api-explorer/pom.xml @@ -7,7 +7,7 @@ org.alfresco alfresco-governance-services-community - 3.0.0-SNAPSHOT + 3.1.0-SNAPSHOT diff --git a/scripts/cleanImages.sh b/scripts/cleanImages.sh old mode 100644 new mode 100755 diff --git a/scripts/pushDockerDigestTag.sh b/scripts/pushDockerDigestTag.sh new file mode 100755 index 0000000000..876d92dfda --- /dev/null +++ b/scripts/pushDockerDigestTag.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +set -x + +scriptName=`basename "$0"` + +usage="Usage: $scriptName [options] + + -h , --help show this help text + -i a source image to use + (e.g. quay.io/alfresco/ags-share-community) + -r a repository to push new tags to + (e.g. registry.hub.docker.com) + -t the existing tag for the images (mandatory) + -d the length of digest to output (default 12 chars)" + +digestLength=12 + +while getopts ':hi:r:t:d:' option; do + case "$option" in + h) echo -e "Tag one or more images to include the digest and push this to some repositories.\n\n${usage}" + exit + ;; + i) sourceImages+=("$OPTARG") + ;; + r) repositories+=("$OPTARG") + ;; + t) existingTag=$OPTARG + ;; + d) digestLength=$OPTARG + ;; + :) echo -e "Missing argument for -${OPTARG}\n\n${usage}" >&2 + exit 1 + ;; + \?) echo -e "Illegal option: -${OPTARG}\n\n${usage}" >&2 + exit 1 + ;; + esac +done +shift $((OPTIND - 1)) + +if [ "#$existingTag" == "#" ]; then + echo -e "Please supply a tag with the -t option.\n\n${usage}" >&2 + exit 1 +fi + +for sourceImage in ${sourceImages[@]} +do + echo "Processing $sourceImage" + + # Note that this command should work even if the image is already present locally. + digest=`docker pull ${sourceImage}:${existingTag} | grep "Digest:" | awk -F':' '{print $3}' | cut -c 1-$digestLength` + + if [ ${#digest} != $digestLength ] + then + echo "Unexpected length for digest of ${sourceImage}: '${digest}'" >&2 + exit 1 + fi + + newTag=${existingTag}-${digest} + + # Remove the source repository name if it contains one. + slashes=`echo $sourceImage | sed "s|[^/]||g"` + if [ ${#slashes} == 2 ] + then + # The repository name is everything up to the first slash. + image=`echo $sourceImage | sed "s|[^/]*/||"` + else + # Assume the source image doesn't reference the repository name. + image=$sourceImage + fi + + for repository in ${repositories[@]} + do + docker tag ${sourceImage}:${existingTag} ${repository}/${image}:${newTag} + docker push ${repository}/${image}:${newTag} + echo "Pushed ${sourceImage}:${existingTag} to ${repository}/${image}:${newTag}" + done +done diff --git a/scripts/waitForAlfrescoToStart.sh b/scripts/waitForAlfrescoToStart.sh old mode 100644 new mode 100755