buildscript { dependencies { classpath fileTree(dir: 'plugins', include: '*.jar', exclude: '*-sources.jar') } } repositories { maven { url 'http://maven.ej-technologies.com/repository' } } configurations { providedCompile } dependencies { compile project(":deployment") compile fileTree('vendor') { include '*.jar' exclude '*-sources.jar' } providedCompile files('vendor/install4j-runtime-6.0.4.jar') } dependencies { // Note: uncomment and move into 'plugins' directory if you change it //vendor 'com.install4j:gradle-plugin:6.0.4' // These are actually provided via install4j, but, you'll need them to // create the custom actions. vendor 'com.install4j:install4j-runtime:6.0.4' vendor 'com.install4j:install4j-runtime:6.0.4:sources' } jar { archiveName "hws-install4j.jar" manifest { // attributes("Main-Class": "com.perforce.hws.server.HelixWebServices" ) } from { (configurations.runtime - configurations.providedCompile).collect { it.isDirectory() ? it : zipTree(it) } } } apply plugin: 'install4j' install4j { if (System.getProperty("os.name").contains("Mac OS X")) { installDir = file('/Applications/install4j.app/Contents/Resources/app') } else { installDir = file('/opt/install4j6') } } // I completely suck ass with groovy. // These methods are used for grabbing the version string. // See the VersionFileMethods utility class in the automation project. Maybe // we can just call it instead? // // TODO: Move these methods into a "helper" location, out of this build file String parseVersionValue(line) { def matcher = line =~ /.* = (.*) ;/ if (matcher.matches()) { return matcher.group(1).trim() } else { println "did not match " + line } } Map parseVersionFile(text) { def versionInfo = [:] text.eachLine { li -> if (li.startsWith("RELEASE")) { versionInfo.put("RELEASE", parseVersionValue(li)) } else if (li.startsWith("PATCHLEVEL")) { versionInfo.put("PATCHLEVEL", parseVersionValue(li)) } else if (li.startsWith("SUPPDATE")) { versionInfo.put("SUPPDATE", parseVersionValue(li)) } } def releaseParts = versionInfo["RELEASE"].split("\\s+") def releaseNumBits = [releaseParts[0], releaseParts[1]] versionInfo["productVersion"] = releaseNumBits.join(".") return versionInfo } String changelist() { def versionFile = file('../../../p4/Version') if (versionFile.exists()) { parseVersionFile(versionFile.text)["PATCHLEVEL"] } else { "9999999" } } task(printVersion) << { println productVersion() } task media(type: com.install4j.gradle.Install4jTask) { projectFile = file('hws.install4j') variables = [ sourceDir: file('..').canonicalPath, docArchiveDir: file('../../../../../builds/main/p4-bin/doc/internal').canonicalPath, productVersion: '2016.1.0', p4DocUserDir: file('../../../p4-doc/user').canonicalPath, changelist: changelist() ] dependsOn ':server:jar', ':deployment:jar', ':client-ruby:gem', ':client-javascript:gulpBuild' }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#18 | 19635 | cgrant |
Move doc-like artifacts over to the new location. I.e. p4-doc/... -> p4-bin/doc/... Follow on to add hws to a global change needed across products. See @1392982 for summary. |
||
#17 | 19553 | swellard | Move and rename clients | ||
#16 | 19552 | drobins | Align references to WebApp with the actual class name of HelixWebServices | ||
#15 | 19535 | drobins | Refactor package names to hws | ||
#14 | 19007 | tjuricek |
Remove javadoc and yard "jar" distribution formats. The documentation for all client SDKs are a part of the user guide. |
||
#13 | 18810 | tjuricek |
First-pass at JavaScript client SDK. JavaScript requires Node with Gulp to "browserfy" the library. It's the easiest way I found to use the swagger-js project; bundle up a wrapping method. There is no JavaScript reference guide. The swagger-js doesn't really document what they do very well, actually. Overall I'm not particularly impressed by swagger-js, it was hard to even figure out what the right method syntax was. We may want to invest time in doing it better. This required setting CORS response headers, which are currently defaulted to a fairly insecure setting. |
||
#12 | 18805 | tjuricek |
Added a minimal test suite integration with gradle, and include the gem in the installation process. The installers didn't quite get the revised versions of clients too, so I fixed that as well. We'll follow up with more tests in later work. |
||
#11 | 18795 | tjuricek | Use point-release versioning for the client SDKs and installers. | ||
#10 | 18585 | tjuricek | Adding JavaDoc reference for client libraries to package distributions. | ||
#9 | 18307 | tjuricek |
Switching out use of changelist within the product version for installers, and using as the "release" tag. Also, using rpm -qa to search for installed packages, the "call yum installed helix-web-services and check for error" didn't seem to work correctly. |
||
#8 | 18252 | tjuricek |
Remove documentation dependencies from the install4j tasks. The doc tasks to convert DocBook XML must be run separately. These tasks do not check for status very well, and tend to constantly run no matter what. Also, if they are run within a dependency chain, they can leave artifacts in the curent working directory. This puts a dependency on the module conf to run a "build", but that is where the new automation tasks to simulate the build comes from. |
||
#7 | 18237 | tjuricek | Wire up more task dependencies for the install4j:media and test tasks. | ||
#6 | 18210 | tjuricek |
Switch to building RPMs via rpmbuild. The install4j .rpm works, but, doesn't give you access to metadata fields that are pretty important to repository managers. (Their workflow is that the user downloads the rpm and just installs it, which means no "yum install helix-web-services".) |
||
#5 | 18181 | tjuricek | Add release notes to doc/ directory of distribution. | ||
#4 | 18165 | tjuricek |
First pass at a .deb package that seems to meet packaging standards. I'm basing this information on two wiki pages: https://confluence.perforce.com:8443/display/IP/Package+Naming+Approach https://confluence.perforce.com:8443/display/IP/Packages+Standards Note: This .deb shouldn't be necessarily specific to the ubuntu version, ergo, there is no "~trusty". |
||
#3 | 18163 | tjuricek | The install4j installation directory on Linux includes the major version number. | ||
#2 | 18036 | tjuricek |
Add automated testing for the "binary" archive installation for Linux; revised CD process for new archives. The CD process will generate both binary archives and "raw" packages for the system now. (Note: only the binary archives for Linux are considered ready for automated testing at the moment.) |
||
#1 | 18035 | tjuricek |
Preliminary distribution formats with first-pass post-install configuration script for Linux only. This is *manually verified* at the moment. The testing framework is TBD. This contains *preliminary* hooks for .deb and .rpm packages. Those are *completely untested* and not configured. |