# Support for Configuration as Code Plugin


See [Configuration as Code](https://plugins.jenkins.io/configuration-as-code) [for an introduction t](https://plugins.jenkins.io/configuration-as-code)o managing global Jenkins settings as code.

The Job DSL plugin provide[s an extension to run](https://plugins.jenkins.io/configuration-as-code) Job DSL scripts when configuring Jenkins using Configuration as Code. These scripts can be used to create an initial seed job.

To get started, add a root [element called `jobs`.](https://plugins.jenkins.io/configuration-as-code) The given script will be executed by the Job DSL plugin.

```plaintext
jobs:
  - script: >
      multibranchPipelineJob('configuration-as-code') {
          branchSources {
              git {
                  id = 'configuration-as-code'
                  remote('https://github.com/jenkinsci/configuration-as-code-plugin.git')
              }
          }
      }
```

You can also fetch Job DSL [scripts from a file](https://plugins.jenkins.io/configuration-as-code) or URL.

```plaintext
jobs:
  - file: ./jobdsl/job.groovy
```

Note that relative paths a[re resolved relative](https://plugins.jenkins.io/configuration-as-code) to the current working directory of the Jenkins server, which may not necessarily be the same as `$JENKINS_HOME`, depending on how your server was started.

```plaintext
jobs:
  - url: https://example.acme.org/job-dsl/testjob.groovy
```

You can reference multiple [scripts, files, and](https://plugins.jenkins.io/configuration-as-code) URLs.

```plaintext
jobs:
  - script: >
      job('testJob1') {
          scm {
              git('git://github.com/quidryan/aws-sdk-test.git')
          }
          triggers {
              scm('H/15 * * * *')
          }
          steps {
              maven('-e clean test')
          }
      }

  - script: >
      job('testJob2') {
          scm {
              git('git://github.com/quidryan/aws-sdk-test.git')
          }
          triggers {
              scm('H/15 * * * *')
          }
          steps {
              maven('-e clean test')
          }
      }

  - file: ./jobdsl/job1.groovy
  - file: ./jobdsl/job2.groovy
```

You can pass values from t[he YAML file to the J](https://plugins.jenkins.io/configuration-as-code)ob DSL script.

```plaintext
jobs:
  - providedEnv:
      SUPERHERO: 'Midnighter'
  - file: ./jobdsl/job.groovy
```

```plaintext
//job.groovy
job('awesome-job') {
    description("favorite job of ${SUPERHERO}")
}
```
