Created
May 23, 2018 18:55
-
-
Save petershin/09039e5715bf8367415bb75a205606ef to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0"?> | |
<project default="prepare-working-dir" xmlns:if="ant:if" xmlns:unless="ant:unless"> | |
<property file="working.dir.${user.name}.properties" /> | |
<property file="working.dir.${env.COMPUTERNAME}.properties" /> | |
<property file="working.dir.${env.HOST}.properties" /> | |
<property file="working.dir.${env.HOSTNAME}.properties" /> | |
<property file="working.dir.properties" /> | |
<condition property="prepare.working.dir.private"> | |
<not> | |
<available file="git-commit-portal" /> | |
</not> | |
</condition> | |
<macrodef name="checkout-private-apps"> | |
<attribute name="checkout.private.apps.dirs" /> | |
<attribute name="checkout.private.apps.sha" /> | |
<sequential> | |
<fetch-portal | |
fetch.portal.local.branch.name="git-branch-private-apps-portal" | |
fetch.portal.remote.branch.name="@{checkout.private.apps.sha}" | |
fetch.portal.repository.name="liferay-portal-ee" | |
/> | |
<local name="return.code" /> | |
<exec executable="git" failonerror="false" resultproperty="return.code"> | |
<arg value="tag" /> | |
<arg value="--force" /> | |
<arg value="git-tag-private-apps-portal" /> | |
<arg value="git-branch-private-apps-portal" /> | |
</exec> | |
<exec executable="git"> | |
<arg value="branch" /> | |
<arg value="--delete" /> | |
<arg value="--force" /> | |
<arg value="git-branch-private-apps-portal" /> | |
</exec> | |
<fail message="Please fetch the private branch from upstream before using this command."> | |
<condition> | |
<not> | |
<equals arg1="${return.code}" arg2="0" /> | |
</not> | |
</condition> | |
</fail> | |
<local name="checkout.private.apps.dirs.git" /> | |
<property name="checkout.private.apps.dirs.git" value="@{checkout.private.apps.dirs}" /> | |
<script language="javascript"> | |
<![CDATA[ | |
var checkoutPrivateAppsDirs = project.getProperty("checkout.private.apps.dirs.git"); | |
project.setProperty("checkout.private.apps.dirs.git", checkoutPrivateAppsDirs.replace(",", " ")); | |
]]> | |
</script> | |
<echo>git checkout refs/tags/git-private-apps-portal -- ${checkout.private.apps.dirs.git}</echo> | |
<exec executable="git" failonerror="true"> | |
<arg value="checkout" /> | |
<arg value="refs/tags/git-tag-private-apps-portal" /> | |
<arg value="--" /> | |
<arg line="${checkout.private.apps.dirs.git}" /> | |
</exec> | |
<exec executable="git"> | |
<arg value="reset" /> | |
<arg value="HEAD" /> | |
<arg value="." /> | |
</exec> | |
<exec executable="git"> | |
<arg value="tag" /> | |
<arg value="--delete" /> | |
<arg value="git-tag-private-apps-portal" /> | |
</exec> | |
</sequential> | |
</macrodef> | |
<macrodef name="fetch-portal"> | |
<attribute name="fetch.portal.local.branch.name" /> | |
<attribute name="fetch.portal.remote.branch.name" /> | |
<attribute name="fetch.portal.repository.name" /> | |
<sequential> | |
<local name="fetch.portal.repository.url" /> | |
<condition else="git@github.com:liferay/@{fetch.portal.repository.name}.git" property="fetch.portal.repository.url" value="git@github-dev.liferay.com:liferay/@{fetch.portal.repository.name}.git"> | |
<isset property="env.JENKINS_HOME" /> | |
</condition> | |
<local name="fetch.portal.branch.name" /> | |
<condition else="@{fetch.portal.remote.branch.name}" property="fetch.portal.branch.name" value="@{fetch.portal.local.branch.name}"> | |
<not> | |
<equals arg1="${fetch.portal.local.branch.name}" arg2="" /> | |
</not> | |
</condition> | |
<echo>git fetch --force --no-tags ${fetch.portal.repository.url} @{fetch.portal.remote.branch.name}:${fetch.portal.branch.name}</echo> | |
<exec executable="git"> | |
<arg value="fetch" /> | |
<arg value="--force" /> | |
<arg value="--no-tags" /> | |
<arg value="${fetch.portal.repository.url}" /> | |
<arg value="@{fetch.portal.remote.branch.name}:${fetch.portal.branch.name}" /> | |
</exec> | |
</sequential> | |
</macrodef> | |
<macrodef name="prepare-working-dir"> | |
<attribute name="from.branch.name" /> | |
<attribute name="to.branch.name" /> | |
<sequential> | |
<local name="replace.regex.tmp.file" /> | |
<tempfile createfile="true" deleteonexit="true" property="replace.regex.tmp.file" /> | |
<!-- build.properties --> | |
<replace | |
failOnNoReplacements="true" | |
file="build.properties" | |
if:set="build.repository.private.password[@{to.branch.name}]" | |
token="build.repository.private.password=${build.repository.private.password[@{from.branch.name}]}" | |
value="build.repository.private.password=${build.repository.private.password[@{to.branch.name}]}" | |
/> | |
<replace | |
failOnNoReplacements="true" | |
file="build.properties" | |
if:set="build.repository.private.url[@{to.branch.name}]" | |
token="build.repository.private.url=${build.repository.private.url[@{from.branch.name}]}" | |
value="build.repository.private.url=${build.repository.private.url[@{to.branch.name}]}" | |
/> | |
<replace | |
failOnNoReplacements="true" | |
file="build.properties" | |
if:set="build.repository.private.username[@{to.branch.name}]" | |
token="build.repository.private.username=${build.repository.private.username[@{from.branch.name}]}" | |
value="build.repository.private.username=${build.repository.private.username[@{to.branch.name}]}" | |
/> | |
<replace | |
failOnNoReplacements="true" | |
file="build.properties" | |
token="git.working.branch.name=@{from.branch.name}" | |
value="git.working.branch.name=@{to.branch.name}" | |
/> | |
<replace | |
failOnNoReplacements="true" | |
file="build.properties" | |
if:set="nightly.bundle.base.url[@{to.branch.name}]" | |
token="nightly.bundle.base.url=${nightly.bundle.base.url[@{from.branch.name}]}" | |
value="nightly.bundle.base.url=${nightly.bundle.base.url[@{to.branch.name}]}" | |
/> | |
<!-- release.properties --> | |
<replace | |
failOnNoReplacements="true" | |
file="release.properties" | |
token="lp.version=${lp.version[@{from.branch.name}]}" | |
value="lp.version=${lp.version[@{to.branch.name}]}" | |
/> | |
<replace | |
failOnNoReplacements="true" | |
file="release.properties" | |
token="lp.version.dtd=${lp.version.dtd[@{from.branch.name}]}" | |
value="lp.version.dtd=${lp.version.dtd[@{to.branch.name}]}" | |
/> | |
<!-- test.properties --> | |
<replace | |
failOnNoReplacements="true" | |
file="test.properties" | |
token="liferay.portal.branch=${liferay.portal.branch[@{from.branch.name}]}" | |
value="liferay.portal.branch=${liferay.portal.branch[@{to.branch.name}]}" | |
/> | |
<replace | |
failOnNoReplacements="true" | |
file="test.properties" | |
if:set="test.run.environment[@{to.branch.name}]" | |
token="test.run.environment=${test.run.environment[@{from.branch.name}]}" | |
value="test.run.environment=${test.run.environment[@{to.branch.name}]}" | |
/> | |
<replace | |
failOnNoReplacements="true" | |
file="test.properties" | |
if:set="testray.build.type[@{to.branch.name}]" | |
token="testray.build.type=${testray.build.type[@{from.branch.name}]}" | |
value="testray.build.type=${testray.build.type[@{to.branch.name}]}" | |
/> | |
<!-- portal-kernel/src/com/liferay/portal/kernel/util/ReleaseInfo.java --> | |
<replace-regex | |
replace.regex.file="portal-kernel/src/com/liferay/portal/kernel/util/ReleaseInfo.java" | |
replace.regex.pattern="${release.info.build[@{from.branch.name}]}" | |
replace.regex.replacement="${release.info.build[@{to.branch.name}]}" | |
replace.regex.tmp.file="${replace.regex.tmp.file}" | |
/> | |
<replace-regex | |
replace.regex.file="portal-kernel/src/com/liferay/portal/kernel/util/ReleaseInfo.java" | |
replace.regex.pattern="${release.info.date[@{from.branch.name}]}" | |
replace.regex.replacement="${release.info.date[@{to.branch.name}]}" | |
replace.regex.tmp.file="${replace.regex.tmp.file}" | |
/> | |
<replace | |
failOnNoReplacements="true" | |
file="portal-kernel/src/com/liferay/portal/kernel/util/ReleaseInfo.java" | |
if:set="release.info.name[@{to.branch.name}]" | |
token="${release.info.name[@{from.branch.name}]}" | |
value="${release.info.name[@{to.branch.name}]}" | |
/> | |
<replace-regex | |
replace.regex.file="portal-kernel/src/com/liferay/portal/kernel/util/ReleaseInfo.java" | |
replace.regex.pattern="${release.info.version[@{from.branch.name}]}" | |
replace.regex.replacement="${release.info.version[@{to.branch.name}]}" | |
replace.regex.tmp.file="${replace.regex.tmp.file}" | |
/> | |
<replace-regex | |
replace.regex.file="portal-kernel/src/com/liferay/portal/kernel/util/ReleaseInfo.java" | |
replace.regex.pattern="${release.info.version.display.name[@{from.branch.name}]}" | |
replace.regex.replacement="${release.info.version.display.name[@{to.branch.name}]}" | |
replace.regex.tmp.file="${replace.regex.tmp.file}" | |
/> | |
<!-- sql/portal-data-release.sql --> | |
<local name="replace.portal.data.release.sql" /> | |
<condition property="replace.portal.data.release.sql"> | |
<available file="sql/portal-data-release.sql" /> | |
</condition> | |
<replace-regex | |
if:set="replace.portal.data.release.sql" | |
replace.regex.file="sql/portal-data-release.sql" | |
replace.regex.pattern="${portal.data.release[@{from.branch.name}]}" | |
replace.regex.replacement="${portal.data.release[@{to.branch.name}]}" | |
replace.regex.tmp.file="${replace.regex.tmp.file}" | |
/> | |
<!-- sql/sql.properties --> | |
<replace | |
failOnNoReplacements="true" | |
file="sql/sql.properties" | |
if:set="database.types[@{to.branch.name}]" | |
token="database.types=${database.types[@{from.branch.name}]}" | |
value="database.types=${database.types[@{to.branch.name}]}" | |
/> | |
</sequential> | |
</macrodef> | |
<macrodef name="prepare-working-dir-private"> | |
<sequential> | |
<loadproperties srcFile="working.dir.properties"> | |
<filterchain> | |
<linecontains> | |
<contains value="to.branch.name" /> | |
</linecontains> | |
</filterchain> | |
</loadproperties> | |
<loadproperties srcFile="working.dir.properties"> | |
<filterchain> | |
<tokenfilter> | |
<containsregex pattern="(build\.repository\.private\.\w+)\Q[${to.branch.name}]\E" replace="\1" /> | |
</tokenfilter> | |
</filterchain> | |
</loadproperties> | |
<delete file="working.dir.properties" /> | |
<propertyfile file="build.${user.name}.properties"> | |
<entry key="build.repository.private.password" value="${build.repository.private.password}" /> | |
<entry key="build.repository.private.url" value="${build.repository.private.url}" /> | |
<entry key="build.repository.private.username" value="${build.repository.private.username}" /> | |
</propertyfile> | |
</sequential> | |
</macrodef> | |
<macrodef name="replace-regex"> | |
<attribute name="replace.regex.file" /> | |
<attribute name="replace.regex.pattern" /> | |
<attribute name="replace.regex.replacement" /> | |
<attribute name="replace.regex.tmp.file" /> | |
<sequential> | |
<local name="replace.regex.changed" /> | |
<replaceregexp | |
file="@{replace.regex.file}" | |
match="@{replace.regex.pattern}" | |
replace="@{replace.regex.replacement}" | |
/> | |
<uptodate | |
property="replace.regex.changed" | |
srcfile="@{replace.regex.tmp.file}" | |
targetfile="@{replace.regex.file}" | |
/> | |
<fail message="Unable to replace pattern "@{replace.regex.pattern}" with "@{replace.regex.replacement}" in @{replace.regex.file}." unless="replace.regex.changed" /> | |
</sequential> | |
</macrodef> | |
<target name="checkout-portal" unless="prepare.working.dir.private"> | |
<loadfile | |
property="portal.git.commit" | |
srcFile="git-commit-portal" | |
> | |
<filterchain> | |
<striplinebreaks /> | |
</filterchain> | |
</loadfile> | |
<local name="return.code" /> | |
<exec executable="git" failonerror="false" resultproperty="return.code"> | |
<arg value="log" /> | |
<arg value="-n" /> | |
<arg value="1" /> | |
<arg value="${portal.git.commit}" /> | |
</exec> | |
<condition property="portal.git.commit.available"> | |
<equals arg1="${return.code}" arg2="0" /> | |
</condition> | |
<fetch-portal | |
fetch.portal.local.branch.name="git-branch-portal" | |
fetch.portal.remote.branch.name="${public.branch.name}" | |
fetch.portal.repository.name="liferay-portal" | |
unless:set="portal.git.commit.available" | |
/> | |
<local name="return.code" /> | |
<exec executable="git" failonerror="false" resultproperty="return.code"> | |
<arg value="tag" /> | |
<arg value="--force" /> | |
<arg value="git-commit-portal" /> | |
<arg value="${portal.git.commit}" /> | |
</exec> | |
<fail message="Please fetch the public branch from upstream before using this command."> | |
<condition> | |
<not> | |
<equals arg1="${return.code}" arg2="0" /> | |
</not> | |
</condition> | |
</fail> | |
<loadresource property="working.dir.checkout.excludes.git"> | |
<propertyresource name="working.dir.checkout.excludes" /> | |
<filterchain> | |
<replacestring from="," to=" :(exclude)" /> | |
</filterchain> | |
</loadresource> | |
<exec executable="git" failonerror="true"> | |
<arg value="checkout" /> | |
<arg value="refs/tags/git-commit-portal" /> | |
<arg value="." /> | |
<arg line=":(exclude)${working.dir.checkout.excludes.git}" /> | |
</exec> | |
<exec executable="git"> | |
<arg value="reset" /> | |
<arg value="HEAD" /> | |
<arg value="." /> | |
</exec> | |
<exec executable="git"> | |
<arg value="tag" /> | |
<arg value="--delete" /> | |
<arg value="git-commit-portal" /> | |
</exec> | |
</target> | |
<target if="prepare.working.dir.private" name="checkout-portal-private"> | |
<loadfile | |
property="portal.private.git.commit" | |
srcFile="git-commit-portal-private" | |
> | |
<filterchain> | |
<striplinebreaks /> | |
</filterchain> | |
</loadfile> | |
<exec executable="git" resultproperty="portal.private.git.commit.result"> | |
<arg value="cat-file" /> | |
<arg value="-e" /> | |
<arg value="${portal.private.git.commit}" /> | |
</exec> | |
<fail message="Please run this command from the liferay-portal-ee repository."> | |
<condition> | |
<not> | |
<equals arg1="${portal.private.git.commit.result}" arg2="0" /> | |
</not> | |
</condition> | |
</fail> | |
<local name="return.code" /> | |
<exec executable="git" failonerror="false" resultproperty="return.code"> | |
<arg value="log" /> | |
<arg value="-n" /> | |
<arg value="1" /> | |
<arg value="${portal.private.git.commit}" /> | |
</exec> | |
<condition property="portal.private.git.commit.available"> | |
<equals arg1="${return.code}" arg2="0" /> | |
</condition> | |
<fetch-portal | |
fetch.portal.local.branch.name="git-branch-portal-private" | |
fetch.portal.remote.branch.name="${private.branch.name}" | |
fetch.portal.repository.name="liferay-portal-ee" | |
unless:set="portal.private.git.commit.available" | |
/> | |
<local name="return.code" /> | |
<exec executable="git" failonerror="false" resultproperty="return.code"> | |
<arg value="tag" /> | |
<arg value="--force" /> | |
<arg value="git-commit-portal-private" /> | |
<arg value="${portal.private.git.commit}" /> | |
</exec> | |
<fail message="Please fetch the private branch from upstream before using this command."> | |
<condition> | |
<not> | |
<equals arg1="${return.code}" arg2="0" /> | |
</not> | |
</condition> | |
</fail> | |
<exec executable="git" failonerror="true"> | |
<arg value="checkout" /> | |
<arg value="refs/tags/git-commit-portal-private" /> | |
<arg if:true="${checkout.portal.private.releng}" value="modules/.releng/private" /> | |
<arg value="modules/private" /> | |
<arg value="working.dir.properties" /> | |
</exec> | |
<exec executable="git"> | |
<arg value="reset" /> | |
<arg value="HEAD" /> | |
<arg if:true="${checkout.portal.private.releng}" value="modules/.releng/private" /> | |
<arg value="modules/private" /> | |
<arg value="working.dir.properties" /> | |
</exec> | |
<exec executable="git"> | |
<arg value="tag" /> | |
<arg value="--delete" /> | |
<arg value="git-commit-portal-private" /> | |
</exec> | |
</target> | |
<target if="working.dir.checkout.private.apps.project.names" name="checkout-private-projects"> | |
<script language="javascript"> | |
<![CDATA[ | |
var workingDirCheckoutPrivateAppsProjectNames = project.getProperty("working.dir.checkout.private.apps.project.names"); | |
var projectNames = workingDirCheckoutPrivateAppsProjectNames.split(","); | |
for (i = 0; i < projectNames.length; i++) { | |
var task = project.createTask("checkout-private-apps"); | |
task.setDynamicAttribute("checkout.private.apps.dirs", project.getProperty("working.dir.checkout.private.apps." + projectNames[i] + ".dirs")); | |
task.setDynamicAttribute("checkout.private.apps.sha", project.getProperty("working.dir.checkout.private.apps." + projectNames[i] + ".sha")); | |
task.perform(); | |
} | |
]]> | |
</script> | |
</target> | |
<target depends="checkout-portal,checkout-portal-private,checkout-private-projects" name="prepare-working-dir"> | |
<property name="from.branch.name" value="${public.branch.name}" /> | |
<property name="to.branch.name" value="${private.branch.name}" /> | |
<prepare-working-dir | |
from.branch.name="${from.branch.name}" | |
to.branch.name="${to.branch.name}" | |
unless:true="${prepare.working.dir.private}" | |
/> | |
<prepare-working-dir-private | |
if:true="${prepare.working.dir.private}" | |
/> | |
</target> | |
</project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment