diff options
-rw-r--r-- | docs/etc/conf.py | 8 | ||||
-rw-r--r-- | docs/etc/requirements.txt | 1 | ||||
-rw-r--r-- | docs/how-to-use-docs/documentation-example.rst | 41 | ||||
-rw-r--r-- | jjb/apex/opnfv-apex.yml | 16 | ||||
-rw-r--r-- | jjb/compass4nfv/opnfv-compass4nfv.yml | 16 | ||||
-rw-r--r-- | jjb/fuel/opnfv-fuel.yml | 27 | ||||
-rw-r--r-- | jjb/functest/functest.yml | 8 | ||||
-rw-r--r-- | jjb/joid/joid.yml (renamed from jjb/joid/opnfv-joid.yml) | 35 | ||||
-rw-r--r-- | jjb/opnfv/installer-params.yml | 8 | ||||
-rw-r--r-- | jjb/opnfv/opnfv-docker.sh | 2 | ||||
-rw-r--r-- | jjb/opnfv/opnfv-docker.yml | 1 | ||||
-rw-r--r-- | jjb/opnfv/opnfv-docs.yml | 4 | ||||
-rw-r--r-- | jjb/opnfv/pod-params.yml | 101 | ||||
-rw-r--r-- | jjb/qtip/qtip.yml | 16 |
14 files changed, 202 insertions, 82 deletions
diff --git a/docs/etc/conf.py b/docs/etc/conf.py index 06ae7be01..d10868de5 100644 --- a/docs/etc/conf.py +++ b/docs/etc/conf.py @@ -6,7 +6,13 @@ directory (e.g. docs/how-to-use-docs/conf.py). If there is no 'conf.py' in the document directory, this file will be copied to that directory before the document builder jobs ('opnfv-docs-verify' and 'opnfv-docs-merge'). -See https://wiki.opnfv.org/documentation/tools . +You may need python package installation for new sphinx extension. +Install python package with 'pip' in your machine and add the extension to +the 'extensions' list below to test the documentation build locally. +If you feel that your extensions would be useful for other projects too, +we encourage you to propose a change in the releng repository. + +For further guidance see the https://wiki.opnfv.org/documentation/tools page. ''' extensions = ['sphinxcontrib.httpdomain'] diff --git a/docs/etc/requirements.txt b/docs/etc/requirements.txt new file mode 100644 index 000000000..4df3b687d --- /dev/null +++ b/docs/etc/requirements.txt @@ -0,0 +1 @@ +sphinxcontrib-httpdomain diff --git a/docs/how-to-use-docs/documentation-example.rst b/docs/how-to-use-docs/documentation-example.rst index 5fc2b1420..f9b8da2f1 100644 --- a/docs/how-to-use-docs/documentation-example.rst +++ b/docs/how-to-use-docs/documentation-example.rst @@ -87,9 +87,9 @@ If you need to change the default configuration for document build, create new conf.py in the document directory (e.g. 'docs/how-to-use-docs/conf.py') that will be used in build process instead of default for OPNFV document build. The OPNFV default configuration can be found in releng repo -(see `conf.py`_). +(see `docs/etc/conf.py`_). -.. _conf.py: +.. _docs/etc/conf.py: https://gerrit.opnfv.org/gerrit/gitweb?p=releng.git;a=blob;f=docs/etc/conf.py; In the build process, the following parameters are automatically added if they @@ -138,8 +138,22 @@ built files. /output/ /releng/ -Verify Jobs -=========== +Jenkins Jobs +============ + +Enabling Jenkins Jobs +--------------------- + +Jenkins in OPNFV infra performs the jobs to verify and update your documents. +To make your project repository watched by Jenkins to execute those jobs, you +have to add your project name in 'project-pattern' of the following jobs by +sending patch to update `jjb/opnfv/opnfv-docs.yml`_ on gerrit. + +.. _jjb/opnfv/opnfv-docs.yml: + https://gerrit.opnfv.org/gerrit/gitweb?p=releng.git;a=blob;f=jjb/opnfv/opnfv-docs.yml; + +Verify Job +---------- The verify job name is **opnfv-docs-verify**. @@ -160,8 +174,8 @@ Currently, the job reports 'SUCCESS' as result of document build even if the PDF creation failed. This is a provisional workaround, since many projects are not ready for PDF creation yet. -Merge Jobs -========== +Merge Job +---------- The merge job name is **opnfv-docs-merge**. @@ -170,3 +184,18 @@ change. Then, the merge job will upload latest build documents to ``http://artifacts.opnfv.org/<Project Name>/docs/`` . You can put links in your project wiki page, so that everyone can see the latest document always. + +Sphinx Extensions +================= + +You can see available sphinx extension(s) in `docs/etc/requirements.txt`_. + +.. _docs/etc/requirements.txt: + https://gerrit.opnfv.org/gerrit/gitweb?p=releng.git;a=blob;f=docs/etc/requirements.txt; + +You can use other sphinx extensions to improve your documents. +To share such tips, we encourage you to enable the extension in OPNFV infra +by asking releng and opnfvdocs teams to add new sphinx extension via gerrit +(proposing change in `docs/etc/conf.py`_ and `docs/etc/requirements.txt`_). +After quick sanity checks, we'll install python package (if needed) and make +it available in OPNFV document build. diff --git a/jjb/apex/opnfv-apex.yml b/jjb/apex/opnfv-apex.yml index 47de21c5a..de2947cec 100644 --- a/jjb/apex/opnfv-apex.yml +++ b/jjb/apex/opnfv-apex.yml @@ -8,11 +8,11 @@ installer: 'apex' controller: - - 'opencontrail' - - 'opendaylight' + - 'odl' - 'onos' + - 'opencontrail' - pod: 'intel-pod2' + pod: 'intelpod2-jumphost' stream: - master: @@ -20,14 +20,14 @@ gs-pathname: '' jobs: - - 'opnfv-apex-{controller}-daily-{stream}' - - 'opnfv-apex-daily-deploy-{stream}' + - 'opnfv-apex-{controller}-{pod}-daily-{stream}' + - 'opnfv-apex-deploy-{pod}-daily-{stream}' ######################## # job templates ######################## - job-template: - name: 'opnfv-apex-{controller}-daily-{stream}' + name: 'opnfv-apex-{controller}-{pod}-daily-{stream}' disabled: true @@ -52,10 +52,10 @@ git-revision: true block: true predefined-parameters: - CONTROLLER='{controller}' + CONTROLLER={controller} - job-template: - name: 'opnfv-apex-daily-deploy-{stream}' + name: 'opnfv-apex-deploy-{pod}-daily-{stream}' disabled: true diff --git a/jjb/compass4nfv/opnfv-compass4nfv.yml b/jjb/compass4nfv/opnfv-compass4nfv.yml index 0ae89dad3..bebcf1f99 100644 --- a/jjb/compass4nfv/opnfv-compass4nfv.yml +++ b/jjb/compass4nfv/opnfv-compass4nfv.yml @@ -8,11 +8,11 @@ installer: 'compass4nfv' controller: - - 'opencontrail' - - 'opendaylight' + - 'odl' - 'onos' + - 'opencontrail' - pod: 'huawei-sc-pod1' + pod: 'huawei-us-deploy-bare-1' stream: - master: @@ -20,14 +20,14 @@ gs-pathname: '' jobs: - - 'opnfv-compass4nfv-{controller}-daily-{stream}' - - 'opnfv-compass4nfv-daily-deploy-{stream}' + - 'opnfv-compass4nfv-{controller}-{pod}-daily-{stream}' + - 'opnfv-compass4nfv-deploy-{pod}-daily-{stream}' ######################## # job templates ######################## - job-template: - name: 'opnfv-compass4nfv-{controller}-daily-{stream}' + name: 'opnfv-compass4nfv-{controller}-{pod}-daily-{stream}' disabled: true @@ -52,10 +52,10 @@ git-revision: true block: true predefined-parameters: - CONTROLLER='{controller}' + CONTROLLER={controller} - job-template: - name: 'opnfv-compass4nfv-daily-deploy-{stream}' + name: 'opnfv-compass4nfv-deploy-{pod}-daily-{stream}' disabled: true diff --git a/jjb/fuel/opnfv-fuel.yml b/jjb/fuel/opnfv-fuel.yml index 92bd96b87..aec85bc9c 100644 --- a/jjb/fuel/opnfv-fuel.yml +++ b/jjb/fuel/opnfv-fuel.yml @@ -8,11 +8,16 @@ installer: 'fuel' controller: - - 'opencontrail' - - 'opendaylight' + - 'odl' - 'onos' + - 'opencontrail' - pod: 'lf-pod2' + pod: + - 'opnfv-jump-2' + - 'ericsson-pod1' + + loop: + - 'daily' stream: - master: @@ -20,24 +25,23 @@ gs-pathname: '' jobs: - - 'opnfv-fuel-{controller}-daily-{stream}' - - 'opnfv-fuel-daily-deploy-{stream}' + - 'opnfv-fuel-{controller}-{pod}-{loop}-{stream}' + - 'opnfv-fuel-deploy-{pod}-{loop}-{stream}' ######################## # job templates ######################## - job-template: - name: 'opnfv-fuel-{controller}-daily-{stream}' + name: 'opnfv-fuel-{controller}-{pod}-{loop}-{stream}' disabled: true concurrent: false - node: ericsson-build - parameters: - project-parameter: project: '{installer}' + - 'ericsson-ca-build-1-defaults' - '{installer}-defaults': controller: '{controller}' @@ -53,10 +57,10 @@ git-revision: true block: true predefined-parameters: - CONTROLLER='{controller}' + CONTROLLER={controller} - job-template: - name: 'opnfv-fuel-daily-deploy-{stream}' + name: 'opnfv-fuel-deploy-{pod}-{loop}-{stream}' disabled: true @@ -69,7 +73,8 @@ parameters: - project-parameter: project: '{installer}' - - '{pod}-defaults' + - '{pod}-defaults': + loop: '{loop}' - '{installer}-defaults' scm: diff --git a/jjb/functest/functest.yml b/jjb/functest/functest.yml index aa0426a20..d1e8f262c 100644 --- a/jjb/functest/functest.yml +++ b/jjb/functest/functest.yml @@ -22,7 +22,7 @@ installer_type: 'compass' installer_ip: '192.168.200.2' - joid: - node: 'intel-us-deploy-bare-pod5' + node: 'intel-pod5' installer_type: 'compass' installer_ip: '127.0.0.1' pod: @@ -38,8 +38,8 @@ node: 'huawei-us-deploy-bare-1' installer_type: 'compass' installer_ip: '192.168.200.2' - - intel-us-deploy-bare-pod5: - node: 'intel-us-deploy-bare-pod5' + - intel-pod5: + node: 'intel-pod5' installer_type: 'joid' installer_ip: '127.0.0.1' @@ -396,7 +396,7 @@ description: "Override GIT_BASE" - parameter: - name: intel-us-deploy-bare-pod5 + name: intel-pod5 parameters: - string: name: GIT_BASE diff --git a/jjb/joid/opnfv-joid.yml b/jjb/joid/joid.yml index 4d99e3199..a3b994a82 100644 --- a/jjb/joid/opnfv-joid.yml +++ b/jjb/joid/joid.yml @@ -3,14 +3,11 @@ ######################## - project: - name: 'opnfv-joid' + name: 'joid' installer: 'joid' - controller: - - 'opencontrail' - - 'opendaylight' - - 'onos' + controller: 'odl' pod: 'intel-pod5' @@ -20,23 +17,23 @@ gs-pathname: '' jobs: - - 'opnfv-joid-{controller}-daily-{stream}' - - 'opnfv-joid-daily-deploy-{stream}' + - 'joid-{controller}-{pod}-daily-{stream}' + - 'joid-deploy-{pod}-daily-{stream}' ######################## # job templates ######################## - job-template: - name: 'opnfv-joid-{controller}-daily-{stream}' + name: 'joid-{controller}-{pod}-daily-{stream}' - disabled: true + disabled: false concurrent: false parameters: - project-parameter: project: '{installer}' - - '{pod}-defaults' + - 'intel-us-build-1-defaults' - '{installer}-defaults': controller: '{controller}' @@ -48,16 +45,16 @@ builders: - trigger-builds: - - project: 'opnfv-joid-daily-deploy-{stream}' + - project: 'joid-deploy-{pod}-daily-{stream}' git-revision: true block: true predefined-parameters: - CONTROLLER='{controller}' + CONTROLLER={controller} - job-template: - name: 'opnfv-joid-daily-deploy-{stream}' + name: 'joid-deploy-{pod}-daily-{stream}' - disabled: true + disabled: false concurrent: false @@ -69,7 +66,8 @@ - project-parameter: project: '{installer}' - '{pod}-defaults' - - '{installer}-defaults' + - '{installer}-defaults': + controller: '{controller}' scm: - git-scm: @@ -80,6 +78,9 @@ builders: - shell: | #!/bin/bash - echo "Hello World from OPNFV $INSTALLER_NAME" echo "Running $INSTALLER_NAME with controller $CONTROLLER" - + echo "Please note that this is a quick try to see how joid deployment works" + cd $WORKSPACE/ci + ./clean.sh + ./02-maasdeploy.sh intelpod5 + ./deploy.sh -o liberty -s $CONTROLLER -t ha -l intelpod5 diff --git a/jjb/opnfv/installer-params.yml b/jjb/opnfv/installer-params.yml index dc11fbd53..26feee43d 100644 --- a/jjb/opnfv/installer-params.yml +++ b/jjb/opnfv/installer-params.yml @@ -15,7 +15,7 @@ description: 'Installer used for deploying OPNFV on this POD' - string: name: CONTROLLER - default: '{controller}' + default: none description: 'Controller name' - parameter: @@ -35,7 +35,7 @@ description: 'Installer used for deploying OPNFV on this POD' - string: name: CONTROLLER - default: '{controller}' + default: none description: 'Controller name' - parameter: @@ -55,7 +55,7 @@ description: 'Installer used for deploying OPNFV on this POD' - string: name: CONTROLLER - default: '{controller}' + default: none description: 'Controller name' - parameter: @@ -75,5 +75,5 @@ description: 'Installer used for deploying OPNFV on this POD' - string: name: CONTROLLER - default: '{controller}' + default: none description: 'Controller name' diff --git a/jjb/opnfv/opnfv-docker.sh b/jjb/opnfv/opnfv-docker.sh index 2b42938c0..6f0a0c35c 100644 --- a/jjb/opnfv/opnfv-docker.sh +++ b/jjb/opnfv/opnfv-docker.sh @@ -64,6 +64,8 @@ if [[ "$DOCKER_REPO_NAME" == "opnfv/functest" ]]; then cd $WORKSPACE/docker elif [[ "$DOCKER_REPO_NAME" == "opnfv/yardstick" ]]; then cd $WORKSPACE/ci/docker/yardstick-ci +elif [[ "$DOCKER_REPO_NAME" == "opnfv/storperf" ]]; then + cd $WORKSPACE/docker else echo "ERROR: DOCKER_REPO_NAME parameter not valid: $DOCKER_REPO_NAME" exit 1 diff --git a/jjb/opnfv/opnfv-docker.yml b/jjb/opnfv/opnfv-docker.yml index 46a05230b..83ebab7af 100644 --- a/jjb/opnfv/opnfv-docker.yml +++ b/jjb/opnfv/opnfv-docker.yml @@ -9,6 +9,7 @@ project: - 'functest' - 'yardstick' + - 'storperf' jobs: - '{project}-docker-build-push-{stream}' diff --git a/jjb/opnfv/opnfv-docs.yml b/jjb/opnfv/opnfv-docs.yml index b6c186336..841ce2e3d 100644 --- a/jjb/opnfv/opnfv-docs.yml +++ b/jjb/opnfv/opnfv-docs.yml @@ -51,7 +51,7 @@ projects: - project-compare-type: 'REG_EXP' #Left out arno projects oscar|octopus|functest|genesis - project-pattern: 'vswitchperf|yardstick|apex|availability|bottlenecks|compass4nfv|conductor|copper|doctor|dovetail|dpacc|escalator|fastpathmetrics|fuel|inspector|ipv6|joid|kvmfornfv|lsoapi|moon|movie|multisite|onosfw|ovsnfv|parser|prediction|promise|qtip|releng|rs|sdnvpn|sfc|vnf_forwarding_graph|enfv|pinpoint|pharos|opnfvdocs' + project-pattern: 'vswitchperf|yardstick|apex|availability|bottlenecks|compass4nfv|conductor|copper|doctor|dovetail|dpacc|escalator|fastpathmetrics|fuel|inspector|ipv6|joid|kvmfornfv|lsoapi|moon|movie|multisite|onosfw|ovsnfv|parser|prediction|promise|qtip|releng|rs|sdnvpn|sfc|vnf_forwarding_graph|enfv|pinpoint|pharos|opnfvdocs|cperf' branches: - branch-compare-type: 'ANT' branch-pattern: '**/master' @@ -85,7 +85,7 @@ comment-contains-value: 'remerge' projects: - project-compare-type: 'REG_EXP' - project-pattern: 'vswitchperf|yardstick|apex|availability|bottlenecks|compass4nfv|conductor|copper|doctor|dovetail|dpacc|escalator|fastpathmetrics|fuel|inspector|ipv6|joid|kvmfornfv|lsoapi|moon|movie|multisite|onosfw|ovsnfv|parser|prediction|promise|qtip|releng|rs|sdnvpn|sfc|vnf_forwarding_graph|enfv|pinpoint|pharos|opnfvdocs' + project-pattern: 'vswitchperf|yardstick|apex|availability|bottlenecks|compass4nfv|conductor|copper|doctor|dovetail|dpacc|escalator|fastpathmetrics|fuel|inspector|ipv6|joid|kvmfornfv|lsoapi|moon|movie|multisite|onosfw|ovsnfv|parser|prediction|promise|qtip|releng|rs|sdnvpn|sfc|vnf_forwarding_graph|enfv|pinpoint|pharos|opnfvdocs|cperf' branches: - branch-compare-type: 'ANT' branch-pattern: '**/master' diff --git a/jjb/opnfv/pod-params.yml b/jjb/opnfv/pod-params.yml index fb02e7d5d..fc6650ffb 100644 --- a/jjb/opnfv/pod-params.yml +++ b/jjb/opnfv/pod-params.yml @@ -1,5 +1,5 @@ - parameter: - name: 'lf-pod1-defaults' + name: 'opnfv-jump-1-defaults' parameters: - node: name: SLAVE_NAME @@ -22,7 +22,7 @@ description: 'SSH key to use for Apex' - parameter: - name: 'lf-pod2-defaults' + name: 'opnfv-jump-2-defaults' parameters: - node: name: SLAVE_NAME @@ -38,8 +38,38 @@ - string: name: GIT_BASE default: ssh://gerrit.opnfv.org:29418/$PROJECT - description: 'Git URL for LF POD2' description: 'Git URL to use on the jumphost' + - string: + name: YARDSTICK_TEST_SUITE + default: opnfv_${{NODE_NAME}}_{loop}.yaml + description: 'Path to test suite' + - string: + name: YARDSTICK_DB_BACKEND + default: 'db_args' + description: 'Arguments to use in order to choose the backend DB' + +- parameter: + name: 'ericsson-pod1-defaults' + parameters: + - node: + name: SLAVE_NAME + description: 'Slave name on Jenkins' + allowed-slaves: + - ericsson-pod1 + default-slaves: + - ericsson-pod1 + - string: + name: INSTALLER_VERSION + default: latest + description: 'Version of the installer to deploy' + - string: + name: GIT_BASE + default: https://gerrit.opnfv.org/gerrit/$PROJECT + description: 'Git URL to use on the jumphost' + - string: + name: YARDSTICK_TEST_SUITE + default: opnfv_${{NODE_NAME}}_{loop}.yaml + description: 'Path to test suite' - parameter: name: 'ericsson-pod2-defaults' @@ -48,9 +78,9 @@ name: SLAVE_NAME description: 'Slave name on Jenkins' allowed-slaves: - - ericsson-ca-fuel-bare-1 + - ericsson-pod2 default-slaves: - - ericsson-ca-fuel-bare-1 + - ericsson-pod2 - string: name: INSTALLER_VERSION default: latest @@ -61,7 +91,7 @@ description: 'Git URL to use on the jumphost' - parameter: - name: 'intel-pod2-defaults' + name: 'intelpod2-jumphost-defaults' parameters: - node: name: SLAVE_NAME @@ -90,9 +120,9 @@ name: SLAVE_NAME description: 'Slave name on Jenkins' allowed-slaves: - - intelpod5-jumphost + - intel-pod5 default-slaves: - - intelpod5-jumphost + - intel-pod5 - string: name: INSTALLER_VERSION default: stable @@ -109,9 +139,9 @@ name: SLAVE_NAME description: 'Slave name on Jenkins' allowed-slaves: - - intelpod6-jumphost + - intel-pod6 default-slaves: - - intelpod6-jumphost + - intel-pod6 - string: name: INSTALLER_VERSION default: latest @@ -128,9 +158,9 @@ name: SLAVE_NAME description: 'Slave name on Jenkins' allowed-slaves: - - intelpod8-jumphost + - intel-pod8 default-slaves: - - intelpod8-jumphost + - intel-pod8 - string: name: INSTALLER_VERSION default: latest @@ -141,7 +171,7 @@ description: 'Git URL to use on the jumphost' - parameter: - name: 'huawei-sc-pod1-defaults' + name: 'huawei-us-deploy-bare-1-defaults' parameters: - node: name: SLAVE_NAME @@ -158,3 +188,48 @@ name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT description: 'Git URL to use on the jumphost' + +- parameter: + name: 'intel-us-build-1-defaults' + parameters: + - node: + name: SLAVE_NAME + description: 'Slave name on Jenkins' + allowed-slaves: + - intel-us-build-1 + default-slaves: + - intel-us-build-1 + - string: + name: GIT_BASE + default: https://gerrit.opnfv.org/gerrit/$PROJECT + description: 'Git URL to use on the slave' + +- parameter: + name: 'intel-us-build-2-defaults' + parameters: + - node: + name: SLAVE_NAME + description: 'Slave name on Jenkins' + allowed-slaves: + - intel-us-build-2 + default-slaves: + - intel-us-build-2 + - string: + name: GIT_BASE + default: https://gerrit.opnfv.org/gerrit/$PROJECT + description: 'Git URL to use on the slave' + +- parameter: + name: 'ericsson-ca-build-1-defaults' + parameters: + - node: + name: SLAVE_NAME + description: 'Slave name on Jenkins' + allowed-slaves: + - ericsson-ca-build-1 + default-slaves: + - ericsson-ca-build-1 + - string: + name: GIT_BASE + default: https://gerrit.opnfv.org/gerrit/$PROJECT + description: 'Git URL to use on the slave' diff --git a/jjb/qtip/qtip.yml b/jjb/qtip/qtip.yml index c08b1ca50..886074593 100644 --- a/jjb/qtip/qtip.yml +++ b/jjb/qtip/qtip.yml @@ -214,7 +214,7 @@ - 'qtip-ssl-parallel' triggers: - - timed: "@midnight" + - timed: '0 0,11,18 * * *' ########################### #biuilder macros @@ -225,11 +225,11 @@ builders: - shell: | #! /bin/bash - if [[ ! -f $WORKSPACE/opnfv-openrc.sh ]]; then - echo "Unable to access file $WORKSPACE/opnfv-openrc.sh" + if [[ ! -f $WORKSPACE/opnfv-stack.sh ]]; then + echo "Unable to access file $WO:qRKSPACE/opnfv-openrc.sh" exit 1 fi - source $WORKSPACE/opnfv-openrc.sh + source $WORKSPACE/opnfv-stack.sh cd $WORKSPACE echo "Running QTIP dhrystone with First Test case" python qtip.py -s compute -b dhrystone_serial.yaml @@ -240,11 +240,11 @@ builders: - shell: | #!/bin/bash - if [[ ! -f $WORKSPACE/opnfv-openrc.sh ]]; then + if [[ ! -f $WORKSPACE/opnfv-stack.sh ]]; then echo "Unable to access file $WORKSPACE/opnfv-openrc.sh" exit 1 fi - source $WORKSPACE/opnfv-openrc.sh + source $WORKSPACE/opnfv-stack.sh cd $WORKSPACE echo "Running QTIP dhrystone with Second Test case" python qtip.py -s compute -b ssl_parallel.yaml @@ -258,5 +258,5 @@ cd $WORKSPACE git clone https://gerrit.opnfv.org/gerrit/releng cd $WORKSPACE/releng/utils - ./fetch_os_creds.sh #To test the problem with creating the file in $HOME - ./fetch_os_creds.sh -d $WORKSPACE #To test if the file can be created in $WORKSPACE + #./fetch_os_creds.sh #To test the problem with creating the file in $HOME + ./fetch_os_creds.sh -d $WORKSPACE/opnfv-stack.sh #To test if the file can be created in $WORKSPACE |