97 lines
3.3 KiB
YAML
97 lines
3.3 KiB
YAML
version: 2.1
|
|
orbs:
|
|
slack: circleci/slack@3.4.2
|
|
|
|
jobs:
|
|
bats-unit-test:
|
|
docker:
|
|
# This image is built from test/docker/Test.dockerfile
|
|
- image: docker.mirror.hashicorp.services/hashicorpdev/vault-helm-test:0.2.0
|
|
steps:
|
|
- checkout
|
|
- run: bats ./test/unit -t
|
|
|
|
chart-verifier:
|
|
docker:
|
|
- image: docker.mirror.hashicorp.services/cimg/go:1.16
|
|
environment:
|
|
BATS_VERSION: "1.3.0"
|
|
CHART_VERIFIER_VERSION: "1.2.1"
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: install chart-verifier
|
|
command: go get github.com/redhat-certification/chart-verifier@${CHART_VERIFIER_VERSION}
|
|
- run:
|
|
name: install bats
|
|
command: |
|
|
curl -sSL https://github.com/bats-core/bats-core/archive/v${BATS_VERSION}.tar.gz -o /tmp/bats.tgz
|
|
tar -zxf /tmp/bats.tgz -C /tmp
|
|
sudo /bin/bash /tmp/bats-core-${BATS_VERSION}/install.sh /usr/local
|
|
- run:
|
|
name: run chart-verifier tests
|
|
command: bats ./test/chart -t
|
|
|
|
acceptance:
|
|
docker:
|
|
# This image is build from test/docker/Test.dockerfile
|
|
- image: docker.mirror.hashicorp.services/hashicorpdev/vault-helm-test:0.2.0
|
|
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: terraform init & apply
|
|
command: |
|
|
echo -e "${GOOGLE_APP_CREDS}" | base64 -d > vault-helm-test.json
|
|
export GOOGLE_CREDENTIALS=vault-helm-test.json
|
|
make provision-cluster
|
|
- run:
|
|
name: Run acceptance tests
|
|
command: bats ./test/acceptance -t
|
|
|
|
- run:
|
|
name: terraform destroy
|
|
command: |
|
|
export GOOGLE_CREDENTIALS=vault-helm-test.json
|
|
make destroy-cluster
|
|
when: always
|
|
update-helm-charts-index:
|
|
docker:
|
|
- image: docker.mirror.hashicorp.services/circleci/golang:1.15.3
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: verify Chart version matches tag version
|
|
command: |
|
|
GO111MODULE=on go get github.com/mikefarah/yq/v2
|
|
git_tag=$(echo "${CIRCLE_TAG#v}")
|
|
chart_tag=$(yq r Chart.yaml version)
|
|
if [ "${git_tag}" != "${chart_tag}" ]; then
|
|
echo "chart version (${chart_tag}) did not match git version (${git_tag})"
|
|
exit 1
|
|
fi
|
|
- run:
|
|
name: update helm-charts index
|
|
command: |
|
|
curl --show-error --silent --fail --user "${CIRCLE_TOKEN}:" \
|
|
-X POST \
|
|
-H 'Content-Type: application/json' \
|
|
-H 'Accept: application/json' \
|
|
-d "{\"branch\": \"main\",\"parameters\":{\"SOURCE_REPO\": \"${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}\",\"SOURCE_TAG\": \"${CIRCLE_TAG}\"}}" \
|
|
"${CIRCLE_ENDPOINT}/${CIRCLE_PROJECT}/pipeline"
|
|
- slack/status:
|
|
fail_only: true
|
|
failure_message: "Failed to trigger an update to the helm charts index. Check the logs at: ${CIRCLE_BUILD_URL}"
|
|
|
|
workflows:
|
|
version: 2
|
|
# Note: unit and acceptance tests are now being run in GitHub Actions
|
|
update-helm-charts-index:
|
|
jobs:
|
|
- update-helm-charts-index:
|
|
context: helm-charts-trigger-vault
|
|
filters:
|
|
tags:
|
|
only: /^v.*/
|
|
branches:
|
|
ignore: /.*/
|