Skip to content
This repository has been archived by the owner on Mar 28, 2020. It is now read-only.

Continuously deliver your presentations to Kubernetes, Maven Sites (Nexus) or GitHub Pages

License

Notifications You must be signed in to change notification settings

cloudogu/continuous-delivery-slides

Repository files navigation

continuous-delivery-slides

Build Status

Note: This repository evolved into cloudogu/reveal.js-docker and is no longer maintained here.

Web-based presentation that features

  • reveal.js with example slides in markdown,
  • Jenkins continuous delivery pipeline that deploys to Nexus repo, GitHub Pages and Kubernetes.
  • It also creates a PDF export of the slides.
  • Toggle "presenter remote" mode using the , key. Off by default.
    • This helps for presenter remotes that use the left/right key, instead of space and back.
    • Workaround: Map left/right keys to next/prev slide functions.
    • Disadvantage: left and right keys are also mapped on the keyboard. But you can toggle back to normal using the , key.
  • Excluding slides from print via <section excludeLocation="?print-pdf" ..> in index.html
  • Print speaker notes on separate page - can be used to provide PDF with more info to the audience while keeping the slides clean.
    Can be switched off in index.html by setting showNotesForPrinting = false.
  • Cloudogu corporate design theme

See also our Blog Posts: Docs As Code - Continuous Delivery of Presentations with reveal.js and Jenkins

You can view the latest version of the presentation

With a git-based wiki such as Smeagol (see Blog Post) you can edit the slides conveniently from the browser. A change there will trigger the the Jenkins pipeline that deploys to

This example also shows how to deploy deploy your GitHub repo to GitHub Pages.

The workflow with a Cloudogu Ecosystem and GitHub are shown bellow.

Cloudogu Ecosystem GitHub
Workflow with Cloudogu Ecosystem Worflow with GitHub

See

Build

See Jenkinsfile.

  • Makes excessive use of the Jenkins shared library ces-build-lib
  • Deploys the presentation to
    • GitHub Pages branch of this repo. To do so, username and password credentials cesmarvin need to be defined in Jenkins. A best practice is to create an access token. These credentials must have write access on the GitHub repo.
      See here for the result.
    • Nexus site repo defined in pom.xml.
      • Username and password credentials ces-nexus need to be defined in Jenkins.
      • These credentials must have write access to the maven site in Nexus:
        • nx-repository-view-raw-<RepoName>-add and
        • nx-repository-view-raw-<RepoName>-edit
        • Where RepoName is defined in pom.xml's url and distributionManagement.site.urls (after /repository/)
        • In this example: nx-repository-view-raw-Cloudogu-Docs-add
      • We need a raw Repo called Cloudogu-Docs in Nexus.
    • the Kubernetes cluster identified by the kubeconfig and the Docker registry defined in Jenkinsfile
      • Docker Registry: Requires username and password credentials hub.docker.com-cesmarvin defined in Jenkins.
        In this example the image cloudogu/continuous-delivery-slides is deployed to Docker Hub.
      • Kubernetes: Requires kubeconfig file defined as Jenkins file credential kubeconfig-oss-deployer. An example for creating the kubeconfig (using create-kubeconfig from zlabjp/kubernetes-scripts):
        kubectl create namespace jenkins-ns
        kubectl create serviceaccount jenkins-sa --namespace=jenkins-ns
        kubectl create rolebinding jenkins-ns-admin --clusterrole=admin --namespace=jenkins-ns --serviceaccount=jenkins-ns:jenkins-sa
        ./create-kubeconfig jenkins-sa --namespace=jenkins-ns > kubeconfig
  • Needs Docker available on the jenkins worker
  • On failure, sends emails to git commiter.