This repository has been archived by the owner on Nov 1, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add test for `fluxctl sync` * Add test for `fluxctl` (de)automate/(un)lock/policy * Add test for `fluxctl list-images` and `fluxctl list-services`
- Loading branch information
Showing
5 changed files
with
181 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#!/usr/bin/env bats | ||
|
||
clone_dir="" | ||
|
||
function setup() { | ||
load lib/env | ||
load lib/install | ||
load lib/poll | ||
load lib/defer | ||
|
||
kubectl create namespace "$FLUX_NAMESPACE" | ||
# Install flux and the git server, allowing external access | ||
install_git_srv git_srv_result | ||
# shellcheck disable=SC2154 | ||
export GIT_SSH_COMMAND="${git_srv_result[0]}" | ||
# Teardown the created port-forward to gitsrv and restore Git settings. | ||
defer kill "${git_srv_result[1]}" | ||
|
||
install_flux_with_fluxctl '15_fluxctl_sync' | ||
|
||
# Clone the repo | ||
clone_dir="$(mktemp -d)" | ||
defer rm -rf "'$clone_dir'" | ||
git clone -b master ssh://git@localhost/git-server/repos/cluster.git "$clone_dir" | ||
# shellcheck disable=SC2164 | ||
cd "$clone_dir" | ||
} | ||
|
||
@test "fluxctl sync" { | ||
|
||
# Sync | ||
poll_until_true 'fluxctl sync succeeds' "fluxctl --k8s-fwd-ns ${FLUX_NAMESPACE} sync" | ||
|
||
# Wait until flux deploys the workloads | ||
poll_until_true 'workload podinfo' 'kubectl -n demo describe deployment/podinfo' | ||
|
||
# Check the sync tag | ||
local head_hash | ||
head_hash=$(git rev-list -n 1 HEAD) | ||
poll_until_equals "sync tag" "$head_hash" 'git pull -f --tags > /dev/null 2>&1; git rev-list -n 1 flux' | ||
|
||
} | ||
|
||
function teardown() { | ||
run_deferred | ||
# Although the namespace delete below takes care of removing most Flux | ||
# elements, the global resources will not be removed without this. | ||
uninstall_flux_with_fluxctl | ||
# Removing the namespace also takes care of removing gitsrv. | ||
kubectl delete namespace "$FLUX_NAMESPACE" | ||
# Only remove the demo workloads after Flux, so that they cannot be recreated. | ||
kubectl delete namespace "$DEMO_NAMESPACE" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
#!/usr/bin/env bats | ||
|
||
clone_dir="" | ||
|
||
function setup() { | ||
load lib/env | ||
load lib/install | ||
load lib/poll | ||
load lib/defer | ||
|
||
kubectl create namespace "$FLUX_NAMESPACE" | ||
# Install flux and the git server, allowing external access | ||
install_git_srv git_srv_result | ||
# shellcheck disable=SC2154 | ||
export GIT_SSH_COMMAND="${git_srv_result[0]}" | ||
# Teardown the created port-forward to gitsrv and restore Git settings. | ||
defer kill "${git_srv_result[1]}" | ||
|
||
install_flux_with_fluxctl | ||
|
||
# Clone the repo | ||
clone_dir="$(mktemp -d)" | ||
defer rm -rf "'$clone_dir'" | ||
git clone -b master ssh://git@localhost/git-server/repos/cluster.git "$clone_dir" | ||
# shellcheck disable=SC2164 | ||
cd "$clone_dir" | ||
} | ||
|
||
# TODO: make annotation checks more precise with a yaml-aware tool as opposed to simply grepping for precense | ||
# anywhere in the files | ||
@test "fluxctl policy/(de)automate/(un)lock" { | ||
|
||
# Check that podinfo is starting up in the state assumed by the test | ||
grep -q 'fluxcd.io/automated: "true"' workloads/podinfo-dep.yaml # automated | ||
! grep -q 'fluxcd.io/locked' workloads/podinfo-dep.yaml # unlocked | ||
grep -q 'fluxcd.io/tag.init: regex:^3.10.*' workloads/podinfo-dep.yaml | ||
grep -q 'fluxcd.io/tag.podinfod: semver:~3.1' workloads/podinfo-dep.yaml | ||
|
||
########### | ||
## Automate | ||
########### | ||
|
||
# de-automate (polling since Flux may not be ready yet) | ||
poll_until_true 'fluxctl deautomate' "fluxctl --k8s-fwd-ns ${FLUX_NAMESPACE} deautomate --workload=demo:deployment/podinfo" | ||
git pull | ||
! grep -q 'fluxcd.io/automated' workloads/podinfo-dep.yaml | ||
|
||
# re-automate | ||
fluxctl --k8s-fwd-ns "${FLUX_NAMESPACE}" automate --workload=demo:deployment/podinfo | ||
git pull | ||
grep -q "fluxcd.io/automated: 'true'" workloads/podinfo-dep.yaml | ||
|
||
# de-automate again, with the policy command | ||
fluxctl --k8s-fwd-ns "${FLUX_NAMESPACE}" policy --deautomate --workload=demo:deployment/podinfo | ||
git pull | ||
! grep -q 'fluxcd.io/automated' workloads/podinfo-dep.yaml | ||
|
||
# re-automate, with the policy command | ||
fluxctl --k8s-fwd-ns "${FLUX_NAMESPACE}" policy --automate --workload=demo:deployment/podinfo | ||
git pull | ||
grep -q "fluxcd.io/automated: 'true'" workloads/podinfo-dep.yaml | ||
|
||
####### | ||
## Lock | ||
####### | ||
|
||
# lock | ||
fluxctl --k8s-fwd-ns "${FLUX_NAMESPACE}" lock --workload=demo:deployment/podinfo | ||
git pull | ||
grep -q "fluxcd.io/locked: 'true'" workloads/podinfo-dep.yaml | ||
|
||
# unlock | ||
fluxctl --k8s-fwd-ns "${FLUX_NAMESPACE}" unlock --workload=demo:deployment/podinfo | ||
git pull | ||
! grep -q 'fluxcd.io/locked' workloads/podinfo-dep.yaml | ||
|
||
# re-lock, with the policy command | ||
fluxctl --k8s-fwd-ns "${FLUX_NAMESPACE}" policy --lock --workload=demo:deployment/podinfo | ||
git pull | ||
grep -q "fluxcd.io/locked: 'true'" workloads/podinfo-dep.yaml | ||
|
||
# unlock again, with the policy command | ||
fluxctl --k8s-fwd-ns "${FLUX_NAMESPACE}" policy --unlock --workload=demo:deployment/podinfo | ||
git pull | ||
! grep -q 'fluxcd.io/locked' workloads/podinfo-dep.yaml | ||
|
||
############## | ||
## Policy tags | ||
############## | ||
|
||
# Update podinfo tag | ||
fluxctl --k8s-fwd-ns "${FLUX_NAMESPACE}" policy --workload=demo:deployment/podinfo --tag='podinfod=3.5.*' | ||
git pull | ||
grep -q "fluxcd.io/tag.podinfod: glob:3.5.*" workloads/podinfo-dep.yaml | ||
|
||
} | ||
|
||
function teardown() { | ||
run_deferred | ||
# Although the namespace delete below takes care of removing most Flux | ||
# elements, the global resources will not be removed without this. | ||
uninstall_flux_with_fluxctl | ||
# Removing the namespace also takes care of removing gitsrv. | ||
kubectl delete namespace "$FLUX_NAMESPACE" | ||
# Only remove the demo workloads after Flux, so that they cannot be recreated. | ||
kubectl delete namespace "$DEMO_NAMESPACE" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# make sure automatic syncs don't kick in | ||
- op: add | ||
path: /spec/template/spec/containers/0/args/- | ||
value: --sync-interval=525600m | ||
- op: add | ||
path: /spec/template/spec/containers/0/args/- | ||
value: --git-poll-interval=525600m |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
bases: | ||
- "../base/flux" | ||
patchesJson6902: | ||
- target: | ||
group: apps | ||
version: v1 | ||
kind: Deployment | ||
name: flux | ||
path: fluxctl_sync.yaml |