1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-01-28 05:47:08 +02:00
2025-01-23 15:41:10 +00:00

3419 lines
66 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" href="images/favicon.ico">
<meta name="generator" content="mkdocs-1.4.2, mkdocs-material-8.5.10">
<title>Project "Piper": Continuous Delivery for the SAP Ecosystem</title>
<link rel="stylesheet" href="assets/stylesheets/main.975780f9.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.2505c338.min.css">
<meta name="theme-color" content="#009485">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="css/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="purple">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#project-piper-user-documentation" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="Project &#34;Piper&#34;: Continuous Delivery for the SAP Ecosystem" class="md-header__button md-logo" aria-label="Project "Piper": Continuous Delivery for the SAP Ecosystem" data-md-component="logo">
<img src="images/piper_400_white.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Project "Piper": Continuous Delivery for the SAP Ecosystem
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Home
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/SAP/jenkins-library" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="." title="Project &#34;Piper&#34;: Continuous Delivery for the SAP Ecosystem" class="md-nav__button md-logo" aria-label="Project "Piper": Continuous Delivery for the SAP Ecosystem" data-md-component="logo">
<img src="images/piper_400_white.png" alt="logo">
</a>
Project "Piper": Continuous Delivery for the SAP Ecosystem
</label>
<div class="md-nav__source">
<a href="https://github.com/SAP/jenkins-library" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
Home
<span class="md-nav__icon md-icon"></span>
</label>
<a href="." class="md-nav__link md-nav__link--active">
Home
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#what-you-get" class="md-nav__link">
What you get
</a>
<nav class="md-nav" aria-label="What you get">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#the-best-practice-way-ready-made-pipelines" class="md-nav__link">
The Best-Practice Way: Ready-Made Pipelines
</a>
</li>
<li class="md-nav__item">
<a href="#the-do-it-yourself-way-customized-pipelines" class="md-nav__link">
The Do-It-Yourself Way: Customized Pipelines
</a>
<nav class="md-nav" aria-label="The Do-It-Yourself Way: Customized Pipelines">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#extensibility" class="md-nav__link">
Extensibility
</a>
</li>
<li class="md-nav__item">
<a href="#api" class="md-nav__link">
API
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="guidedtour/" class="md-nav__link">
Getting Started With Project "Piper"
</a>
</li>
<li class="md-nav__item">
<a href="configuration/" class="md-nav__link">
Configuration
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4">
Infrastructure
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Infrastructure" data-md-level="1">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Infrastructure
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="infrastructure/overview/" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="infrastructure/customjenkins/" class="md-nav__link">
Custom Jenkins Setup
</a>
</li>
<li class="md-nav__item">
<a href="infrastructure/vault/" class="md-nav__link">
Vault For Pipline Secrets
</a>
</li>
<li class="md-nav__item">
<a href="infrastructure/docker-rate-limit/" class="md-nav__link">
Fixing docker rate limit
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5">
Pipelines
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Pipelines" data-md-level="1">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Pipelines
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_1" type="checkbox" id="__nav_5_1" >
<label class="md-nav__link" for="__nav_5_1">
ABAP Environment pipeline
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="ABAP Environment pipeline" data-md-level="2">
<label class="md-nav__title" for="__nav_5_1">
<span class="md-nav__icon md-icon"></span>
ABAP Environment pipeline
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/introduction/" class="md-nav__link">
Introduction
</a>
</li>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/configuration/" class="md-nav__link">
Configuration
</a>
</li>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/extensibility/" class="md-nav__link">
Extensibility
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_1_4" type="checkbox" id="__nav_5_1_4" >
<label class="md-nav__link" for="__nav_5_1_4">
Stages
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Stages" data-md-level="3">
<label class="md-nav__title" for="__nav_5_1_4">
<span class="md-nav__icon md-icon"></span>
Stages
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/stages/initialChecks/" class="md-nav__link">
Initial Checks
</a>
</li>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/stages/prepareSystem/" class="md-nav__link">
Prepare System
</a>
</li>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/stages/cloneRepositories/" class="md-nav__link">
Clone Repositories
</a>
</li>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/stages/test/" class="md-nav__link">
Test
</a>
</li>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/stages/build/" class="md-nav__link">
Build
</a>
</li>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/stages/integrationTest/" class="md-nav__link">
Integration Tests
</a>
</li>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/stages/confirm/" class="md-nav__link">
Confirm
</a>
</li>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/stages/publish/" class="md-nav__link">
Publish
</a>
</li>
<li class="md-nav__item">
<a href="pipelines/abapEnvironment/stages/post/" class="md-nav__link">
Post
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_2" type="checkbox" id="__nav_5_2" >
<label class="md-nav__link" for="__nav_5_2">
General purpose pipeline
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="General purpose pipeline" data-md-level="2">
<label class="md-nav__title" for="__nav_5_2">
<span class="md-nav__icon md-icon"></span>
General purpose pipeline
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="stages/introduction/" class="md-nav__link">
Introduction
</a>
</li>
<li class="md-nav__item">
<a href="stages/examples/" class="md-nav__link">
Examples
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_2_3" type="checkbox" id="__nav_5_2_3" >
<label class="md-nav__link" for="__nav_5_2_3">
Stages
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Stages" data-md-level="3">
<label class="md-nav__title" for="__nav_5_2_3">
<span class="md-nav__icon md-icon"></span>
Stages
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="stages/init/" class="md-nav__link">
Init Stage
</a>
</li>
<li class="md-nav__item">
<a href="stages/prvoting/" class="md-nav__link">
Pull-Request Voting Stage
</a>
</li>
<li class="md-nav__item">
<a href="stages/build/" class="md-nav__link">
Build Stage
</a>
</li>
<li class="md-nav__item">
<a href="stages/additionalunittests/" class="md-nav__link">
Additional Unit Test Stage
</a>
</li>
<li class="md-nav__item">
<a href="stages/integration/" class="md-nav__link">
Integration Stage
</a>
</li>
<li class="md-nav__item">
<a href="stages/acceptance/" class="md-nav__link">
Acceptance Stage
</a>
</li>
<li class="md-nav__item">
<a href="stages/security/" class="md-nav__link">
Security Stage
</a>
</li>
<li class="md-nav__item">
<a href="stages/performance/" class="md-nav__link">
Performance Stage
</a>
</li>
<li class="md-nav__item">
<a href="stages/compliance/" class="md-nav__link">
Compliance
</a>
</li>
<li class="md-nav__item">
<a href="stages/confirm/" class="md-nav__link">
Confirm Stage
</a>
</li>
<li class="md-nav__item">
<a href="stages/promote/" class="md-nav__link">
Promote Stage
</a>
</li>
<li class="md-nav__item">
<a href="stages/release/" class="md-nav__link">
Release Stage
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6">
Scenarios
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Scenarios" data-md-level="1">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Scenarios
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="scenarios/changeManagement/" class="md-nav__link">
Build and Deploy Hybrid Applications with SAP Solution Manager
</a>
</li>
<li class="md-nav__item">
<a href="scenarios/ui5-sap-cp/Readme/" class="md-nav__link">
Build and Deploy SAPUI5/SAP Fiori Applications on SAP BTP
</a>
</li>
<li class="md-nav__item">
<a href="scenarios/CAP_Scenario/" class="md-nav__link">
Build and Deploy SAP Cloud Application Programming Model Applications
</a>
</li>
<li class="md-nav__item">
<a href="scenarios/TMS_Extension/" class="md-nav__link">
Integrate SAP Cloud Transport Management Into Your CI/CD Pipeline
</a>
</li>
<li class="md-nav__item">
<a href="scenarios/xsa-deploy/Readme/" class="md-nav__link">
Build and Deploy SAP Fiori Applications on SAP HANA Extended Application Services, Advanced Model
</a>
</li>
<li class="md-nav__item">
<a href="scenarios/upload-to-transportrequest/Readme/" class="md-nav__link">
Build an SAP Fiori Application and Attach It to a Transport Request on an ABAP System
</a>
</li>
<li class="md-nav__item">
<a href="scenarios/abapEnvironmentAddons/" class="md-nav__link">
Build and Publish Add-on Products on SAP BTP, ABAP Environment
</a>
</li>
<li class="md-nav__item">
<a href="scenarios/abapEnvironmentTest/" class="md-nav__link">
Continuous Testing on SAP BTP, ABAP Environment
</a>
</li>
<li class="md-nav__item">
<a href="scenarios/gCTS_Scenario/" class="md-nav__link">
Set up a Pipeline-Based ABAP Development and Testing Process Using Git-Enabled Change and Transport System
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="extensibility/" class="md-nav__link">
Extensibility
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8">
Library steps
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Library steps" data-md-level="1">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Library steps
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8_1" type="checkbox" id="__nav_8_1" >
<label class="md-nav__link" for="__nav_8_1">
abapAddonAssemblyKit
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="abapAddonAssemblyKit" data-md-level="2">
<label class="md-nav__title" for="__nav_8_1">
<span class="md-nav__icon md-icon"></span>
abapAddonAssemblyKit
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="steps/abapAddonAssemblyKitCheck/" class="md-nav__link">
Check
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapAddonAssemblyKitCheckCVs/" class="md-nav__link">
CheckCVs
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapAddonAssemblyKitCheckPV/" class="md-nav__link">
CheckPV
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapAddonAssemblyKitCreateTargetVector/" class="md-nav__link">
CreateTargetVector
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapAddonAssemblyKitPublishTargetVector/" class="md-nav__link">
PublishTargetVector
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapAddonAssemblyKitRegisterPackages/" class="md-nav__link">
RegisterPackages
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapAddonAssemblyKitReleasePackages/" class="md-nav__link">
ReleasePackages
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapAddonAssemblyKitReserveNextPackages/" class="md-nav__link">
ReserveNextPackages
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentBuild/" class="md-nav__link">
abapEnvironmentBuild
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentAssemblePackages/" class="md-nav__link">
abapEnvironmentAssemblePackages
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentAssembleConfirm/" class="md-nav__link">
abapEnvironmentAssembleConfirm
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentCheckoutBranch/" class="md-nav__link">
abapEnvironmentCheckoutBranch
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentCloneGitRepo/" class="md-nav__link">
abapEnvironmentCloneGitRepo
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentCreateSystem/" class="md-nav__link">
abapEnvironmentCreateSystem
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentCreateTag/" class="md-nav__link">
abapEnvironmentCreateTag
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentPullGitRepo/" class="md-nav__link">
abapEnvironmentPullGitRepo
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentPushATCSystemConfig/" class="md-nav__link">
abapEnvironmentPushATCSystemConfig
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentRunATCCheck/" class="md-nav__link">
abapEnvironmentRunATCCheck
</a>
</li>
<li class="md-nav__item">
<a href="steps/abapEnvironmentRunAUnitTest/" class="md-nav__link">
abapEnvironmentRunAUnitTest
</a>
</li>
<li class="md-nav__item">
<a href="steps/apiKeyValueMapDownload/" class="md-nav__link">
apiKeyValueMapDownload
</a>
</li>
<li class="md-nav__item">
<a href="steps/apiKeyValueMapUpload/" class="md-nav__link">
apiKeyValueMapUpload
</a>
</li>
<li class="md-nav__item">
<a href="steps/apiProxyDownload/" class="md-nav__link">
apiProxyDownload
</a>
</li>
<li class="md-nav__item">
<a href="steps/apiProxyList/" class="md-nav__link">
apiProxyList
</a>
</li>
<li class="md-nav__item">
<a href="steps/apiProviderDownload/" class="md-nav__link">
apiProviderDownload
</a>
</li>
<li class="md-nav__item">
<a href="steps/apiProviderList/" class="md-nav__link">
apiProviderList
</a>
</li>
<li class="md-nav__item">
<a href="steps/apiProviderUpload/" class="md-nav__link">
apiProviderUpload
</a>
</li>
<li class="md-nav__item">
<a href="steps/apiProxyUpload/" class="md-nav__link">
apiProxyUpload
</a>
</li>
<li class="md-nav__item">
<a href="steps/artifactPrepareVersion/" class="md-nav__link">
artifactPrepareVersion
</a>
</li>
<li class="md-nav__item">
<a href="steps/awsS3Upload/" class="md-nav__link">
awsS3Upload
</a>
</li>
<li class="md-nav__item">
<a href="steps/azureBlobUpload/" class="md-nav__link">
azureBlobUpload
</a>
</li>
<li class="md-nav__item">
<a href="steps/batsExecuteTests/" class="md-nav__link">
batsExecuteTests
</a>
</li>
<li class="md-nav__item">
<a href="steps/buildExecute/" class="md-nav__link">
buildExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/checkmarxExecuteScan/" class="md-nav__link">
checkmarxExecuteScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/checkmarxOneExecuteScan/" class="md-nav__link">
checkmarxOneExecuteScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/checksPublishResults/" class="md-nav__link">
checksPublishResults
</a>
</li>
<li class="md-nav__item">
<a href="steps/cfManifestSubstituteVariables/" class="md-nav__link">
cfManifestSubstituteVariables
</a>
</li>
<li class="md-nav__item">
<a href="steps/cloudFoundryCreateService/" class="md-nav__link">
cloudFoundryCreateService
</a>
</li>
<li class="md-nav__item">
<a href="steps/cloudFoundryCreateServiceKey/" class="md-nav__link">
cloudFoundryCreateServiceKey
</a>
</li>
<li class="md-nav__item">
<a href="steps/cloudFoundryDeleteService/" class="md-nav__link">
cloudFoundryDeleteService
</a>
</li>
<li class="md-nav__item">
<a href="steps/cloudFoundryDeploy/" class="md-nav__link">
cloudFoundryDeploy
</a>
</li>
<li class="md-nav__item">
<a href="steps/cnbBuild/" class="md-nav__link">
cnbBuild
</a>
</li>
<li class="md-nav__item">
<a href="steps/codeqlExecuteScan/" class="md-nav__link">
codeqlExecuteScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/commonPipelineEnvironment/" class="md-nav__link">
commonPipelineEnvironment
</a>
</li>
<li class="md-nav__item">
<a href="steps/containerExecuteStructureTests/" class="md-nav__link">
containerExecuteStructureTests
</a>
</li>
<li class="md-nav__item">
<a href="steps/containerPushToRegistry/" class="md-nav__link">
containerPushToRegistry
</a>
</li>
<li class="md-nav__item">
<a href="steps/contrastExecuteScan/" class="md-nav__link">
contrastExecuteScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/credentialdiggerScan/" class="md-nav__link">
credentialdiggerScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/debugReportArchive/" class="md-nav__link">
debugReportArchive
</a>
</li>
<li class="md-nav__item">
<a href="steps/detectExecuteScan/" class="md-nav__link">
detectExecuteScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/dockerExecute/" class="md-nav__link">
dockerExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/dockerExecuteOnKubernetes/" class="md-nav__link">
dockerExecuteOnKubernetes
</a>
</li>
<li class="md-nav__item">
<a href="steps/dubExecute/" class="md-nav__link">
dubExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/durationMeasure/" class="md-nav__link">
durationMeasure
</a>
</li>
<li class="md-nav__item">
<a href="steps/fortifyExecuteScan/" class="md-nav__link">
fortifyExecuteScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/gatlingExecuteTests/" class="md-nav__link">
gatlingExecuteTests
</a>
</li>
<li class="md-nav__item">
<a href="steps/gaugeExecuteTests/" class="md-nav__link">
gaugeExecuteTests
</a>
</li>
<li class="md-nav__item">
<a href="steps/gctsCloneRepository/" class="md-nav__link">
gctsCloneRepository
</a>
</li>
<li class="md-nav__item">
<a href="steps/gctsCreateRepository/" class="md-nav__link">
gctsCreateRepository
</a>
</li>
<li class="md-nav__item">
<a href="steps/gctsDeploy/" class="md-nav__link">
gctsDeploy
</a>
</li>
<li class="md-nav__item">
<a href="steps/gctsExecuteABAPQualityChecks/" class="md-nav__link">
gctsExecuteABAPQualityChecks
</a>
</li>
<li class="md-nav__item">
<a href="steps/gctsRollback/" class="md-nav__link">
gctsRollback
</a>
</li>
<li class="md-nav__item">
<a href="steps/githubCheckBranchProtection/" class="md-nav__link">
githubCheckBranchProtection
</a>
</li>
<li class="md-nav__item">
<a href="steps/githubCommentIssue/" class="md-nav__link">
githubCommentIssue
</a>
</li>
<li class="md-nav__item">
<a href="steps/githubCreateIssue/" class="md-nav__link">
githubCreateIssue
</a>
</li>
<li class="md-nav__item">
<a href="steps/githubCreatePullRequest/" class="md-nav__link">
githubCreatePullRequest
</a>
</li>
<li class="md-nav__item">
<a href="steps/githubPublishRelease/" class="md-nav__link">
githubPublishRelease
</a>
</li>
<li class="md-nav__item">
<a href="steps/githubSetCommitStatus/" class="md-nav__link">
githubSetCommitStatus
</a>
</li>
<li class="md-nav__item">
<a href="steps/gitopsUpdateDeployment/" class="md-nav__link">
gitopsUpdateDeployment
</a>
</li>
<li class="md-nav__item">
<a href="steps/gradleExecuteBuild/" class="md-nav__link">
gradleExecuteBuild
</a>
</li>
<li class="md-nav__item">
<a href="steps/hadolintExecute/" class="md-nav__link">
hadolintExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/handlePipelineStepErrors/" class="md-nav__link">
handlePipelineStepErrors
</a>
</li>
<li class="md-nav__item">
<a href="steps/healthExecuteCheck/" class="md-nav__link">
healthExecuteCheck
</a>
</li>
<li class="md-nav__item">
<a href="steps/helmExecute/" class="md-nav__link">
helmExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/imagePushToRegistry/" class="md-nav__link">
imagePushToRegistry
</a>
</li>
<li class="md-nav__item">
<a href="steps/influxWriteData/" class="md-nav__link">
influxWriteData
</a>
</li>
<li class="md-nav__item">
<a href="steps/integrationArtifactDeploy/" class="md-nav__link">
integrationArtifactDeploy
</a>
</li>
<li class="md-nav__item">
<a href="steps/integrationArtifactDownload/" class="md-nav__link">
integrationArtifactDownload
</a>
</li>
<li class="md-nav__item">
<a href="steps/integrationArtifactGetMplStatus/" class="md-nav__link">
integrationArtifactGetMplStatus
</a>
</li>
<li class="md-nav__item">
<a href="steps/integrationArtifactGetServiceEndpoint/" class="md-nav__link">
integrationArtifactGetServiceEndpoint
</a>
</li>
<li class="md-nav__item">
<a href="steps/integrationArtifactResource/" class="md-nav__link">
integrationArtifactResource
</a>
</li>
<li class="md-nav__item">
<a href="steps/integrationArtifactTransport/" class="md-nav__link">
integrationArtifactTransport
</a>
</li>
<li class="md-nav__item">
<a href="steps/integrationArtifactUnDeploy/" class="md-nav__link">
integrationArtifactUnDeploy
</a>
</li>
<li class="md-nav__item">
<a href="steps/integrationArtifactUpdateConfiguration/" class="md-nav__link">
integrationArtifactUpdateConfiguration
</a>
</li>
<li class="md-nav__item">
<a href="steps/integrationArtifactUpload/" class="md-nav__link">
integrationArtifactUpload
</a>
</li>
<li class="md-nav__item">
<a href="steps/isChangeInDevelopment/" class="md-nav__link">
isChangeInDevelopment
</a>
</li>
<li class="md-nav__item">
<a href="steps/jenkinsMaterializeLog/" class="md-nav__link">
jenkinsMaterializeLog
</a>
</li>
<li class="md-nav__item">
<a href="steps/kanikoExecute/" class="md-nav__link">
kanikoExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/karmaExecuteTests/" class="md-nav__link">
karmaExecuteTests
</a>
</li>
<li class="md-nav__item">
<a href="steps/kubernetesDeploy/" class="md-nav__link">
kubernetesDeploy
</a>
</li>
<li class="md-nav__item">
<a href="steps/mailSendNotification/" class="md-nav__link">
mailSendNotification
</a>
</li>
<li class="md-nav__item">
<a href="steps/malwareExecuteScan/" class="md-nav__link">
malwareExecuteScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/mavenBuild/" class="md-nav__link">
mavenBuild
</a>
</li>
<li class="md-nav__item">
<a href="steps/mavenExecute/" class="md-nav__link">
mavenExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/mavenExecuteIntegration/" class="md-nav__link">
mavenExecuteIntegration
</a>
</li>
<li class="md-nav__item">
<a href="steps/mavenExecuteStaticCodeChecks/" class="md-nav__link">
mavenExecuteStaticCodeChecks
</a>
</li>
<li class="md-nav__item">
<a href="steps/mtaBuild/" class="md-nav__link">
mtaBuild
</a>
</li>
<li class="md-nav__item">
<a href="steps/multicloudDeploy/" class="md-nav__link">
multicloudDeploy
</a>
</li>
<li class="md-nav__item">
<a href="steps/neoDeploy/" class="md-nav__link">
neoDeploy
</a>
</li>
<li class="md-nav__item">
<a href="steps/newmanExecute/" class="md-nav__link">
newmanExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/nexusUpload/" class="md-nav__link">
nexusUpload
</a>
</li>
<li class="md-nav__item">
<a href="steps/npmExecuteEndToEndTests/" class="md-nav__link">
npmExecuteEndToEndTests
</a>
</li>
<li class="md-nav__item">
<a href="steps/npmExecuteLint/" class="md-nav__link">
npmExecuteLint
</a>
</li>
<li class="md-nav__item">
<a href="steps/npmExecuteScripts/" class="md-nav__link">
npmExecuteScripts
</a>
</li>
<li class="md-nav__item">
<a href="steps/npmExecuteTests/" class="md-nav__link">
npmExecuteTests
</a>
</li>
<li class="md-nav__item">
<a href="steps/pipelineExecute/" class="md-nav__link">
pipelineExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/pipelineRestartSteps/" class="md-nav__link">
pipelineRestartSteps
</a>
</li>
<li class="md-nav__item">
<a href="steps/pipelineStashFiles/" class="md-nav__link">
pipelineStashFiles
</a>
</li>
<li class="md-nav__item">
<a href="steps/pipelineStashFilesAfterBuild/" class="md-nav__link">
pipelineStashFilesAfterBuild
</a>
</li>
<li class="md-nav__item">
<a href="steps/pipelineStashFilesBeforeBuild/" class="md-nav__link">
pipelineStashFilesBeforeBuild
</a>
</li>
<li class="md-nav__item">
<a href="steps/piperLoadGlobalExtensions/" class="md-nav__link">
piperLoadGlobalExtensions
</a>
</li>
<li class="md-nav__item">
<a href="steps/piperPublishWarnings/" class="md-nav__link">
piperPublishWarnings
</a>
</li>
<li class="md-nav__item">
<a href="steps/prepareDefaultValues/" class="md-nav__link">
prepareDefaultValues
</a>
</li>
<li class="md-nav__item">
<a href="steps/protecodeExecuteScan/" class="md-nav__link">
protecodeExecuteScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/pythonBuild/" class="md-nav__link">
pythonBuild
</a>
</li>
<li class="md-nav__item">
<a href="steps/seleniumExecuteTests/" class="md-nav__link">
seleniumExecuteTests
</a>
</li>
<li class="md-nav__item">
<a href="steps/setupCommonPipelineEnvironment/" class="md-nav__link">
setupCommonPipelineEnvironment
</a>
</li>
<li class="md-nav__item">
<a href="steps/shellExecute/" class="md-nav__link">
shellExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/slackSendNotification/" class="md-nav__link">
slackSendNotification
</a>
</li>
<li class="md-nav__item">
<a href="steps/snykExecute/" class="md-nav__link">
snykExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/sonarExecuteScan/" class="md-nav__link">
sonarExecuteScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/spinnakerTriggerPipeline/" class="md-nav__link">
spinnakerTriggerPipeline
</a>
</li>
<li class="md-nav__item">
<a href="steps/testsPublishResults/" class="md-nav__link">
testsPublishResults
</a>
</li>
<li class="md-nav__item">
<a href="steps/tmsUpload/" class="md-nav__link">
tmsUpload
</a>
</li>
<li class="md-nav__item">
<a href="steps/tmsExport/" class="md-nav__link">
tmsExport
</a>
</li>
<li class="md-nav__item">
<a href="steps/transportRequestDocIDFromGit/" class="md-nav__link">
transportRequestDocIDFromGit
</a>
</li>
<li class="md-nav__item">
<a href="steps/transportRequestReqIDFromGit/" class="md-nav__link">
transportRequestReqIDFromGit
</a>
</li>
<li class="md-nav__item">
<a href="steps/transportRequestUploadCTS/" class="md-nav__link">
transportRequestUploadCTS
</a>
</li>
<li class="md-nav__item">
<a href="steps/transportRequestUploadRFC/" class="md-nav__link">
transportRequestUploadRFC
</a>
</li>
<li class="md-nav__item">
<a href="steps/transportRequestUploadSOLMAN/" class="md-nav__link">
transportRequestUploadSOLMAN
</a>
</li>
<li class="md-nav__item">
<a href="steps/uiVeri5ExecuteTests/" class="md-nav__link">
uiVeri5ExecuteTests
</a>
</li>
<li class="md-nav__item">
<a href="steps/vaultRotateSecretId/" class="md-nav__link">
vaultRotateSecretId
</a>
</li>
<li class="md-nav__item">
<a href="steps/whitesourceExecuteScan/" class="md-nav__link">
whitesourceExecuteScan
</a>
</li>
<li class="md-nav__item">
<a href="steps/writeTemporaryCredentials/" class="md-nav__link">
writeTemporaryCredentials
</a>
</li>
<li class="md-nav__item">
<a href="steps/xsDeploy/" class="md-nav__link">
xsDeploy
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9">
Library Steps (deprecated)
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Library Steps (deprecated)" data-md-level="1">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Library Steps (deprecated)
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="steps/artifactSetVersion/" class="md-nav__link">
artifactSetVersion
</a>
</li>
<li class="md-nav__item">
<a href="steps/checkChangeInDevelopment/" class="md-nav__link">
checkChangeInDevelopment
</a>
</li>
<li class="md-nav__item">
<a href="steps/npmExecute/" class="md-nav__link">
npmExecute
</a>
</li>
<li class="md-nav__item">
<a href="steps/transportRequestCreate/" class="md-nav__link">
transportRequestCreate
</a>
</li>
<li class="md-nav__item">
<a href="steps/transportRequestRelease/" class="md-nav__link">
transportRequestRelease
</a>
</li>
<li class="md-nav__item">
<a href="steps/transportRequestUploadFile/" class="md-nav__link">
transportRequestUploadFile
</a>
</li>
<li class="md-nav__item">
<a href="steps/gctsExecuteABAPUnitTests/" class="md-nav__link">
gctsExecuteABAPUnitTests
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="cli/" class="md-nav__link">
Command line tool
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#what-you-get" class="md-nav__link">
What you get
</a>
<nav class="md-nav" aria-label="What you get">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#the-best-practice-way-ready-made-pipelines" class="md-nav__link">
The Best-Practice Way: Ready-Made Pipelines
</a>
</li>
<li class="md-nav__item">
<a href="#the-do-it-yourself-way-customized-pipelines" class="md-nav__link">
The Do-It-Yourself Way: Customized Pipelines
</a>
<nav class="md-nav" aria-label="The Do-It-Yourself Way: Customized Pipelines">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#extensibility" class="md-nav__link">
Extensibility
</a>
</li>
<li class="md-nav__item">
<a href="#api" class="md-nav__link">
API
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/SAP/jenkins-library/edit/master/documentation/docs/index.md" title="Edit this page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z"/></svg>
</a>
<h1 id="project-piper-user-documentation">Project "Piper" User Documentation<a class="headerlink" href="#project-piper-user-documentation" title="Permanent link">&para;</a></h1>
<p>Easily set up continuous delivery in your software development using SAP technologies.
Continuous delivery is a method to develop software with short feedback cycles. It is applicable to projects both on the SAP Business Technology Platform (BTP) and on SAP on-premise platforms.
SAP implements tooling for continuous delivery in project "Piper".</p>
<h2 id="what-you-get">What you get<a class="headerlink" href="#what-you-get" title="Permanent link">&para;</a></h2>
<p>To get started with project "Piper", you can choose from the following offerings:</p>
<ul>
<li>A set of predefined pipelines that build, test, and deploy your code changes</li>
</ul>
<p>You can choose between the following use cases:</p>
<ul>
<li><a href="pipelines/abapEnvironment/introduction/">ABAP Environment Pipeline</a></li>
<li><a href="stages/introduction/">General Purpose Pipeline</a></li>
<li><a href="https://github.com/SAP/jenkins-library">A shared library</a> that contains reusable step implementations, which enable you to customize the preconfigured pipelines or to build your own ones, if necessary</li>
<li>
<p>A standalone <a href="cli">command line utility</a> for Linux and a <a href="https://github.com/SAP/project-piper-action">GitHub Action</a>
<strong>Note:</strong> This version is still in early development and might not contain all features of the Jenkins library, yet. Feel free to use it and <a href="https://github.com/SAP/jenkins-library/issues">provide feedback</a>.</p>
</li>
<li>
<p>A set of <a href="https://github.com/SAP/devops-docker-images">Docker images</a> to easily set up a CI/CD environment using sophisticated life-cycle management</p>
</li>
</ul>
<p>To find out which offering is right for you, we recommend you to look at the preconfigured pipelines first. In most cases, you don't need to build your own pipelines - you can use the ready-made ones and adapt them according to your needs, if necessary.</p>
<p>If you don't need to care about the underlying infrastructure of your pipelines, you can use the <a href="https://help.sap.com/docs/CONTINUOUS_DELIVERY">SAP Continuous Integration and Delivery</a> service on SAP BTP. It offers an easy, UI-guided way to set up continuous integration and delivery without hosting your own Jenkins instance.</p>
<p><img alt="SAP CI/CD vs Project &quot;Piper&quot;" src="images/CICD_Piper.png" title="Solution Comparison" /></p>
<p>The support infrastructure for SAP Continuous Integration and Delivery is provided by SAP according to the Service Level Agreements (SLAs). Project "Piper" offers community support using GitHub issues and pull requests. Users are free to contribute to the repository independently. See <a href="https://github.com/SAP/jenkins-library/blob/master/CONTRIBUTING.md">Contributing</a>.</p>
<p>For more information about the CI/CD solutions offered by SAP, see <a href="https://help.sap.com/docs/CICD_OVERVIEW/8cacec64ed854b2a88e9a0973e0f97a2/e9fa320181124fa9808d4446a1bf69dd.html">SAP Solutions for Continuous Integration and Delivery</a>.</p>
<p>To learn more about the continuous integration and delivery offerings by SAP, see <a href="https://help.sap.com/docs/CICD_OVERVIEW">Continuous Integration and Delivery by SAP</a> and <a href="https://help.sap.com/learning-journeys/b76f0b2e5d534c449c1f3b0fa84ab697">Continuous Integration and Delivery by SAP Learning Journey</a>.</p>
<h3 id="the-best-practice-way-ready-made-pipelines">The Best-Practice Way: Ready-Made Pipelines<a class="headerlink" href="#the-best-practice-way-ready-made-pipelines" title="Permanent link">&para;</a></h3>
<p>Use the <a href="stages/introduction/">general purpose pipeline</a> to build a standalone SAP BTP application or an SAP Cloud Application Programming Model application project. It supports various technologies and programming languages.</p>
<h3 id="the-do-it-yourself-way-customized-pipelines">The Do-It-Yourself Way: Customized Pipelines<a class="headerlink" href="#the-do-it-yourself-way-customized-pipelines" title="Permanent link">&para;</a></h3>
<p>The shared library contains building blocks for your own pipelines using Jenkins pipelines to implement best practice processes. For more information, see the <strong>Scenarios</strong> section from the navigation pane.</p>
<p>The best practice pipelines are based on the general concepts of <a href="https://jenkins.io/solutions/pipeline">Pipelines as Code, as introduced in Jenkins 2</a>.
This way, you can optimize your pipelines with the help of the Jenkins community.</p>
<p>You can run the best practice Jenkins pipelines out-of-the-box, use them for project-specific adaptations, or create your own pipelines from scratch using the shared library.</p>
<p>For an example, see the <a href="scenarios/ui5-sap-cp/Readme/">Build and Deploy SAPUI5 or SAP Fiori Applications on SAP Business Technology Platform (SAP BTP) with Jenkins</a> scenario.</p>
<h4 id="extensibility">Extensibility<a class="headerlink" href="#extensibility" title="Permanent link">&para;</a></h4>
<p>For the vast majority of <em>standard</em> projects, the features of the ready-made pipelines should be enough to implement <a href="https://martinfowler.com/bliki/ContinuousDelivery.html">Continuous Delivery</a> with little effort in a best-practice compliant way.
If you require more flexibility, our documentation on <a href="extensibility">Extensibility</a> discusses available options.</p>
<h4 id="api">API<a class="headerlink" href="#api" title="Permanent link">&para;</a></h4>
<p>All steps (<code>vars</code> and <code>resources</code> directory) are intended to be used by Pipelines and are considered API.
All the classes / groovy-scripts contained in the <code>src</code> folder are by default not part of
the API and are subjected to change without prior notice. Types and methods annotated with
<code>@API</code> are considered to be API, used e.g. from other shared libraries. Changes to those
methods/types needs to be announced, discussed and agreed.</p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer" >
<a href="guidedtour/" class="md-footer__link md-footer__link--next" aria-label="Next: Getting Started With Project &#34;Piper&#34;" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Getting Started With Project "Piper"
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": ".", "features": [], "search": "assets/javascripts/workers/search.16e2a7d4.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}}</script>
<script src="assets/javascripts/bundle.5a2dcb6a.min.js"></script>
</body>
</html>