Przeglądaj źródła

YAKHMI-738 Build distro zips for deploying

benjamin.schwertfeger@gmail.com 13 lat temu
rodzic
commit
e4ac1665f2
1 zmienionych plików z 406 dodań i 1 usunięć
  1. 406 1
      releng/org.yakindu.sct.releng/promote-pom.xml

+ 406 - 1
releng/org.yakindu.sct.releng/promote-pom.xml

@@ -12,6 +12,8 @@
 	<artifactId>org.yakindu.sct.releng.promote</artifactId>
 	<packaging>pom</packaging>
 
+	<!-- Search for 'target architecture' to find places where the architecture for distros is set -->
+
 	<properties>
 		<!-- scp settings for publishing udpdate site -->
 		<promotionTarget>indigo/integration</promotionTarget>
@@ -19,6 +21,15 @@
 		<updateSiteUrl>http://updates.yakindu.com/${promotionTarget}</updateSiteUrl>
 		<local.update.site>${project.build.directory}/local-update-site</local.update.site>
 		<tycho.extras.version>0.14.0</tycho.extras.version>
+
+		<eclipse.mirror.url>http://mirror.netcologne.de/eclipse</eclipse.mirror.url>
+		<distro.work.dir>${project.build.directory}/distro/work</distro.work.dir>
+		<distro.dir>${project.build.directory}/distro</distro.dir>
+
+		<profile>epp.package.modeling</profile>
+		<features>org.eclipse.xtext.sdk.feature.group,org.eclipse.xtend.sdk.feature.group,org.yakindu.sct.feature.group</features>
+		<update.sites>${p2.target.repository},${updateSiteUrl}</update.sites>
+
 	</properties>
 
 	<build>
@@ -53,7 +64,402 @@
 					</execution>
 				</executions>
 			</plugin>
