Enforce the release is performed only from RHEL 6.5 or equivalent

Motivation:

Netty must be released from RHEL 6.5 x86_64 or compatible so that:

1) we ship x86_64 version of epoll transport officially, and
2) we ensure the ABI compatibility with older GLIBC versions.
   The shared library built on a distribution with newer GLIBC will not
   run on older distributions.

Modifications:

- When 'release' profile is active, perform an additional check using
  maven-enforcer-plugin so that 'mvn release:*' fails when running on
  non-RHEL6.5.  This rule is active only when releasing, so a user
  should not be affected.
- Simplify maven-release-plugin configuration by removing redundant
  profiles such as 'linux'.  'linux' is automatically activated when
  releasing because we now enforce the release occurs on linux-x86_64.
- Remove the no-osgi profile, which is unused
- Remove the reference to 'sonatype-oss-release' profile in all/pom.xml,
  because we always specify 'release' profile when releasing
- Rename the profile 'linux-native' to 'linux' for brevity
- Upgrade oss-parent and maven-enforcer-plugin

Result:

No one can make a mistake to release Netty on an environment that can
produce incompatible or missing native library.
This commit is contained in:
Trustin Lee 2014-05-02 16:31:40 +09:00
parent df93b35027
commit a566164b98
2 changed files with 65 additions and 13 deletions

View File

@ -41,12 +41,6 @@
<quickbuild>false</quickbuild> <quickbuild>false</quickbuild>
</properties> </properties>
</profile> </profile>
<profile>
<id>sonatype-oss-release</id>
<properties>
<quickbuild>false</quickbuild>
</properties>
</profile>
<profile> <profile>
<id>release</id> <id>release</id>
<properties> <properties>
@ -94,7 +88,7 @@
</build> </build>
</profile> </profile>
<profile> <profile>
<id>linux-native</id> <id>linux</id>
<activation> <activation>
<os> <os>
<family>linux</family> <family>linux</family>

70
pom.xml
View File

@ -20,7 +20,7 @@
<parent> <parent>
<groupId>org.sonatype.oss</groupId> <groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId> <artifactId>oss-parent</artifactId>
<version>7</version> <version>9</version>
</parent> </parent>
<groupId>io.netty</groupId> <groupId>io.netty</groupId>
@ -122,7 +122,7 @@
</properties> </properties>
</profile> </profile>
<profile> <profile>
<id>linux-native</id> <id>linux</id>
<activation> <activation>
<os> <os>
<family>linux</family> <family>linux</family>
@ -132,6 +132,53 @@
<module>transport-native-epoll</module> <module>transport-native-epoll</module>
</modules> </modules>
</profile> </profile>
<!--
Netty must be released from RHEL 6.5 x86_64 or compatible so that:
1) we ship x86_64 version of epoll transport officially, and
2) we ensure the ABI compatibility with older GLIBC versions.
The shared library built on a distribution with newer GLIBC
will not run on older distributions.
-->
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-release-environment</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireProperty>
<regexMessage>
Release process must be performed on linux-x86_64.
</regexMessage>
<property>os.detected.classifier</property>
<regex>^linux-x86_64$</regex>
</requireProperty>
<requireFilesContent>
<message>
Release process must be performed on RHEL 6.5 or its derivatives.
</message>
<files>
<file>/etc/redhat-release</file>
</files>
<content>release 6.5</content>
</requireFilesContent>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles> </profiles>
<properties> <properties>
@ -190,14 +237,14 @@
<scope>compile</scope> <scope>compile</scope>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<!-- SPDY Example - completely optional --> <!-- SPDY Example - completely optional -->
<dependency> <dependency>
<groupId>org.eclipse.jetty.npn</groupId> <groupId>org.eclipse.jetty.npn</groupId>
<artifactId>npn-api</artifactId> <artifactId>npn-api</artifactId>
<version>1.1.0.v20120525</version> <version>1.1.0.v20120525</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.google.protobuf</groupId> <groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId> <artifactId>protobuf-java</artifactId>
@ -373,7 +420,6 @@
<plugins> <plugins>
<plugin> <plugin>
<artifactId>maven-enforcer-plugin</artifactId> <artifactId>maven-enforcer-plugin</artifactId>
<version>1.3</version>
<executions> <executions>
<execution> <execution>
<id>enforce-tools</id> <id>enforce-tools</id>
@ -581,7 +627,7 @@
<version>2.4.2</version> <version>2.4.2</version>
<configuration> <configuration>
<useReleaseProfile>false</useReleaseProfile> <useReleaseProfile>false</useReleaseProfile>
<arguments>-P release,sonatype-oss-release,full,no-osgi,linux-native</arguments> <arguments>-P release,sonatype-oss-release,full</arguments>
<autoVersionSubmodules>true</autoVersionSubmodules> <autoVersionSubmodules>true</autoVersionSubmodules>
<allowTimestampedSnapshots>false</allowTimestampedSnapshots> <allowTimestampedSnapshots>false</allowTimestampedSnapshots>
<tagNameFormat>netty-@{project.version}</tagNameFormat> <tagNameFormat>netty-@{project.version}</tagNameFormat>
@ -737,6 +783,18 @@
<pluginManagement> <pluginManagement>
<plugins> <plugins>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<dependencies>
<!-- Provides the 'requireFilesContent' enforcer rule. -->
<dependency>
<groupId>com.ceilfors.maven.plugin</groupId>
<artifactId>enforcer-rules</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
</plugin>
<!-- keep surefire and failsafe in sync --> <!-- keep surefire and failsafe in sync -->
<plugin> <plugin>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>