Skip to Content
Technical Articles

Running SAP Cloud SDK Pipeline on GitHub Actions

Disclaimer: The setup described in this post is highly experimental. I encourage you to try this out in a demo project, but be very cautions until further notice to use this on productive code. In this proof of concept, I’ll use a public GitHub repository and the beta of GitHub Actions. This setup is not suitable for commercial software.

GitHub Actions is a feature for workflow automation on GitHub, which is still in beta as of September 2019. But it won’t hurt to look into what we can do with it right now.

One month to go until SAP TechEd 2019. Learn more about the sessions featuring the SAP Cloud SDK in our dedicated blog post.

A few months ago, I wrote about an experimental “serverless” SAP Cloud SDK pipeline version, which was demonstrated to work on Travis CI and Azure Pipelines. I tried GitHub Actions at the time, but it was not capable enough, and it was not intended for CI/CD, as GitHub clearly communicated.

But this has changed, Actions is a much more powerful feature now. It is intended to be a CI/CD feature. So, can it run SAP Cloud SDK pipeline?

Yes, it can:

How it works

Essentially, the Action is “just” a Dockerfile with some Metadata. It is based on the existing Jenkinsfile runner by project “piper”. It makes use of the Jenkinsfile runner project, which boots a Jenkins instance, executes the Jenkinsfile in the project directory and throws away the Jenkins instance.

How to use it

Let me reiterate once more that this is not suitable for productive usage.

I’ll assume you have a project based on one of the SAP Cloud SDK maven archetypes. You may also use the Address manager example application.

Create a file called .github/workflows/main.yml with the following content in your project root and enable GitHub Actions in your repository:

on: push
name: Build project
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: Run Pipeline
      uses: SAP/devops-docker-cx-server/jenkinsfile-runner-github-action@master

This instructs GitHub run the project “piper” Action, which then executes the Jenkinsfile in your project’s repository. This may be SAP Cloud SDK pipeline, or another Jenkinsfile you built based on project “piper”.

In addition, you’ll need a file called jenkins.yml in the root of your project where the required Jenkins libraries are configured, like in this example:

jenkins:
  numExecutors: 10
unclassified:
  globallibraries:
    libraries:
    - defaultVersion: "master"
      name: "s4sdk-pipeline-library"
      retriever:
        modernSCM:
          scm:
            git:
              remote: "https://github.com/SAP/cloud-s4-sdk-pipeline-lib.git"
    - defaultVersion: "master"
      name: "piper-library-os"
      retriever:
        modernSCM:
          scm:
            git:
              remote: "https://github.com/SAP/jenkins-library.git"

An example for such a project structure can be found here.

This GitHub Action was inspired by jenkinsci/jenkinsfile-runner-github-actions.

 

Be the first to leave a comment
You must be Logged on to comment or reply to a post.