[HICN-25] Push ci-management script for building and deploying documentation 44/17244/7
authorMauro Sardara <[email protected]>
Fri, 1 Feb 2019 13:10:29 +0000 (14:10 +0100)
committerMauro Sardara <[email protected]>
Tue, 5 Feb 2019 12:58:37 +0000 (12:58 +0000)
Change-Id: I12fefd6352a468d3ce7b659b1f262e3d4c296e06
Signed-off-by: Mauro Sardara <[email protected]>
jjb/hicn/hicn-docs.yaml [new file with mode: 0644]
jjb/hicn/include-raw-hicn-docs.sh [new file with mode: 0644]

diff --git a/jjb/hicn/hicn-docs.yaml b/jjb/hicn/hicn-docs.yaml
new file mode 100644 (file)
index 0000000..ea98f6f
--- /dev/null
@@ -0,0 +1,170 @@
+- project:
+    name: hicn-docs
+    jobs:
+      - 'hicn-docs-merge-{stream}'
+      - 'hicn-docs-verify-{stream}'
+
+    project: 'hicn'
+    os:
+      - ubuntu1604:
+          repo-os-part: 'ubuntu.xenial.main'
+
+    stream:
+      - master:
+          branch: 'master'
+          repo-stream-part: 'master'
+    type:
+      - short
+      - long
+
+- job-template:
+    name: 'hicn-docs-verify-{stream}'
+
+    project-type: freestyle
+    node: ubuntu1604-us
+    concurrent: true
+
+    build-discarder:
+      daysToKeep: '{build-days-to-keep}'
+      numToKeep: '{build-num-to-keep}'
+      artifactDaysToKeep: '{build-artifact-days-to-keep}'
+      artifactNumToKeep: '{build-artifact-num-to-keep}'
+
+    parameters:
+      - project-parameter:
+          project: '{project}'
+      - gerrit-parameter:
+          branch: '{branch}'
+      - os-parameter:
+          os: 'ubuntu1604'
+      - maven-exec:
+          maven-version: 'mvn33-new'
+      - stream-parameter:
+          stream: '{stream}'
+
+    scm:
+      - gerrit-trigger-scm:
+          credentials-id: 'jenkins-gerrit-credentials'
+          refspec: '$GERRIT_REFSPEC'
+          choosing-strategy: 'gerrit'
+
+    wrappers:
+      - fdio-infra-wrappers:
+          build-timeout: '{build-timeout}'
+
+    triggers:
+      - gerrit-trigger-checkstyle:
+          name: '{project}'
+          branch: '{branch}'
+
+    builders:
+      - maven-target:
+          maven-version: 'mvn33-new'
+          goals: '--version'
+          settings: 'hicn-settings'
+          settings-type: cfp
+          global-settings: 'global-settings'
+          global-settings-type: cfp
+      - provide-maven-settings:
+          settings-file: 'hicn-settings'
+          global-settings-file: 'global-settings'
+      - shell:
+          !include-raw-escape: include-raw-hicn-docs.sh
+
+    publishers:
+        - archive:
+            artifacts: 'build/lib/doc/html/*'
+            allow-empty: 'true'
+            fingerprint: false
+            only-if-success: true
+            default-excludes: false
+        - fdio-infra-shiplogs:
+            maven-version: 'mvn33-new'
+        - naginator:
+            rerun-unstable-builds: false
+            max-failed-builds: 1
+            fixed-delay: 90
+
+- job-template:
+    name: 'hicn-docs-merge-{stream}'
+
+    project-type: freestyle
+    node: ubuntu1604-us
+    concurrent: false
+
+    build-discarder:
+      daysToKeep: '{build-days-to-keep}'
+      numToKeep: '{build-num-to-keep}'
+      artifactDaysToKeep: '{build-artifact-days-to-keep}'
+      artifactNumToKeep: '{build-artifact-num-to-keep}'
+
+    parameters:
+      - project-parameter:
+          project: '{project}'
+      - gerrit-parameter:
+          branch: '{branch}'
+      - os-parameter:
+          os: 'ubuntu1604'
+      - maven-exec:
+          maven-version: 'mvn33-new'
+      - stream-parameter:
+          stream: '{stream}'
+
+    scm:
+      - gerrit-trigger-scm:
+          credentials-id: 'jenkins-gerrit-credentials'
+          refspec: ''
+          choosing-strategy: 'default'
+
+    wrappers:
+      - fdio-infra-wrappers:
+          build-timeout: '{build-timeout}'
+
+    triggers:
+      - reverse:
+          jobs: 'hicn-merge-{stream}-ubuntu1604'
+          result: 'success'
+      - gerrit:
+          server-name: 'Primary'
+          trigger-on:
+            - comment-added-contains-event:
+                comment-contains-value: 'run-docs'
+          projects:
+            - project-compare-type: 'ANT'
+              project-pattern: '{project}'
+              branches:
+                - branch-compare-type: 'ANT'
+                  branch-pattern: '**/{branch}'
+          skip-vote:
+            successful: true
+            failed: true
+            unstable: true
+            notbuilt: true
+
+    builders:
+      - maven-target:
+          maven-version: 'mvn33-new'
+          goals: '--version'
+          settings: 'hicn-settings'
+          settings-type: cfp
+          global-settings: 'global-settings'
+          global-settings-type: cfp
+      - provide-maven-settings:
+          settings-file: 'hicn-settings'
+          global-settings-file: 'global-settings'
+      - shell:
+          !include-raw-escape: include-raw-hicn-docs.sh
+
+    publishers:
+      - archive:
+          artifacts: 'build/lib/doc/html/*'
+          allow-empty: 'true'
+          fingerprint: false
+          only-if-success: true
+          default-excludes: false
+      - fdio-infra-shiplogs:
+          maven-version: 'mvn33-new'
+      - naginator:
+          rerun-unstable-builds: false
+          max-failed-builds: 1
+          fixed-delay: 90
diff --git a/jjb/hicn/include-raw-hicn-docs.sh b/jjb/hicn/include-raw-hicn-docs.sh
new file mode 100644 (file)
index 0000000..e012017
--- /dev/null
@@ -0,0 +1,72 @@
+#!/bin/bash
+set -xe -o pipefail
+
+update_cmake_repo() {
+    cat /etc/resolv.conf
+    echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf
+    cat /etc/resolv.conf
+
+    CMAKE_INSTALL_SCRIPT_URL="https://cmake.org/files/v3.8/cmake-3.8.0-Linux-x86_64.sh"
+    CMAKE_INSTALL_SCRIPT="/tmp/install_cmake.sh"
+    curl ${CMAKE_INSTALL_SCRIPT_URL} > ${CMAKE_INSTALL_SCRIPT}
+
+    sudo mkdir -p /opt/cmake
+    sudo bash ${CMAKE_INSTALL_SCRIPT} --skip-license --prefix=/opt/cmake
+    export PATH=/opt/cmake/bin:$PATH
+}
+
+[ "$DOCS_REPO_URL" ] || DOCS_REPO_URL="https://nexus.fd.io/content/sites/site"
+[ "$PROJECT_PATH" ] || PROJECT_PATH="io/fd/hicn"
+[ "$DOC_FILE" ] || DOC_FILE="hicn.docs.zip"
+[ "$DOC_DIR" ] || DOC_DIR="build/lib/doc/html"
+[ "$SITE_DIR" ] || SITE_DIR="build/doc/deploy-site/"
+[ "$RESOURCES_DIR" ] || RESOURCES_DIR=${SITE_DIR}/src/site/resources
+[ "$MVN" ] || MVN="/opt/apache/maven/bin/mvn"
+[ "$VERSION" ] || VERSION=$(git describe --abbrev=0 | egrep -o "([0-9]{1,}\.)+[0-9]{1,}")
+
+echo "Current directory: $(pwd)"
+
+update_cmake_repo
+mkdir -p build
+pushd build
+cmake -DBUILD_HICNPLUGIN=OFF -DBUILD_HICNLIGHT=OFF -DBUILD_LIBTRANSPORT=OFF -DBUILD_UTILS=OFF ..
+make doc
+popd
+
+if [[ ${JOB_NAME} == *merge* ]]; then
+  mkdir -p $(dirname ${RESOURCES_DIR})
+  mv -f ${DOC_DIR} ${RESOURCES_DIR}
+  cd ${SITE_DIR}
+  find . -type f '(' -name '*.md5' -o -name '*.dot' -o -name '*.map' ')' -delete
+  cat > pom.xml << EOF
+  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>io.fd.hicn</groupId>
+    <artifactId>docs</artifactId>
+    <version>1.0.0</version>
+    <packaging>pom</packaging>
+
+    <properties>
+      <generateReports>false</generateReports>
+    </properties>
+
+    <build>
+      <extensions>
+        <extension>
+          <groupId>org.apache.maven.wagon</groupId>
+           <artifactId>wagon-webdav-jackrabbit</artifactId>
+           <version>2.9</version>
+        </extension>
+      </extensions>
+    </build>
+    <distributionManagement>
+      <site>
+        <id>fdio-site</id>
+        <url>dav:${DOCS_REPO_URL}/${PROJECT_PATH}/${VERSION}</url>
+      </site>
+    </distributionManagement>
+  </project>
+EOF
+  ${MVN} site:site site:deploy -gs "${GLOBAL_SETTINGS_FILE}" -s "${SETTINGS_FILE}" -T 4C
+  cd -
+fi