mirror of
https://github.com/corda/corda.git
synced 2024-12-19 21:17:58 +00:00
INFRA-270 Publish archived API docs to Artifactory when tagged (#6309)
* Reintroduce `build.gradle` from 4.4 * Add Jenkins publication logic Co-authored-by: Waldemar Zurowski <waldemar.zurowski@r3.com> Co-authored-by: Ross Nicoll <ross.nicoll@r3.com>
This commit is contained in:
parent
44b5fd1678
commit
1660e7674b
35
.ci/dev/publish-api-docs/Jenkinsfile
vendored
Normal file
35
.ci/dev/publish-api-docs/Jenkinsfile
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
@Library('corda-shared-build-pipeline-steps')
|
||||||
|
|
||||||
|
import static com.r3.build.BuildControl.killAllExistingBuildsForJob
|
||||||
|
|
||||||
|
killAllExistingBuildsForJob(env.JOB_NAME, env.BUILD_NUMBER.toInteger())
|
||||||
|
|
||||||
|
pipeline {
|
||||||
|
agent { label 'standard' }
|
||||||
|
options {
|
||||||
|
ansiColor('xterm')
|
||||||
|
timestamps()
|
||||||
|
timeout(time: 3, unit: 'HOURS')
|
||||||
|
}
|
||||||
|
|
||||||
|
environment {
|
||||||
|
ARTIFACTORY_CREDENTIALS = credentials('artifactory-credentials')
|
||||||
|
CORDA_ARTIFACTORY_USERNAME = "${env.ARTIFACTORY_CREDENTIALS_USR}"
|
||||||
|
CORDA_ARTIFACTORY_PASSWORD = "${env.ARTIFACTORY_CREDENTIALS_PSW}"
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Publish Archived API Docs to Artifactory') {
|
||||||
|
when { tag pattern: /^release-os-V(\d+\.\d+)(\.\d+){0,1}(-GA){0,1}(-\d{4}-\d\d-\d\d-\d{4}){0,1}$/, comparator: 'REGEXP' }
|
||||||
|
steps {
|
||||||
|
sh "./gradlew :clean :docs:artifactoryPublish -DpublishApiDocs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
cleanup {
|
||||||
|
deleteDir() /* clean up our workspace */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
122
docs/build.gradle
Normal file
122
docs/build.gradle
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
import org.apache.tools.ant.taskdefs.condition.Os
|
||||||
|
|
||||||
|
apply plugin: 'org.jetbrains.dokka'
|
||||||
|
apply plugin: 'net.corda.plugins.publish-utils'
|
||||||
|
apply plugin: 'maven-publish'
|
||||||
|
apply plugin: 'com.jfrog.artifactory'
|
||||||
|
|
||||||
|
def internalPackagePrefixes(sourceDirs) {
|
||||||
|
def prefixes = []
|
||||||
|
// Kotlin allows packages to deviate from the directory structure, but let's assume they don't:
|
||||||
|
sourceDirs.collect { sourceDir ->
|
||||||
|
sourceDir.traverse(type: groovy.io.FileType.DIRECTORIES) {
|
||||||
|
if (it.name == 'internal') {
|
||||||
|
prefixes.add sourceDir.toPath().relativize(it.toPath()).toString().replace(File.separator, '.')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
prefixes
|
||||||
|
}
|
||||||
|
|
||||||
|
ext {
|
||||||
|
// TODO: Add '../client/jfx/src/main/kotlin' and '../client/mock/src/main/kotlin' if we decide to make them into public API
|
||||||
|
dokkaSourceDirs = files('../core/src/main/kotlin', '../client/rpc/src/main/kotlin', '../finance/workflows/src/main/kotlin', '../finance/contracts/src/main/kotlin', '../client/jackson/src/main/kotlin',
|
||||||
|
'../testing/test-utils/src/main/kotlin', '../testing/node-driver/src/main/kotlin')
|
||||||
|
internalPackagePrefixes = internalPackagePrefixes(dokkaSourceDirs)
|
||||||
|
archivedApiDocsBaseFilename = 'api-docs'
|
||||||
|
}
|
||||||
|
|
||||||
|
dokka {
|
||||||
|
outputDirectory = file("${rootProject.rootDir}/docs/build/html/api/kotlin")
|
||||||
|
}
|
||||||
|
|
||||||
|
task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {
|
||||||
|
outputFormat = "javadoc"
|
||||||
|
outputDirectory = file("${rootProject.rootDir}/docs/build/html/api/javadoc")
|
||||||
|
}
|
||||||
|
|
||||||
|
[dokka, dokkaJavadoc].collect {
|
||||||
|
it.configure {
|
||||||
|
moduleName = 'corda'
|
||||||
|
processConfigurations = ['compile']
|
||||||
|
sourceDirs = dokkaSourceDirs
|
||||||
|
includes = ['packages.md']
|
||||||
|
jdkVersion = 8
|
||||||
|
externalDocumentationLink {
|
||||||
|
url = new URL("http://fasterxml.github.io/jackson-core/javadoc/2.9/")
|
||||||
|
}
|
||||||
|
externalDocumentationLink {
|
||||||
|
url = new URL("https://docs.oracle.com/javafx/2/api/")
|
||||||
|
}
|
||||||
|
externalDocumentationLink {
|
||||||
|
url = new URL("http://www.bouncycastle.org/docs/docs1.5on/")
|
||||||
|
}
|
||||||
|
internalPackagePrefixes.collect { packagePrefix ->
|
||||||
|
packageOptions {
|
||||||
|
prefix = packagePrefix
|
||||||
|
suppress = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task apidocs(dependsOn: ['dokka', 'dokkaJavadoc']) {
|
||||||
|
group "Documentation"
|
||||||
|
description "Build API documentation"
|
||||||
|
}
|
||||||
|
|
||||||
|
task makeHTMLDocs(type: Exec){
|
||||||
|
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
||||||
|
commandLine "docker", "run", "--rm", "-v", "${project.projectDir}:/opt/docs_builder", "-v", "${project.projectDir}/..:/opt", "corda/docs-builder:latest", "bash", "-c", "make-docsite-html.sh"
|
||||||
|
} else {
|
||||||
|
commandLine "bash", "-c", "docker run --rm --user \$(id -u):\$(id -g) -v ${project.projectDir}:/opt/docs_builder -v ${project.projectDir}/..:/opt corda/docs-builder:latest bash -c make-docsite-html.sh"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task makePDFDocs(type: Exec){
|
||||||
|
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
||||||
|
commandLine "docker", "run", "--rm", "-v", "${project.projectDir}:/opt/docs_builder", "-v", "${project.projectDir}/..:/opt", "corda/docs-builder:latest", "bash", "-c", "make-docsite-pdf.sh"
|
||||||
|
} else {
|
||||||
|
commandLine "bash", "-c", "docker run --rm --user \$(id -u):\$(id -g) -v ${project.projectDir}:/opt/docs_builder -v ${project.projectDir}/..:/opt corda/docs-builder:latest bash -c make-docsite-pdf.sh"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task makeDocs(dependsOn: ['makeHTMLDocs', 'makePDFDocs'])
|
||||||
|
apidocs.shouldRunAfter makeDocs
|
||||||
|
|
||||||
|
task archiveApiDocs(type: Tar) {
|
||||||
|
dependsOn apidocs
|
||||||
|
from buildDir
|
||||||
|
include 'html/**'
|
||||||
|
extension 'tgz'
|
||||||
|
compression Compression.GZIP
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
if (System.getProperty('publishApiDocs') != null) {
|
||||||
|
archivedApiDocs(MavenPublication) {
|
||||||
|
artifact archiveApiDocs {
|
||||||
|
artifactId archivedApiDocsBaseFilename
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
artifactoryPublish {
|
||||||
|
publications('archivedApiDocs')
|
||||||
|
version = version.replaceAll('-SNAPSHOT', '')
|
||||||
|
publishPom = false
|
||||||
|
}
|
||||||
|
|
||||||
|
artifactory {
|
||||||
|
publish {
|
||||||
|
contextUrl = artifactory_contextUrl
|
||||||
|
repository {
|
||||||
|
repoKey = 'corda-dependencies-dev'
|
||||||
|
username = System.getenv('CORDA_ARTIFACTORY_USERNAME')
|
||||||
|
password = System.getenv('CORDA_ARTIFACTORY_PASSWORD')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user