mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-09-17 14:21:39 +00:00
REPO-5271 Backport new structure to relaese/6.0.0 (#14)
- Simplify dependencies and standardise order - README updated - Green builds - Changes to make Jars in enterprise war match - Changes to make files in enterprise image match - Added travis_wait 40 to the initial build as it can take 20 minutes to download artifacts - Removed TAS tests from .travis.yml but not the code as TAS tests require Java 11 - Added in an empty test so the build runs on feature branches.
This commit is contained in:
9
scripts/travis/build.sh
Normal file
9
scripts/travis/build.sh
Normal file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ev
|
||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../"
|
||||
|
||||
PROFILES="$([ "${TRAVIS_BUILD_STAGE_NAME,,}" = "release" ] && echo "-Pinternal" || echo "-PcommunityDocker" )"
|
||||
|
||||
mvn -B -V install -DskipTests -Dmaven.javadoc.skip=true "${PROFILES}"
|
||||
|
||||
|
120
scripts/travis/build_functions.sh
Normal file
120
scripts/travis/build_functions.sh
Normal file
@@ -0,0 +1,120 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
function isPullRequestBuild() {
|
||||
test "${TRAVIS_PULL_REQUEST}" != "false"
|
||||
}
|
||||
|
||||
function isBranchBuild() {
|
||||
test "${TRAVIS_PULL_REQUEST}" = "false"
|
||||
}
|
||||
|
||||
function cloneRepo() {
|
||||
local REPO="${1}"
|
||||
local TAG_OR_BRANCH="${2}"
|
||||
|
||||
# clone the repository branch/tag
|
||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../../" >/dev/null
|
||||
|
||||
rm -rf "$(basename "${REPO%.git}")"
|
||||
|
||||
git clone -b "${TAG_OR_BRANCH}" --depth=1 "https://${GIT_USERNAME}:${GIT_PASSWORD}@${REPO}"
|
||||
|
||||
popd >/dev/null
|
||||
}
|
||||
|
||||
function retrievePomParentVersion() {
|
||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../" >/dev/null
|
||||
|
||||
sed -n '/<parent>/,/<\/parent>/p' pom.xml \
|
||||
| sed -n '/<version>/,/<\/version>/p' \
|
||||
| tr -d '\n' \
|
||||
| grep -oP '(?<=<version>).*(?=</version>)' \
|
||||
| xargs
|
||||
|
||||
popd >/dev/null
|
||||
}
|
||||
|
||||
function retrievePomProperty() {
|
||||
local KEY="${1}"
|
||||
|
||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../" >/dev/null
|
||||
|
||||
sed -n '/<properties>/,/<\/properties>/p' pom.xml \
|
||||
| sed -n "/<${KEY}>/,/<\/${KEY}>/p" \
|
||||
| tr -d '\n' \
|
||||
| grep -oP "(?<=<${KEY}>).*(?=</${KEY}>)" \
|
||||
| xargs
|
||||
|
||||
popd >/dev/null
|
||||
}
|
||||
|
||||
function evaluatePomProperty() {
|
||||
local KEY="${1}"
|
||||
|
||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../" >/dev/null
|
||||
|
||||
mvn -B -q help:evaluate -Dexpression="${KEY}" -DforceStdout
|
||||
|
||||
popd >/dev/null
|
||||
}
|
||||
|
||||
function remoteBranchExists() {
|
||||
local REMOTE_REPO="${1}"
|
||||
local BRANCH="${2}"
|
||||
|
||||
git ls-remote --exit-code --heads "https://${GIT_USERNAME}:${GIT_PASSWORD}@${REMOTE_REPO}" "${BRANCH}"
|
||||
}
|
||||
|
||||
function pullUpstreamTag() {
|
||||
local UPSTREAM_REPO="${1}"
|
||||
local TAG="${2}"
|
||||
|
||||
cloneRepo "${UPSTREAM_REPO}" "${TAG}"
|
||||
}
|
||||
|
||||
function pullUpstreamTagAndBuildDockerImage() {
|
||||
local UPSTREAM_REPO="${1}"
|
||||
local TAG="${2}"
|
||||
local EXTRA_BUILD_ARGUMENTS="${3}"
|
||||
|
||||
cloneRepo "${UPSTREAM_REPO}" "${TAG}"
|
||||
|
||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../../"
|
||||
|
||||
cd "$(basename "${UPSTREAM_REPO%.git}")"
|
||||
|
||||
mvn -B -V clean package -DskipTests -Dmaven.javadoc.skip=true "-Dimage.tag=${TAG}" ${EXTRA_BUILD_ARGUMENTS}
|
||||
|
||||
popd
|
||||
}
|
||||
|
||||
function pullAndBuildSameBranchOnUpstream() {
|
||||
local UPSTREAM_REPO="${1}"
|
||||
local EXTRA_BUILD_ARGUMENTS="${2}"
|
||||
local SOURCE_BRANCH="$(isBranchBuild && echo "${TRAVIS_BRANCH}" || echo "${TRAVIS_PULL_REQUEST_BRANCH}")"
|
||||
|
||||
if ! remoteBranchExists "${UPSTREAM_REPO}" "${SOURCE_BRANCH}" ; then
|
||||
printf "Branch \"%s\" not found on the %s repository\n" "${SOURCE_BRANCH}" "${UPSTREAM_REPO}"
|
||||
#exit 1
|
||||
fi
|
||||
|
||||
local SOURCE_BRANCH="${TRAVIS_BRANCH}"
|
||||
if ! remoteBranchExists "${UPSTREAM_REPO}" "${SOURCE_BRANCH}" ; then
|
||||
printf "Branch \"%s\" not found on the %s repository\n" "${SOURCE_BRANCH}" "${UPSTREAM_REPO}"
|
||||
#exit 1
|
||||
fi
|
||||
# TODO remove this line and enable the previous "exit" commands:
|
||||
local SOURCE_BRANCH="master"
|
||||
|
||||
cloneRepo "${UPSTREAM_REPO}" "${SOURCE_BRANCH}"
|
||||
|
||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../../"
|
||||
|
||||
cd "$(basename "${UPSTREAM_REPO%.git}")"
|
||||
|
||||
mvn -B -V -q clean install -DskipTests -Dmaven.javadoc.skip=true ${EXTRA_BUILD_ARGUMENTS}
|
||||
mvn -B -V -q install -DskipTests -f packaging/tests/pom.xml
|
||||
|
||||
popd
|
||||
}
|
||||
|
19
scripts/travis/cleanup_cache.sh
Normal file
19
scripts/travis/cleanup_cache.sh
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ev
|
||||
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/acs-community-packaging"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-community-repo"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-community-repo-*"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-core"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-data-model"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-enterprise-remote-api"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-enterprise-repo-*"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-enterprise-repository"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-remote-api"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-repository"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/content-services"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/content-services*"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/content-services-community"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/tas/alfresco-community-repo-*-test"
|
||||
rm -rf "${HOME}/.m2/repository/org/alfresco/tas/alfresco-enterprise-repo-*-test"
|
||||
|
18
scripts/travis/init.sh
Normal file
18
scripts/travis/init.sh
Normal file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ev
|
||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../"
|
||||
|
||||
# Maven Setup
|
||||
mkdir -p "${HOME}/.m2" && cp -f .travis.settings.xml "${HOME}/.m2/settings.xml"
|
||||
find "${HOME}/.m2/repository/" -type d -name "*-SNAPSHOT*" | xargs -r -l rm -rf
|
||||
|
||||
# Docker Logins
|
||||
echo "${QUAY_PASSWORD}" | docker login -u="${QUAY_USERNAME}" --password-stdin quay.io
|
||||
|
||||
# Enable experimental docker features (for the image squash option)
|
||||
echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
|
||||
sudo service docker restart
|
||||
|
||||
# not helpful in this script
|
||||
# export HOST_IP=$(hostname -I | cut -f1 -d' ')
|
||||
|
17
scripts/travis/maven_release.sh
Executable file
17
scripts/travis/maven_release.sh
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ev
|
||||
|
||||
# Use full history for release
|
||||
git checkout -B "${TRAVIS_BRANCH}"
|
||||
# Add email to link commits to user
|
||||
git config user.email "${GIT_EMAIL}"
|
||||
|
||||
# Run the release plugin - with "[skip ci]" in the release commit message
|
||||
mvn -B \
|
||||
-PfullBuild,all-tas-tests \
|
||||
"-Darguments=-PfullBuild,all-tas-tests -DskipTests -Dbuild-number=${TRAVIS_BUILD_NUMBER}" \
|
||||
release:clean release:prepare release:perform \
|
||||
-DscmCommentPrefix="[maven-release-plugin][skip ci] " \
|
||||
-Dusername="${GIT_USERNAME}" \
|
||||
-Dpassword="${GIT_PASSWORD}"
|
||||
|
48
scripts/travis/trigger_travis.sh
Executable file
48
scripts/travis/trigger_travis.sh
Executable file
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ev
|
||||
|
||||
USER=${1}
|
||||
REPO=${2}
|
||||
BRANCH=${3}
|
||||
|
||||
if [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then
|
||||
echo "Downstream projects shouldn't be triggered from PR builds"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! git ls-remote --exit-code --heads "https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/${USER}/${REPO}.git" "${BRANCH}" ; then
|
||||
echo "Branch \"${BRANCH}\" not found on the downstream repository ${USER}/${REPO}. Exiting..."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
URL="https://api.travis-ci.com/repo/${USER}%2F${REPO}/requests"
|
||||
BODY="{
|
||||
\"request\": {
|
||||
\"branch\":\"${BRANCH}\"
|
||||
}}"
|
||||
|
||||
printf "Travis API call:\n URL: %s\n Body: %s\n\n" "${URL}" "${BODY}"
|
||||
|
||||
curl -s -X POST \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Accept: application/json" \
|
||||
-H "Travis-API-Version: 3" \
|
||||
-H "Authorization: token ${TRAVIS_ACCESS_TOKEN_TEMP}" \
|
||||
-d "${BODY}" \
|
||||
"${URL}" \
|
||||
| tee /tmp/travis-request-output.txt
|
||||
|
||||
cat /tmp/travis-request-output.txt
|
||||
|
||||
if grep -q '"@type": "error"' /tmp/travis-request-output.txt; then
|
||||
echo "Error when triggering build..."
|
||||
exit 2
|
||||
fi
|
||||
if grep -q 'access denied' /tmp/travis-request-output.txt; then
|
||||
echo "Access denied when triggering build..."
|
||||
exit 3
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
46
scripts/travis/update_downstream.sh
Normal file
46
scripts/travis/update_downstream.sh
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
echo "=========================== Starting Update Downstream Script ==========================="
|
||||
PS4="\[\e[35m\]+ \[\e[m\]"
|
||||
set -vex
|
||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../"
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/build_functions.sh"
|
||||
|
||||
DOWNSTREAM_REPO="github.com/Alfresco/alfresco-enterprise-repo.git"
|
||||
|
||||
cloneRepo "${DOWNSTREAM_REPO}" "${TRAVIS_BRANCH}"
|
||||
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")/../../../$(basename "${DOWNSTREAM_REPO%.git}")"
|
||||
|
||||
# Update parent
|
||||
mvn -B versions:update-parent versions:commit
|
||||
|
||||
VERSION="$(sed -n '/<parent>/,/<\/parent>/p' pom.xml \
|
||||
| sed -n '/<version>/,/<\/version>/p' \
|
||||
| tr -d '\n' \
|
||||
| grep -oP '(?<=<version>).*(?=</version>)' \
|
||||
| xargs)"
|
||||
|
||||
# Update dependency version
|
||||
mvn -B versions:set-property versions:commit \
|
||||
-Dproperty=dependency.alfresco-community-repo.version \
|
||||
"-DnewVersion=${VERSION}"
|
||||
|
||||
# Commit changes
|
||||
git status
|
||||
git --no-pager diff pom.xml
|
||||
git add pom.xml
|
||||
|
||||
if git status --untracked-files=no --porcelain | grep -q '^' ; then
|
||||
git commit -m "Update upstream version to ${VERSION}"
|
||||
git push
|
||||
else
|
||||
echo "Dependencies are already up to date."
|
||||
git status
|
||||
fi
|
||||
|
||||
|
||||
popd
|
||||
set +vex
|
||||
echo "=========================== Finishing Update Downstream Script =========================="
|
||||
|
24
scripts/travis/verify_release_tag.sh
Executable file
24
scripts/travis/verify_release_tag.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
echo "=========================== Starting Verify Release Tag Script ==========================="
|
||||
PS4="\[\e[35m\]+ \[\e[m\]"
|
||||
set -vex
|
||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../"
|
||||
|
||||
#
|
||||
# Check that the version to be released does not already have a git tag.
|
||||
#
|
||||
|
||||
POM_VERSION=$(mvn -B -q help:evaluate -Dexpression=project.version -DforceStdout)
|
||||
printf "POM version: %s\n" "${POM_VERSION}"
|
||||
|
||||
TAG="${POM_VERSION%-SNAPSHOT}"
|
||||
|
||||
if git rev-parse "${TAG}^{tag}" &>/dev/null ; then
|
||||
echo "The next tag \"${TAG}\" already exists in the git project"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
popd
|
||||
set +vex
|
||||
echo "=========================== Finishing Verify Release Tag Script =========================="
|
||||
|
Reference in New Issue
Block a user