Skip to content

Commit

Permalink
ci: Get bosh-cli from resource
Browse files Browse the repository at this point in the history
The bosh-cli tool was being downloaded from a task script. This change
ensures it is retrieved as a resource (and replaces the old bosh-init
which was retrieved this way).
  • Loading branch information
evandbrown committed Aug 21, 2017
1 parent 9cc8202 commit c875ca2
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 30 deletions.
27 changes: 23 additions & 4 deletions ci/pipeline-develop.yml
Expand Up @@ -122,7 +122,7 @@ jobs:
- {trigger: true, passed: [build-candidate, setup-infrastructure], get: bosh-cpi-src, resource: bosh-cpi-src-in}
- {trigger: true, passed: [build-candidate], get: bosh-cpi-release, resource: bosh-cpi-dev-artifacts}
- {trigger: true, passed: [setup-infrastructure], get: stemcell, resource: google-ubuntu-stemcell}
- {trigger: false, get: bosh-init}
- {trigger: false, get: bosh-cli}
- {trigger: false, get: bosh-release}

- task: setup-director
Expand All @@ -149,6 +149,25 @@ jobs:
on_failure:
task: teardown-director
file: bosh-cpi-src/ci/tasks/teardown-director.yml
config:
params:
google_project: {{google_project}}
google_region: {{google_region}}
google_zone: {{google_zone}}
google_json_key_data: {{google_json_key_data}}
google_test_bucket_name: {{google_test_bucket_name}}
google_network: {{google_network}}
google_subnetwork: {{google_subnetwork}}
google_subnetwork_range: {{google_subnetwork_range}}
google_subnetwork_gw: {{google_subnetwork_gw}}
google_firewall_internal: {{google_firewall_internal}}
google_firewall_external: {{google_firewall_external}}
google_address_director: {{google_address_director_ubuntu}}
google_address_static_director: {{google_address_static_director_ubuntu}}
private_key_user: {{private_key_user}}
private_key_data: {{private_key_data}}
director_username: {{director_username}}
director_password: {{director_password}}

- name: run-bats
serial: true
Expand Down Expand Up @@ -245,11 +264,11 @@ resources:
region: {{version_semver_region}}
endpoint: storage.googleapis.com

- name: bosh-init
- name: bosh-cli
type: s3
source:
regexp: bosh-init-([0-9.]+)-linux-amd64
bucket: bosh-init-artifacts
regexp: bosh-cli-([0-9.]+)-linux-amd64
bucket: bosh-cli-artifacts
region_name: us-east-1

- name: bosh-release
Expand Down
23 changes: 21 additions & 2 deletions ci/pipeline.yml
Expand Up @@ -125,7 +125,7 @@ jobs:
- {trigger: true, passed: [build-candidate, setup-infrastructure], get: bosh-cpi-src, resource: bosh-cpi-src-in}
- {trigger: true, passed: [build-candidate], get: bosh-cpi-release, resource: bosh-cpi-dev-artifacts}
- {trigger: true, passed: [setup-infrastructure], get: stemcell, resource: google-ubuntu-stemcell}
- {trigger: false, get: bosh-init}
- {trigger: false, get: bosh-cli}
- {trigger: false, get: bosh-release}

- task: setup-director
Expand All @@ -152,6 +152,25 @@ jobs:
on_failure:
task: teardown-director
file: bosh-cpi-src/ci/tasks/teardown-director.yml
config:
params:
google_project: {{google_project}}
google_region: {{google_region}}
google_zone: {{google_zone}}
google_json_key_data: {{google_json_key_data}}
google_test_bucket_name: {{google_test_bucket_name}}
google_network: {{google_network}}
google_subnetwork: {{google_subnetwork}}
google_subnetwork_range: {{google_subnetwork_range}}
google_subnetwork_gw: {{google_subnetwork_gw}}
google_firewall_internal: {{google_firewall_internal}}
google_firewall_external: {{google_firewall_external}}
google_address_director: {{google_address_director_ubuntu}}
google_address_static_director: {{google_address_static_director_ubuntu}}
private_key_user: {{private_key_user}}
private_key_data: {{private_key_data}}
director_username: {{director_username}}
director_password: {{director_password}}

- name: run-bats
serial: true
Expand Down Expand Up @@ -378,7 +397,7 @@ resources:
region: {{version_semver_region}}
endpoint: storage.googleapis.com

