Project "Piper" general purpose pipeline¶
The pipeline consists of a sequence of stages where each contains a number of individual steps.
First step: Pull Request Pipeline¶
In order to validate pull-requests to your GitHub repository you need to perform two simple steps:
1. Create Pipeline configuration¶
Create a file .pipeline/config.yml
in your repository (typically in master
branch) with the following content:
general: buildTool: 'npm'
buildTool
Please make sure that you specify the correct build tool. Following are currently supported:
docker
kaniko
maven
mta
npm
If your build tool is not in the list you can still use further options as described for Pull-Request Voting Stage
2. Create Jenkinsfile¶
Create a file called Jenkinsfile
in the root of your repository (typically in master
branch) with the following content:
@Library('piper-lib-os') _ piperPipeline script: this
There is typically no need to further touch this file
Using custom defaults
It is possible to overwrite/extend the pipeline defaults with custom defaults.
piperPipeline script: this, customDefaults: ['myCustomDefaults.yml']
You find more details about the custom defaults in the configuration section
Second step: Prepare pipeline for your main branch.¶
Extend your configuration to also contain git ssh credentials information.
Your .pipeline/config.yml
should then look like:
general: buildTool: 'npm' gitSshKeyCredentialsId: 'credentials-id-in-jenkins'
gitSshKeyCredentialsId
The pointer to the Jenkins credentials containing your ssh private key is an important part of the pipeline run. The credentials are for example required to push automatic versioning information to your GitHub repository.
Subsequent steps: Configure individual stages¶
The stages of the pipeline can be configured individually. As a general rule of thumb, only stages with an existing configuration are executed.
If no dedicated configuration is required for a step, the precence of relevant files in the repository trigger the step execution.
This smart and context-aware way of configuration allows you an iterative approach to configuring the individual steps.
The pipeline comprises following stages:
Init¶
This stage takes care that the pipeline is initialized correctly. It will for example:
- Check out the GitHub repository
- Set up the overall pipeline configuration and perform basic checks
- Identify which pipeline stages to execute based on the configuration and file patterns
- Perform automatic versioning of the software artifact in case the
master
branch pipeline is executed.
You find details about this stage on Init Stage Details
Pull-Request Voting¶
This stage is responsible for validating pull-requests, see also above.
You find further details about this stage on the page Pull-Request Voting.
Build¶
In this stage the build of the software artifact is performed.
The build artifact will be stash
ed for use in subsequent stages. For Docker
builds the build result will be uploaded to a container registry (as per your configuration).
Afterwards the results of static checks & unit tests are published on the Jenkins.
You find details about this stage on the page Build.
Additional Unit Tests¶
In this stage additional unit-like tests are executed which should not run during the build.
Currently, this stage holds the execution of a Karma runner which allows for
- qUnit tests
- OPA5 (One Page Acceptance tests) for SAP UI5
You find details about this stage on the page Additional Unit Tests.
Integration¶
In the Integration stage a custom integration test script can be executed.
Acceptance¶
Default implementation will come soon ...
Currently custom logic can be added using the stage extension mechanism.
Security¶
Default implementation will come soon ...
Currently custom logic can be added using the stage extension mechanism.
Performance¶
Default implementation will come soon ...
Currently custom logic can be added using the stage extension mechanism.
Compliance¶
Default implementation will come soon ...
Currently custom logic can be added using the stage extension mechanism.
Confirm¶
The Confirm stage, if executed, stops the pipeline execution and asks for manual confirmation before proceeding to the stages Promote and Release.
Promote¶
Default implementation will come soon ...
Currently custom logic can be added using the stage extension mechanism.
Release¶
Default implementation will come soon ...
Currently custom logic can be added using the stage extension mechanism.