Skip to content

Commit 3f677b6

Browse files
committed
ci: test that release can be deployed
1 parent 4930769 commit 3f677b6

4 files changed

Lines changed: 157 additions & 1 deletion

File tree

ci/pipeline.yml

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,33 @@ jobs:
8080
DB: postgresql
8181
DB_VERSION: 15
8282

83-
- name: placeholder-create-release
83+
- name: test-release
8484
public: true
8585
plan:
8686
- in_parallel:
8787
- get: config-server-ci
8888
- get: config-server
8989
passed:
9090
- test-integration
91+
trigger: true
92+
- get: docker-cpi-image
93+
- get: stemcell
94+
resource: ubuntu-noble-stemcell
95+
- task: test-release
96+
file: config-server-ci/ci/tasks/test-release.yml
97+
image: docker-cpi-image
98+
privileged: true
99+
params:
100+
STEMCELL_OS: ubuntu-noble
101+
102+
- name: placeholder-create-release
103+
public: true
104+
plan:
105+
- in_parallel:
106+
- get: config-server-ci
107+
- get: config-server
108+
passed:
109+
- test-release
91110
- get: bosh-integration-image
92111
- task: create-release
93112
image: bosh-integration-image
@@ -216,3 +235,22 @@ resources:
216235
start: 3:00 -0700
217236
stop: 4:30 -0700
218237
days: [ Saturday ]
238+
239+
- name: docker-cpi-image
240+
type: registry-image
241+
source:
242+
repository: ghcr.io/cloudfoundry/bosh/docker-cpi
243+
username: ((github_read_write_packages.username))
244+
password: ((github_read_write_packages.password))
245+
246+
- name: ubuntu-noble-stemcell
247+
type: bosh-io-stemcell
248+
source:
249+
name: bosh-warden-boshlite-ubuntu-noble
250+
251+
resource_types:
252+
- name: bosh-io-stemcell
253+
type: registry-image
254+
source:
255+
repository: foundationalinfrastructure/bosh-io-stemcell-resource
256+
tag: v1.2.1

ci/tasks/test-release.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env bash
2+
set -eu -o pipefail
3+
4+
RELEASE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)/config-server"
5+
6+
if [[ -n "${DEBUG:-}" ]]; then
7+
set -x
8+
export BOSH_LOG_LEVEL=debug
9+
fi
10+
11+
echo "Starting BOSH Director"
12+
source start-bosh
13+
source /tmp/local-bosh/director/bosh-env
14+
15+
echo "Uploading stemcell"
16+
bosh -n upload-stemcell stemcell/*.tgz
17+
18+
echo "Uploading BPM release"
19+
bosh -n upload-release /usr/local/releases/bpm.tgz
20+
21+
echo "Creating and uploading config-server release"
22+
bosh create-release --dir "${RELEASE_PATH}"
23+
bosh upload-release --dir "${RELEASE_PATH}"
24+
25+
echo "Deploying config-server"
26+
bosh -n -d config-server-test deploy \
27+
--var=stemcell_os="${STEMCELL_OS}" \
28+
--vars-store=/tmp/config-server-test-creds.yml \
29+
"${RELEASE_PATH}/manifests/test.yml"
30+
31+
echo "Deployment complete. Instances:"
32+
bosh -d config-server-test instances --details
33+
34+
CS_IP="$(bosh -d config-server-test instances | grep running | awk '{ print $4 }')"
35+
echo "config-server IP: ${CS_IP}"
36+
37+
echo "Verifying config-server API responds..."
38+
response_code="$(curl -sk -o /dev/null -w "%{http_code}" "https://${CS_IP}:8080/v1/data?name=test-key")"
39+
40+
if [[ "${response_code}" == "401" ]]; then
41+
echo "SUCCESS: config-server is responding correctly (received expected 401 Unauthorized)"
42+
else
43+
echo "ERROR: Expected HTTP 401 from config-server, got HTTP ${response_code}"
44+
exit 1
45+
fi

ci/tasks/test-release.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
platform: linux
3+
4+
inputs:
5+
- name: config-server
6+
- name: config-server-ci
7+
- name: stemcell
8+
9+
run:
10+
path: config-server-ci/ci/tasks/test-release.sh
11+
12+
params:
13+
STEMCELL_OS: ubuntu-noble

manifests/test.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
name: config-server-test
3+
4+
releases:
5+
- name: config-server
6+
version: latest
7+
- name: bpm
8+
version: latest
9+
10+
stemcells:
11+
- alias: default
12+
os: ((stemcell_os))
13+
version: latest
14+
15+
update:
16+
canaries: 1
17+
canary_watch_time: 30000-300000
18+
max_in_flight: 1
19+
update_watch_time: 30000-300000
20+
21+
instance_groups:
22+
- name: config-server
23+
azs: [z1]
24+
instances: 1
25+
vm_type: default
26+
stemcell: default
27+
networks:
28+
- name: default
29+
jobs:
30+
- name: bpm
31+
release: bpm
32+
- name: config_server
33+
release: config-server
34+
properties:
35+
port: 8080
36+
store: memory
37+
jwt:
38+
verification_key: ((config_server_jwt_key.public_key))
39+
ca:
40+
certificate: ((config_server_ca.certificate))
41+
private_key: ((config_server_ca.private_key))
42+
ssl:
43+
certificate: ((config_server_tls.certificate))
44+
private_key: ((config_server_tls.private_key))
45+
46+
variables:
47+
- name: config_server_jwt_key
48+
type: rsa
49+
- name: config_server_ca
50+
type: certificate
51+
options:
52+
is_ca: true
53+
common_name: config-server-ca
54+
- name: config_server_tls
55+
type: certificate
56+
options:
57+
ca: config_server_ca
58+
common_name: config-server
59+
alternative_names:
60+
- config-server

0 commit comments

Comments
 (0)