< img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=3131724&fmt=gif" />

Use Pipeline Step Templates

In KubeSphere 3.4.x, the DevOps project supports using step templates in pipelines.

This section describes how to configure and use pipeline step templates in KubeSphere.

Prerequisites

Enable DevOps

  1. Log in to the console as the admin user, click Platform in the upper left corner, and select Cluster Management.

  2. Click CRDs, enter clusterconfiguration in the search bar, and click the search result to view its detailed page.

  3. Under Custom Resources, click the three dots on the right side of ks-installer, select Edit YAML, and change the 'enabled' configuration under 'devops' to true.

devops:
  enabled: true  # Change 'false' to 'true'.
  1. Run the 'kubectl' command to check the DevOps installation process.
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f
  1. Run the 'kubectl' command to verify if the installation is completed.
kubectl get pod -n kubesphere-devops-system

If the corresponding pod is in the 'Running' state, it indicates a successful installation.

devops-apiserver-7576cfc79c-j9kdz    1/1     Running     0          23h
devops-controller-7bcbbfc546-lszkt   1/1     Running     0          23h
devops-jenkins-79b59bdd5-tjrj8       1/1     Running     0          23h
s2ioperator-0                        1/1     Running     0          23h

Create and Use Custom Step Templates

Create Custom Step Templates

Currently, custom step templates can only be created through the console.

  1. Use the 'kubectl' command to view existing step templates.
kubectl get clustersteptemplates
NAME                 AGE
archiveartifacts     6d7h
build                6d7h
cd                   6d7h
checkout             6d7h
container            6d7h
echo                 6d7h
error                6d7h
git                  6d7h
input                6d7h
junit                6d7h
mail                 6d7h
retry                6d7h
script               6d7h
shell                6d7h
sleep                6d7h
timeout              6d7h
waitforqualitygate   6d7h
withcredentials      6d7h
withsonarqubeenv     6d7h
  1. To create a custom step template, create a YAML file first to support simple file writing.
apiVersion: devops.kubesphere.io/v1alpha3
kind: ClusterStepTemplate
metadata:
  annotations:
    devops.kubesphere.io/descriptionEN: Write message to file in the build
    devops.kubesphere.io/descriptionZH: Write a file during the build process
    devops.kubesphere.io/displayNameEN: writeFile
    devops.kubesphere.io/displayNameZH: Write a file
    meta.helm.sh/release-name: devops
    meta.helm.sh/release-namespace: kubesphere-devops-system
    step.devops.kubesphere.io/icon: loudspeaker
  generation: 1
  labels:
    app.kubernetes.io/managed-by: Helm
    step.devops.kubesphere.io/category: General
  name: writefile
spec:
  parameters:
  - display: file
    name: file
    required: true
    type: string
  - display: text
    name: text
    required: true
    type: string  
  runtime: dsl
  template: |
    {
      "arguments": [
        {
          "key": "file",
          "value": {
            "isLiteral": true,
            "value": "{{.param.file}}"
          }
        },
        {
          "key": "text",
          "value": {
            "isLiteral": true,
            "value": "{{.param.text}}"
          }
        }
      ],
      "name": "writeFile"
    }

Note

a. Step templates are implemented through CRDs (Custom Resource Definitions). For more details, please refer to CRD for Step Templates.

b. metadata.name in the YAML file should be consistent with spec.template.name. Additionally, the name field relies on functions within Jenkins to achieve the corresponding functionality. In the provided YAML file, the writeFile function is used to implement the output functionality. For more details, please refer to pipeline steps.

  1. Create a custom step using the kubectl command.
kubectl apply -f test-writefile.yaml
  1. Run the below command to check if the custom step template "writefile" has been created.
kubectl get clustersteptemplates

NAME                 AGE
archiveartifacts     37d
build                37d
cd                   37d
checkout             37d
container            37d
echo                 37d
error                37d
git                  37d
input                37d
junit                37d
mail                 37d
pwd                  28d
retry                37d
script               37d
shell                37d
sleep                37d
timeout              37d
waitforqualitygate   37d
withcredentials      37d
withsonarqubeenv     37d
writefile            28s

Use Custom Step Templates

  1. After entering the DevOps project, create a new pipeline.

  1. In the pipeline editor, select predefined templates such as Node.js, Maven, Golang, etc. based on your requirements. Or create a custom pipeline.

  1. Select the template "Golang" to create a pipeline. In the pipeline, create a notification stage at the end of the pipeline.

  1. In the notification stage, add steps. There are several step templates available here, and you can choose the custom step writefile.

Now the configuration of a custom step template is completed.

Receive the latest news, articles and updates from KubeSphere


Thanks for the feedback. If you have a specific question about how to use KubeSphere, ask it on Slack. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.