0

I'm interested in creating a multibranch project in Jenkins for my EKS cluster. For some reason, I only have the option to create a freestyle project when I click 'new item' and I don't have the ability to select multibranch or any other options, they don't even exist on that page for some reason.

Heres my jenkins.yaml file used for my EKS cluster just in case it's causing the issue

apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
  namespace: default
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jenkins
  namespace: default
rules:
- apiGroups: [""]
  resources: ["pods","services"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: ["apps"]
  resources: ["deployments"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
  resources: ["pods/exec"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
  resources: ["pods/log"]
  verbs: ["get","list","watch"]
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get"]
- apiGroups: [""]
  resources: ["persistentvolumeclaims"]
  verbs: ["create","delete","get","list","patch","update","watch"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: jenkins
  namespace: default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: jenkins
subjects:
- kind: ServiceAccount
  name: jenkins
---
# Allows jenkins to create persistent volumes
# This cluster role binding allows anyone in the "manager" group to read secrets in any namespace.
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jenkins-crb
subjects:
- kind: ServiceAccount
  namespace: default
  name: jenkins
roleRef:
  kind: ClusterRole
  name: jenkinsclusterrole
  apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  # "namespace" omitted since ClusterRoles are not namespaced
  name: jenkinsclusterrole
rules:
- apiGroups: [""]
  resources: ["persistentvolumes"]
  verbs: ["create","delete","get","list","patch","update","watch"]
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
  namespace: default
spec:
  selector:
    matchLabels:
      app: jenkins
  replicas: 1
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
        - name: jenkins
          image: jenkins/jenkins:lts
          env:
            - name: JAVA_OPTS
              value: -Djenkins.install.runSetupWizard=false
          ports:
            - name: http-port
              containerPort: 8080
            - name: jnlp-port
              containerPort: 50000
          volumeMounts:
            - name: jenkins-home
              mountPath: /var
              subPath: jenkins_home
            - name: docker-sock-volume
              mountPath: "/var/run/docker.sock"
          imagePullPolicy: Always
      volumes:
        # This allows jenkins to use the docker daemon on the host, for running builds
        # see https://stackoverflow.com/questions/27879713/is-it-ok-to-run-docker-from-inside-docker
        - name: docker-sock-volume
          hostPath:
            path: /var/run/docker.sock
        - name: jenkins-home
      serviceAccountName: jenkins
---
apiVersion: v1
kind: Service
metadata:
  name: jenkins
  namespace: default
spec:
  type: LoadBalancer
  ports:
    - name: ui
      port: 8080
    - name: jnlp
      port: 50000
  selector:
    app: jenkins
---
MP32
  • 573
  • 1
  • 9
  • 25

1 Answers1

1

If you have a basic Jenkins install (ie: just the war), then you will only see the default "Freestyle job" option. In order to have the option for additional Item Types, you must install the appropriate plugin. For example, if you want to have folders to organize your jobs, then you must install the Folders plugin. Same goes for all the additional capabilities provided by plugins which you may come across.

Upon initial startup you are presented with an option to install recommended plugins. If you skip that, you can do so after as well.

In your case, I believe you need to install the Branch API plugin. That will also install all the required dependencies, including the core Pipeline (Workflow Aggregator) plugin, Pipeline: Multibranch plugin and Pipeline: Job plugin. You may still need additional plugins depending on your needs (ie: steps).

You will then have the option to create additional Job Types: Pipeline, Multibranch Pipeline and Organization Folder.

Ian W
  • 4,559
  • 2
  • 18
  • 37
  • I just noticed a few minutes ago when trying to change versions (seeing if that would fix it) and I just realized plug-ins weren't getting installed. This time around, I noticed this in my console "install-plugins.sh is deprecated, please switch to jenkins-plugin-cli" and all of my plug-ins in my dockerfile were using "install-plugins.sh". I'll have to fix that for future use, but I'm glad I can fix this now on my currently running cluster – MP32 May 30 '22 at 00:01
  • Jenkins documentation could really do w/some assistance in cleaning up all the deprecated methods of managing plugins in favour of the latest approach, especially across formats. – Ian W May 30 '22 at 00:04