- name: bosh-init
- name: bosh-cli
type: s3
source:
regexp: bosh-cli-([0-9.]+)-linux-amd64
Expand Down
22 changes: 9 additions & 13 deletions ci/tasks/setup-director.sh
Expand Up @@ -33,6 +33,7 @@ echo "Setting up artifacts..."
cp ./bosh-cpi-release/*.tgz ${deployment_dir}/${cpi_release_name}.tgz
cp ./bosh-release/*.tgz ${deployment_dir}/bosh-release.tgz
cp ./stemcell/*.tgz ${deployment_dir}/stemcell.tgz
cp ./bosh-cli/bosh-cli-* ${deployment_dir}/bosh && chmod +x ${deployment_dir}/bosh

echo "Creating google json key..."
echo "${google_json_key_data}" > ${google_json_key}
Expand Down Expand Up @@ -60,6 +61,7 @@ openssl rsa -in ${private_key} -pubout > ${public_key}

# Export prefixed variables so they are accessible
echo "Populating environment with BOSH_ prefixed vars"
export BOSH_CONFIG=${deployment_dir}/.boshconfig
export BOSH_director_username=$director_username
export BOSH_director_password=$director_password
export BOSH_cpi_release_name=$cpi_release_name
Expand Down Expand Up @@ -290,32 +292,26 @@ pushd ${deployment_dir}
}
trap finish ERR

echo "Fetching bosh-cli V2"
curl -Ls \
https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-2.0.28-linux-amd64 \
-o bosh2
chmod +x bosh2

echo "Using bosh2 version..."
./bosh2 --version
echo "Using bosh version..."
./bosh --version

echo "Generating certificates"
certs=certs.yml
./bosh2 interpolate ${cert_template} -v internal_ip=${director_ip} --vars-store ${certs}
./bosh interpolate ${cert_template} -v internal_ip=${director_ip} --vars-store ${certs}

echo "Deploying BOSH Director..."
./bosh2 create-env ${manifest_filename} --vars-store ${certs} --vars-env=BOSH
./bosh create-env ${manifest_filename} --vars-store ${certs} --vars-env=BOSH

echo "Logging into BOSH Director"
# We need to fetch and specify the CA certificate as bosh-cli V2
# strictly validates certificate with no insecure option.
./bosh2 interpolate certs.yml --path /director_ssl/ca > ca_cert.pem
./bosh2 alias-env micro-google --environment ${director_ip} --ca-cert ca_cert.pem
./bosh interpolate certs.yml --path /director_ssl/ca > ca_cert.pem
./bosh alias-env micro-google --environment ${director_ip} --ca-cert ca_cert.pem

# We have to export these to get non-interactive login
export BOSH_CLIENT=$BOSH_director_username
export BOSH_CLIENT_SECRET=$BOSH_director_password
./bosh2 login -e micro-google
./bosh login -e micro-google

trap - ERR
finish
Expand Down
2 changes: 1 addition & 1 deletion ci/tasks/setup-director.yml
Expand Up @@ -9,7 +9,7 @@ inputs:
- name: bosh-cpi-release
- name: bosh-release
- name: stemcell
- name: bosh-init
- name: bosh-cli
outputs:
- name: deployment
run:
Expand Down
31 changes: 22 additions & 9 deletions ci/tasks/teardown-director.sh
Expand Up @@ -8,19 +8,32 @@ source /etc/profile.d/chruby-with-ruby-2.1.2.sh
deployment_dir="${PWD}/deployment"
google_json_key=${deployment_dir}/google_key.json
manifest_filename="director-manifest.yml"
certs=certs.yml

echo "Creating google json key..."
mkdir -p $HOME/.config/gcloud/
cp ${google_json_key} $HOME/.config/gcloud/application_default_credentials.json

pushd ${deployment_dir}
cp -r ./.bosh_init $HOME/

chmod +x ../bosh-init/bosh-init*
# Export prefixed variables so they are accessible
echo "Populating environment with BOSH_ prefixed vars"
export BOSH_CONFIG=${deployment_dir}/.boshconfig
export BOSH_director_username=$director_username
export BOSH_director_password=$director_password
export BOSH_cpi_release_name=$cpi_release_name
export BOSH_google_zone=$google_zone
export BOSH_google_project=$google_project
export BOSH_google_address_static_director=$google_address_static_director
export BOSH_director_ip=$director_ip
export BOSH_google_test_bucket_name=$google_test_bucket_name
export BOSH_google_network=$google_network
export BOSH_google_subnetwork_gw=$google_subnetwork_gw
export BOSH_google_subnetwork=$google_subnetwork
export BOSH_google_subnetwork_range=$google_subnetwork_range
export BOSH_google_firewall_internal=$google_firewall_internal
export BOSH_google_firewall_external=$google_firewall_external
export BOSH_google_json_key_data=$google_json_key_data

echo "Using bosh-init version..."
../bosh-init/bosh-init* version

echo "Deleting BOSH Director..."
../bosh-init/bosh-init* delete ${manifest_filename}
pushd ${deployment_dir}
echo "Destroying BOSH Director..."
./bosh delete-env -e micro-google --vars-store ${certs} --vars-env=BOSH ${manifest_filename}
popd
19 changes: 18 additions & 1 deletion ci/tasks/teardown-director.yml
Expand Up @@ -6,9 +6,26 @@ image_resource:
repository: boshcpi/gce-cpi-release
inputs:
- name: bosh-cpi-src
- name: bosh-init
- name: bosh-cli
- name: deployment
run:
path: bosh-cpi-src/ci/tasks/teardown-director.sh
params:
BOSH_INIT_LOG_LEVEL: warn
google_project: replace-me
google_region: replace-me
google_zone: replace-me
google_json_key_data: replace-me
google_test_bucket_name: replace-me
google_network: replace-me
google_subnetwork: replace-me
google_subnetwork_range: replace-me
google_subnetwork_gw: replace-me
google_firewall_internal: replace-me
google_firewall_external: replace-me
google_address_director: replace-me
google_address_static_director: replace-me
private_key_user: replace-me
private_key_data: replace-me
director_username: replace-me
director_password: replace-me

0 comments on commit c875ca2

Please sign in to comment.