Attempt native imagebuilder image
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
This commit is contained in:
157
REMOVED/scripts/ci-ova.sh
Executable file
157
REMOVED/scripts/ci-ova.sh
Executable file
@@ -0,0 +1,157 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2020 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set -o errexit # exits immediately on any unexpected error (does not bypass traps)
|
||||
set -o nounset # will error if variables are used without first being defined
|
||||
set -o pipefail # any non-zero exit code in a piped command causes the pipeline to fail with that code
|
||||
|
||||
CAPI_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
||||
cd "${CAPI_ROOT}" || exit 1
|
||||
|
||||
export ARTIFACTS="${ARTIFACTS:-${PWD}/_artifacts}"
|
||||
TARGETS=("ubuntu-1804" "ubuntu-2004" "ubuntu-2204" "photon-3" "photon-4" "centos-7" "rockylinux-8" "flatcar")
|
||||
|
||||
on_exit() {
|
||||
# kill the VPN
|
||||
docker kill vpn
|
||||
}
|
||||
|
||||
cleanup_build_vm() {
|
||||
# Setup govc to delete build VM after
|
||||
curl -L https://github.com/vmware/govmomi/releases/download/v0.23.0/govc_linux_amd64.gz | gunzip > govc
|
||||
chmod +x govc
|
||||
mv govc /usr/local/bin/govc
|
||||
|
||||
for target in ${TARGETS[@]};
|
||||
do
|
||||
govc vm.destroy capv-ci-${target}-${TIMESTAMP}
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
trap on_exit EXIT
|
||||
|
||||
export PATH=${PWD}/.local/bin:$PATH
|
||||
export PATH=${PYTHON_BIN_DIR:-"/root/.local/bin"}:$PATH
|
||||
export GC_KIND="false"
|
||||
export TIMESTAMP="$(date -u '+%Y%m%dT%H%M%S')"
|
||||
export GOVC_DATACENTER="SDDC-Datacenter"
|
||||
export GOVC_INSECURE=true
|
||||
|
||||
cat << EOF > packer/ova/vsphere.json
|
||||
{
|
||||
"vcenter_server":"${GOVC_URL}",
|
||||
"insecure_connection": "${GOVC_INSECURE}",
|
||||
"username":"${GOVC_USERNAME}",
|
||||
"password":"${GOVC_PASSWORD}",
|
||||
"datastore":"WorkloadDatastore",
|
||||
"datacenter":"${GOVC_DATACENTER}",
|
||||
"cluster": "Cluster-1",
|
||||
"network": "sddc-cgw-network-8",
|
||||
"folder": "Workloads/ci/imagebuilder"
|
||||
}
|
||||
EOF
|
||||
|
||||
# Since access to esxi is blocked due to firewall rules,
|
||||
# `export`, `post-processor` sections from `packer-node.json` are removed.
|
||||
cat packer/ova/packer-node.json | jq 'del(.builders[] | select( .name == "vsphere" ).export)' > packer/ova/packer-node.json.tmp && mv packer/ova/packer-node.json.tmp packer/ova/packer-node.json
|
||||
cat packer/ova/packer-node.json | jq 'del(.builders[] | select( .name == "vsphere-clone" ).export)' > packer/ova/packer-node.json.tmp && mv packer/ova/packer-node.json.tmp packer/ova/packer-node.json
|
||||
cat packer/ova/packer-node.json | jq 'del(."post-processors"[])' > packer/ova/packer-node.json.tmp && mv packer/ova/packer-node.json.tmp packer/ova/packer-node.json
|
||||
|
||||
# Run the vpn client in container
|
||||
docker run --rm -d --name vpn -v "${HOME}/.openvpn/:${HOME}/.openvpn/" \
|
||||
-w "${HOME}/.openvpn/" --cap-add=NET_ADMIN --net=host --device=/dev/net/tun \
|
||||
gcr.io/cluster-api-provider-vsphere/extra/openvpn:latest
|
||||
|
||||
# Tail the vpn logs
|
||||
docker logs vpn
|
||||
|
||||
# install deps and build all images
|
||||
make deps-ova
|
||||
|
||||
declare -A PIDS
|
||||
for target in ${TARGETS[@]};
|
||||
do
|
||||
export PACKER_VAR_FILES="ci-${target}.json scripts/ci-disable-goss-inspect.json"
|
||||
if [[ "${target}" == 'photon-3' ]]; then
|
||||
cat << EOF > ci-${target}.json
|
||||
{
|
||||
"build_version": "capv-ci-${target}-${TIMESTAMP}",
|
||||
"linked_clone": "true",
|
||||
"template": "base-photon-3-20220623"
|
||||
}
|
||||
EOF
|
||||
make build-node-ova-vsphere-clone-${target} > ${ARTIFACTS}/${target}.log 2>&1 &
|
||||
|
||||
elif [[ "${target}" == 'photon-4' ]]; then
|
||||
cat << EOF > ci-${target}.json
|
||||
{
|
||||
"build_version": "capv-ci-${target}-${TIMESTAMP}",
|
||||
"linked_clone": "true",
|
||||
"template": "base-photon-4"
|
||||
}
|
||||
EOF
|
||||
make build-node-ova-vsphere-clone-${target} > ${ARTIFACTS}/${target}.log 2>&1 &
|
||||
|
||||
elif [[ "${target}" == 'rockylinux-8' ]]; then
|
||||
cat << EOF > ci-${target}.json
|
||||
{
|
||||
"build_version": "capv-ci-${target}-${TIMESTAMP}",
|
||||
"linked_clone": "true",
|
||||
"template": "base-rockylinux-8-20220623"
|
||||
}
|
||||
EOF
|
||||
make build-node-ova-vsphere-clone-${target} > ${ARTIFACTS}/${target}.log 2>&1 &
|
||||
|
||||
elif [[ "${target}" == 'ubuntu-2204' ]]; then
|
||||
cat << EOF > ci-${target}.json
|
||||
{
|
||||
"build_version": "capv-ci-${target}-${TIMESTAMP}",
|
||||
"linked_clone": "true",
|
||||
"template": "base-ubuntu-2204"
|
||||
}
|
||||
EOF
|
||||
make build-node-ova-vsphere-clone-${target} > ${ARTIFACTS}/${target}.log 2>&1 &
|
||||
|
||||
else
|
||||
cat << EOF > ci-${target}.json
|
||||
{
|
||||
"build_version": "capv-ci-${target}-${TIMESTAMP}"
|
||||
}
|
||||
EOF
|
||||
make build-node-ova-vsphere-${target} > ${ARTIFACTS}/${target}.log 2>&1 &
|
||||
fi
|
||||
PIDS["${target}"]=$!
|
||||
done
|
||||
|
||||
# need to unset errexit so that failed child tasks don't cause script to exit
|
||||
set +o errexit
|
||||
exit_err=false
|
||||
for target in "${!PIDS[@]}"; do
|
||||
wait "${PIDS[$target]}"
|
||||
if [[ $? -ne 0 ]]; then
|
||||
exit_err=true
|
||||
echo "${target}: FAILED. See logs in the artifacts folder."
|
||||
else
|
||||
echo "${target}: SUCCESS"
|
||||
fi
|
||||
done
|
||||
set -o errexit
|
||||
|
||||
cleanup_build_vm
|
||||
if [[ "${exit_err}" = true ]]; then
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user