+
+			<!-- for package of eclipse product creation -->
+			<plugin>
+				<groupId>org.eclipse.tycho.extras</groupId>
+				<artifactId>tycho-p2-extras-plugin</artifactId>
+				<version>${tycho-extras-version}</version>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<goals>
+							<goal>mirror</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<source>
+						<!-- source repositories to mirror from -->
+						<repository>
+							<url>${project.baseUri}/emfPatchExport</url>
+							<layout>p2</layout>
+							<!-- supported layouts are "p2-metadata", "p2-artifacts", and "p2" 
+								(for joint repositories; default) -->
+						</repository>
+					</source>
+
+					<!-- The destination directory to mirror to. -->
+					<destination>${project.build.directory}/repository</destination>
+					<!-- Whether only strict dependencies should be followed. -->
+					<!-- "strict" means perfect version match -->
+					<followStrictOnly>false</followStrictOnly>
+					<!-- Whether or not to follow optional requirements. -->
+					<includeOptional>false</includeOptional>
+					<!-- Whether or not to follow non-greedy requirements. -->
+					<includeNonGreedy>false</includeNonGreedy>
+					<!-- Whether to filter the resulting set of IUs to only -->
+					<!-- include the latest version of each IU -->
+					<latestVersionOnly>false</latestVersionOnly>
+					<!-- don't mirror artifacts, only metadata -->
+					<mirrorMetadataOnly>false</mirrorMetadataOnly>
+					<!-- whether to compress the content.xml/artifacts.xml -->
+					<compress>true</compress>
+					<!-- whether to append to the target repository content -->
+					<append>true</append>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-antrun-plugin</artifactId>
+				<version>1.1</version>
+				<executions>
+					<execution>
+						<id>download.distro</id>
+						<phase>prepare-package</phase>
+						<configuration>
+							<tasks>
+								<taskdef resource="net/sf/antcontrib/antlib.xml"
+									classpathref="maven.plugin.classpath" />
+								<property name="download.distro.src"
+									value="${eclipse.mirror.url}/technology/epp/downloads/release/juno/SR1" />
+								<property name="download.distro.dir"
+									value="${project.build.directory}/distro/download" />
+
+								<!-- 'target architecture' for distros -->
+								<for list="macosx-cocoa-x86_64;win32-win32-x86;win32-win32-x86_64;linux-gtk-x86;linux-gtk-x86_64"
+									param="environment" delimiter=";" parallel="false">
+									<sequential>
+										<propertyregex property="distro.os" input="@{environment}"
+											override="true" regexp="([^,]*)-([^\,]*)-([^\,]*)" select="\1"
+											casesensitive="false" />
+										<propertyregex property="distro.ws" input="@{environment}"
+											override="true" regexp="([^,]*)-([^\,]*)-([^\,]*)" select="\2"
+											casesensitive="false" />
+										<propertyregex property="distro.arch" input="@{environment}"
+											override="true" regexp="([^,]*)-([^\,]*)-([^\,]*)" select="\3"
+											casesensitive="false" />
+										<echo>distro.os ${distro.os} </echo>
+										<echo>distro.ws ${distro.ws} </echo>
+										<echo>distro.arch ${distro.arch} </echo>
+										<!-- naming is platform specific, so we have to make a distinction 
+											here (as we only have two platforms, we do not have to make any other distinctions 
+											so far) -->
+										<if>
+											<and>
+												<equals arg1="${distro.os}" arg2="win32" />
+												<equals arg1="${distro.ws}" arg2="win32" />
+												<equals arg1="${distro.arch}" arg2="x86" />
+											</and>
+											<then>
+												<propertyregex property="distro.src.filename"
+													input="eclipse-modeling-juno-SR1-win32.zip" override="true"
+													regexp="(.*)" select="\1" casesensitive="false" />
+											</then>
+										</if>
+										<if>
+											<and>
+												<equals arg1="${distro.os}" arg2="win32" />
+												<equals arg1="${distro.ws}" arg2="win32" />
+												<equals arg1="${distro.arch}" arg2="x86_64" />
+											</and>
+											<then>
+												<propertyregex property="distro.src.filename"
+													input="eclipse-modeling-juno-SR1-win32-x86_64.zip"
+													override="true" regexp="(.*)" select="\1" casesensitive="false" />
+											</then>
+										</if>
+										<if>
+											<and>
+												<equals arg1="${distro.os}" arg2="linux" />
+												<equals arg1="${distro.ws}" arg2="gtk" />
+												<equals arg1="${distro.arch}" arg2="x86_64" />
+											</and>
+											<then>
+												<propertyregex property="distro.src.filename"
+													input="eclipse-modeling-juno-SR1-linux-gtk-x86_64.tar.gz"
+													override="true" regexp="(.*)" select="\1" casesensitive="false" />
+											</then>
+										</if>
+										<if>
+											<and>
+												<equals arg1="${distro.os}" arg2="linux" />
+												<equals arg1="${distro.ws}" arg2="gtk" />
+												<equals arg1="${distro.arch}" arg2="x86" />
+											</and>
+											<then>
+												<propertyregex property="distro.src.filename"
+													input="eclipse-modeling-juno-SR1-linux-gtk.tar.gz"
+													override="true" regexp="(.*)" select="\1" casesensitive="false" />
+											</then>
+										</if>
+										<if>
+											<and>
+												<equals arg1="${distro.os}" arg2="macosx" />
+												<equals arg1="${distro.ws}" arg2="cocoa" />
+												<equals arg1="${distro.arch}" arg2="x86_64" />
+											</and>
+											<then>
+												<propertyregex property="distro.src.filename"
+													input="eclipse-modeling-juno-SR1-macosx-cocoa-x86_64.tar.gz"
+													override="true" regexp="(.*)" select="\1" casesensitive="false" />
+											</then>
+										</if>
+
+										<if>
+											<not>
+												<available file="${download.distro.dir}" type="dir" />
+											</not>
+											<then>
+												<echo>mkdir ${download.distro.dir}</echo>
+												<mkdir dir="${download.distro.dir}" />
+											</then>
+										</if>
+										<if>
+											<not>
+												<available file="${download.distro.dir}/${distro.src.filename}" />
+											</not>
+											<then>
+												<trycatch>
+													<try>
+														<get src="${download.distro.src}/${distro.src.filename}"
+															dest="${download.distro.dir}/${distro.src.filename}" />
+													</try>
+													<catch>
+														<echo>delete ${download.distro.dir}</echo>
+														<delete file="${download.distro.dir}/${distro.src.filename}" />
+													</catch>
+												</trycatch>
+											</then>
+										</if>
+										<if>
+											<available file="${distro.work.dir}/@{environment}"
+												type="dir" />
+											<then>
+												<delete dir="${distro.work.dir}/@{environment}" />
+											</then>
+										</if>
+										<mkdir dir="${distro.work.dir}/@{environment}" />
+										<if>
+											<or>
+												<equals arg1="${distro.os}" arg2="win32" />
+											</or>
+											<then>
+												<unzip src="${download.distro.dir}/${distro.src.filename}"
+													dest="${distro.work.dir}/@{environment}/" />
+											</then>
+											<else>
+												<exec dir="${distro.work.dir}/@{environment}"
+													executable="tar">
+													<arg line="-xzf ${download.distro.dir}/${distro.src.filename}" />
+												</exec>
+											</else>
+										</if>
+									</sequential>
+								</for>
+							</tasks>
+						</configuration>
+						<goals>
+							<goal>run</goal>
+						</goals>
+					</execution>
+					<execution>
+						<id>repackage.distro</id>
+						<phase>verify</phase>
+						<goals>
+							<goal>run</goal>
+						</goals>
+						<configuration>
+							<tasks>
+								<taskdef resource="net/sf/antcontrib/antlib.xml"
+									classpathref="maven.plugin.classpath" />
+								<!-- 'target architecture' for distros -->
+								<for list="macosx-cocoa-x86_64;win32-win32-x86;win32-win32-x86_64;linux-gtk-x86;linux-gtk-x86_64"
+									param="environment" delimiter=";" parallel="false">
+									<sequential>
+										<propertyregex property="distro.os" input="@{environment}"
+											override="true" regexp="([^,]*)-([^\,]*)-([^\,]*)" select="\1"
+											casesensitive="false" />
+										<propertyregex property="distro.ws" input="@{environment}"
+											override="true" regexp="([^,]*)-([^\,]*)-([^\,]*)" select="\2"
+											casesensitive="false" />
+										<propertyregex property="distro.arch" input="@{environment}"
+											override="true" regexp="([^,]*)-([^\,]*)-([^\,]*)" select="\3"
+											casesensitive="false" />
+										<echo>mkdir ${distro.dir} for
+											yakindu-sct-juno-SR1-${distro.os}-${distro.ws}-${distro.arch}.zip</echo>
+										<mkdir dir="${distro.dir}" />
+
+										<if>
+											<or>
+												<equals arg1="${distro.os}" arg2="win32" />
+											</or>
+											<then>
+												<exec dir="${distro.work.dir}/@{environment}"
+													executable="zip">
+													<arg
+														line="-q -r ${distro.dir}/yakindu-sct-juno-SR1-${distro.os}-${distro.ws}-${distro.arch}.zip eclipse" />
+												</exec>
+											</then>
+											<else>
+												<exec dir="${distro.work.dir}/@{environment}"
+													executable="tar">
+													<arg
+														line="-czf ${distro.dir}/yakindu-sct-juno-SR1-${distro.os}-${distro.ws}-${distro.arch}.tar.gz eclipse" />
+												</exec>
+											</else>
+										</if>
+									</sequential>
+								</for>
+							</tasks>
+						</configuration>
+					</execution>
+				</executions>
+				<dependencies>
+					<dependency>
+						<groupId>ant-contrib</groupId>
+						<artifactId>ant-contrib</artifactId>
+						<version>1.0b3</version>
+						<exclusions>
+							<exclusion>
+								<groupId>ant</groupId>
+								<artifactId>ant</artifactId>
+							</exclusion>
+						</exclusions>
+					</dependency>
+					<dependency>
+						<groupId>ant</groupId>
+						<artifactId>ant-nodeps</artifactId>
+						<version>1.6.5</version>
+					</dependency>
+				</dependencies>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho.extras</groupId>
+				<artifactId>tycho-eclipserun-plugin</artifactId>
+				<version>${tycho-extras-version}</version>
+				<executions>
+					<!-- Add execution per 'target architecture' -->
+					<execution>
+						<id>install-features-into-distro-macosx-cocoa-x86_64</id>
+						<phase>package</phase>
+						<goals>
+							<goal>eclipse-run</goal>
+						</goals>
+						<configuration>
+							<appArgLine>-consoleLog -clean -nosplash -debug -consoleLog
+								-application org.eclipse.equinox.p2.director -destination
+								${distro.work.dir}/macosx-cocoa-x86_64/eclipse/ -profile
+								${profile} -p2.os macosx -p2.ws cocoa -p2.arch x86_64
+								-repository ${update.sites} -installIUs ${features}
+							</appArgLine>
+						</configuration>
+					</execution>
+					<execution>
+						<id>install-features-into-distro-win32-win-32-x86</id>
+						<phase>package</phase>
+						<goals>
+							<goal>eclipse-run</goal>
+						</goals>
+						<configuration>
+							<appArgLine>-consoleLog -clean -nosplash -debug -consoleLog
+								-application org.eclipse.equinox.p2.director -destination
+								${distro.work.dir}/win32-win32-x86/eclipse/ -profile ${profile}
+								-p2.os win32 -p2.ws win32 -p2.arch x86 -repository
+								${update.sites} -installIUs ${features}
+							</appArgLine>
+						</configuration>
+					</execution>
+					<execution>
+						<id>install-features-into-distro-win32-win-32-x86_64</id>
+						<phase>package</phase>
+						<goals>
+							<goal>eclipse-run</goal>
+						</goals>
+						<configuration>
+							<appArgLine>-consoleLog -clean -nosplash -debug -consoleLog
+								-application org.eclipse.equinox.p2.director -destination
+								${distro.work.dir}/win32-win32-x86_64/eclipse/ -profile
+								${profile} -p2.os win32 -p2.ws win32 -p2.arch x86_64 -repository
+								${update.sites} -installIUs ${features}
+							</appArgLine>
+						</configuration>
+					</execution>
+					<execution>
+						<id>install-features-into-distro-linux-gtk-x86</id>
+						<phase>package</phase>
+						<goals>
+							<goal>eclipse-run</goal>
+						</goals>
+						<configuration>
+							<appArgLine>-consoleLog -clean -nosplash -debug -consoleLog
+								-application org.eclipse.equinox.p2.director -destination
+								${distro.work.dir}/linux-gtk-x86/eclipse/ -profile
+								${profile} -p2.os linux -p2.ws gtk -p2.arch x86
+								-repository ${update.sites} -installIUs ${features}
+							</appArgLine>
+						</configuration>
+					</execution>
+					<execution>
+						<id>install-features-into-distro-linux-gtk-x86_64</id>
+						<phase>package</phase>
+						<goals>
+							<goal>eclipse-run</goal>
+						</goals>
+						<configuration>
+							<appArgLine>-consoleLog -clean -nosplash -debug -consoleLog
+								-application org.eclipse.equinox.p2.director -destination
+								${distro.work.dir}/linux-gtk-x86_64/eclipse/ -profile
+								${profile} -p2.os linux -p2.ws gtk -p2.arch x86_64
+								-repository ${update.sites} -installIUs ${features}
+							</appArgLine>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
 		</plugins>
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.eclipse.tycho.extras</groupId>
+					<artifactId>tycho-eclipserun-plugin</artifactId>
+					<version>${tycho-extras-version}</version>
+					<configuration>
+						<argLine>-Declipse.p2.mirrors=false</argLine>
+						<dependencies>
+							<dependency>
+								<artifactId>org.eclipse.equinox.p2.transport.ecf</artifactId>
+								<type>eclipse-plugin</type>
+							</dependency>
+							<dependency>
+								<artifactId>org.eclipse.equinox.p2.repository</artifactId>
+								<type>eclipse-plugin</type>
+							</dependency>
+							<dependency>
+								<artifactId>org.eclipse.equinox.p2.touchpoint.natives</artifactId>
+								<type>eclipse-plugin</type>
+							</dependency>
+							<dependency>
+								<artifactId>org.eclipse.equinox.p2.touchpoint.eclipse</artifactId>
+								<type>eclipse-plugin</type>
+							</dependency>
+							<dependency>
+								<artifactId>org.eclipse.equinox.p2.artifact.repository
+								</artifactId>
+								<type>eclipse-plugin</type>
+							</dependency>
+							<dependency>
+								<artifactId>org.eclipse.equinox.p2.director.app</artifactId>
+								<type>eclipse-plugin</type>
+							</dependency>
+							<dependency>
+								<artifactId>org.eclipse.equinox.ds</artifactId>
+								<type>eclipse-plugin</type>
+							</dependency>
+						</dependencies>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
 	</build>
 
 	<profiles>
@@ -98,7 +504,6 @@
 									<append>false</append>
 								</configuration>
 							</execution>
-
 						</executions>
 					</plugin>
 				</plugins>