1+ # GitHub repo level Secrets and Variables
2+
3+ # secrets.CLIENT_SECRET
4+ # secrets.SHEPHERD_SERVICE_ACCOUNT_TOKEN
5+ # vars.CAPI_RELEASE_VERSION
6+ # vars.SHEPHERD_LEASE_DURATION
7+ # vars.SHEPHERD_LEASE_NAMESPACE
8+ # vars.SHEPHERD_TEMPLATE_ARGUMENT
9+ # vars.SHEPHERD_TEMPLATE_NAME
10+ # vars.SHEPHERD_TEMPLATE_NAMESPACE
11+
112name : " Tests: Integration"
213
314run-name : " Integration [${{ github.event_name }}: ${{ github.event.pull_request.head.sha || github.event.push.after || github.event.workflow_run.head_sha}}]: ${{ github.event.workflow_run.head_commit.message }}"
1425 - run-integration-tests-cf-env
1526 - run-integration-tests-cf-env-with-client-creds
1627 - run-cats-cf-env
28+ nodes :
29+ description : Number of test nodes
30+ required : false
31+ type : string
32+ default : " 12"
33+ lease_id :
34+ description : Pre-provisioned environment lease-id to use in tests
35+ required : false
36+ type : string
37+ lease_namespace :
38+ description : Pre-provisioned environment lease namespace to use in tests
39+ required : false
40+ type : string
41+ run_unit_tests :
42+ description : Run unit tests
43+ required : false
44+ type : boolean
45+ default : true
46+ reinstall_cfd :
47+ description : Force re-installation of CFD
48+ required : false
49+ type : boolean
50+ default : true
51+
1752 push :
1853 tags :
1954 - " v8.*"
2762 - " doc/**"
2863 - " .gitpod.yml"
2964 - " README.md"
65+
66+ env :
67+ SHEPHERD_LEASE_ID : ${{ inputs.lease_id }}
68+
3069jobs :
3170 get-sha :
3271 runs-on : ubuntu-latest
@@ -53,14 +92,17 @@ jobs:
5392 steps :
5493 - name : Checkout
5594 uses : actions/checkout@v4
95+ if : ${{ inputs.run_unit_tests == 'true' }}
5696 with :
5797 ref : ${{needs.get-sha.outputs.gitRef}}
5898 - name : Set Up Go
5999 uses : actions/setup-go@v5
100+ if : ${{ inputs.run_unit_tests == 'true' }}
60101 with :
61102 go-version-file : go.mod
62103 check-latest : true
63104 - name : Run Units
105+ if : ${{ inputs.run_unit_tests == 'true' }}
64106 run : make units
65107
66108 claim-env :
@@ -84,23 +126,57 @@ jobs:
84126 - name : claim
85127 id : claim
86128 env :
87- account_token : ${{ secrets.SHEPHERD_SERVICE_ACCOUNT_TOKEN }}
88- pool_name : ${{ vars.SHEPHERD_POOL_NAME }}
89- pool_namespace : official
129+ account_token : ${{ secrets.SHEPHERD_SERVICE_ACCOUNT_TOKEN }}
130+ template_argument : ${{ vars.SHEPHERD_TEMPLATE_ARGUMENT }}
131+ template_name : ${{ vars.SHEPHERD_TEMPLATE_NAME || 'cfd-bosh-lite@1.0' }}
132+ template_namespace : ${{ vars.SHEPHERD_TEMPLATE_NAMESPACE || 'official' }}
133+ lease_duration : ${{ vars.SHEPHERD_LEASE_DURATION || '8h' }}
134+ lease_namespace : ${{ inputs.lease_namespace || vars.SHEPHERD_LEASE_NAMESPACE || 'tas-devex' }}
90135 run : |
91136 shepherd login service-account ${account_token}
92137
93- echo "shepherd create lease --duration 8h --pool ${pool_name} --pool-namespace ${pool_namespace} --namespace tas-devex --description 'CLI GHA'"
94- lease_id=$(shepherd create lease --duration 8h --pool ${pool_name} --pool-namespace ${pool_namespace} --namespace tas-devex --json | jq -r .id)
95-
138+ if [[ -z $SHEPHERD_LEASE_ID ]]; then
139+
140+ if [ -z "$template_argument" ]; then
141+ export template_argument='{"gcp_region": "us-west2",
142+ "vm_type": "n1-standard-8",
143+ "root_disk_gb": 32,
144+ "disk_pool_gb": 150,
145+ "cfd_version": "",
146+ "additional_opsfiles_b64": ""}'
147+ fi
148+
149+ lease_id=$( shepherd create lease \
150+ --template-argument "$template_argument" \
151+ --template-namespace "${template_namespace}" \
152+ --template "${template_name}" \
153+ --namespace "${lease_namespace}" \
154+ --duration "${lease_duration}" \
155+ --description "Claimed by CF CLI workflow ${{ github.workflow_run.url }}" \
156+ --json \
157+ | jq -r .id
158+ )
159+ else
160+ lease_id=$SHEPHERD_LEASE_ID
161+ fi
162+
163+ echo "Shepherd lease ID: ${lease_id}"
164+
96165 # Give sometime for the lease to complete. Shepherd may take upto an 3 hours to create an env
97166 # if the pool is empty.
98167 count=0
99168 while [ $count -lt 360 ] ; do
100169 sleep 30
101- status=$(shepherd get lease ${lease_id} --namespace tas-devex --json | jq -r .status)
170+ status=$( shepherd get lease ${lease_id} \
171+ --namespace ${lease_namespace} \
172+ --json \
173+ | jq -r .status
174+ )
102175 if [ $status == "LEASED" ] ; then
103- shepherd get lease ${lease_id} --namespace tas-devex --json | jq .output > metadata.json
176+ shepherd get lease ${lease_id} \
177+ --namespace ${lease_namespace} \
178+ --json \
179+ | jq .output > metadata.json
104180 break
105181 elif [ $status == "FAILED" -o $status == "EXPIRED" ] ; then
106182 echo "There was an error obtaining the lease. Lease status is ${status}."
@@ -115,7 +191,7 @@ jobs:
115191 echo "env name is ${env_name}"
116192 echo "leaseid=${lease_id}" >> "${GITHUB_OUTPUT}"
117193
118- cf_deployment_version=$(jq -r '."cf-deployment_version "' metadata.json)
194+ cf_deployment_version=$(jq -r '."cf_deployment_version "' metadata.json)
119195 echo "cf_deployment_version is ${cf_deployment_version}"
120196 echo "cf_deployment_version=${cf_deployment_version}" >> "${GITHUB_OUTPUT}"
121197
@@ -126,6 +202,7 @@ jobs:
126202 check-latest : true
127203
128204 - name : Install Tools
205+ if : ${{ (inputs.lease_id == '') || (inputs.reinstall_cfd == true) }}
129206 run : |
130207 go version
131208
@@ -145,11 +222,11 @@ jobs:
145222 apt-get install -y build-essential unzip
146223
147224 - name : Upload latest CAPI release
225+ if : ${{ (inputs.lease_id == '') || (inputs.reinstall_cfd == true) }}
148226 env :
149227 capi_release_version : ${{ vars.CAPI_RELEASE_VERSION }}
150228 run : |
151- if [ -z "$capi_release_version" ]
152- then
229+ if [ -z "$capi_release_version" ]; then
153230 capi_release_version=$(curl -s https://api.github.com/repos/cloudfoundry/capi-release/releases/latest | jq -r .tag_name)
154231 fi
155232
@@ -162,19 +239,20 @@ jobs:
162239 bosh upload-release "https://bosh.io/d/github.com/cloudfoundry/capi-release?v=$capi_release_version"
163240
164241 - name : Checkout cf-deployment
242+ if : ${{ (inputs.lease_id == '') || (inputs.reinstall_cfd == true) }}
165243 uses : actions/checkout@v4
166244 with :
167245 repository : cloudfoundry/cf-deployment
168246 path : cf-deployment
169247 ref : ${{steps.claim.outputs.cf_deployment_version}}
170248
171249 - name : Deploy Isolation Segment and OIDC Provider
250+ if : ${{ (inputs.lease_id == '') || (inputs.reinstall_cfd == true) }}
172251 run : |
173252 env_name=$(jq -r .name metadata.json)
174253 jq -r .bosh.jumpbox_private_key metadata.json > /tmp/${env_name}.priv
175254 eval "$(bbl print-env --metadata-file metadata.json)"
176255
177- # deploy
178256 bosh -d cf manifest > /tmp/manifest.yml
179257 bosh interpolate /tmp/manifest.yml \
180258 -o cf-deployment/operations/use-internal-lookup-for-route-services.yml \
@@ -204,6 +282,8 @@ jobs:
204282 name : Integration
205283 gitRef : ${{needs.get-sha.outputs.gitRef}}
206284 lease-id : ${{ needs.claim-env.outputs.leaseid }}
285+ lease-namespace : ${{ inputs.lease_namespace || vars.SHEPHERD_LEASE_NAMESPACE || 'tas-devex' }}
286+ nodes : ${{ inputs.nodes }}
207287 secrets : inherit
208288
209289 run-integration-tests-cf-env-with-client-creds :
@@ -220,6 +300,7 @@ jobs:
220300 name : Integration client creds
221301 gitRef : ${{needs.get-sha.outputs.gitRef}}
222302 lease-id : ${{ needs.claim-env.outputs.leaseid }}
303+ lease-namespace : ${{ inputs.lease_namespace || vars.SHEPHERD_LEASE_NAMESPACE || 'tas-devex' }}
223304 secrets : inherit
224305
225306 run-cats-cf-env :
@@ -237,21 +318,24 @@ jobs:
237318 name : cats
238319 gitRef : ${{needs.get-sha.outputs.gitRef}}
239320 lease-id : ${{ needs.claim-env.outputs.leaseid }}
321+ lease-namespace : ${{ inputs.lease_namespace || vars.SHEPHERD_LEASE_NAMESPACE || 'tas-devex' }}
240322 secrets : inherit
241323
242324 unclaim-env :
243325 name : Unclaim environment
326+ if : ${{ inputs.lease_id == '' }}
244327 runs-on : ubuntu-latest
245328 container : us-west2-docker.pkg.dev/shepherd-268822/shepherd2/concourse-resource:latest
246329 needs :
247330 - claim-env
248331 - run-cats-cf-env
249- if : always()
250332 steps :
251333 - name : unclaim
252334 env :
253- account_token : ${{ secrets.SHEPHERD_SERVICE_ACCOUNT_TOKEN }}
335+ account_token : ${{ secrets.SHEPHERD_SERVICE_ACCOUNT_TOKEN }}
336+ lease_namespace : ${{ inputs.lease_namespace || vars.SHEPHERD_LEASE_NAMESPACE || 'tas-devex' }}
254337 run : |
255338 shepherd login service-account ${account_token}
256339 set -x
257- shepherd delete lease ${{ needs.claim-env.outputs.leaseid }} --namespace tas-devex
340+ shepherd delete lease ${{ needs.claim-env.outputs.leaseid }} \
341+ --namespace ${lease_namespace}
0 commit comments