-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[helm] Add a loki canary test to the helm chart (#7229)
**What this PR does / why we need it**: Add a helm chart test that utilizes the Loki canary to confirm the Loki cluster is functioning correctly. **Which issue(s) this PR fixes**: Fixes #7228 Co-authored-by: Karsten Jeschkies <[email protected]>
- Loading branch information
1 parent
9bc6e85
commit 6c53113
Showing
25 changed files
with
515 additions
and
99 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
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 |
---|---|---|
|
@@ -3,17 +3,96 @@ name: helm-ci | |
on: | ||
pull_request: | ||
paths: | ||
- 'production/helm/**' | ||
- "production/helm/**" | ||
|
||
env: | ||
CT_CONFIGFILE: production/helm/ct.yaml | ||
|
||
jobs: | ||
call-lint: | ||
uses: grafana/helm-charts/.github/workflows/linter.yml@main | ||
with: | ||
filter_regex_include: .*production/helm/.* | ||
|
||
call-lint-test: | ||
uses: grafana/helm-charts/.github/workflows/lint-test.yaml@main | ||
with: | ||
ct_configfile: production/helm/ct.yaml | ||
ct_check_version_increment: false | ||
helm_version: v3.8.2 | ||
name: Lint Helm Chart | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout Code | ||
uses: actions/checkout@v2 | ||
|
||
- name: Check Docs | ||
run: | | ||
docker run --rm --volume "$(pwd):/helm-docs" -u "$(id -u)" jnorwood/helm-docs:v1.8.1 | ||
if ! git diff --exit-code; then | ||
echo "Documentation not up to date. Please run helm-docs and commit changes!" >&2 | ||
exit 1 | ||
fi | ||
- name: Lint Code Base | ||
uses: docker://github/super-linter:v3.12.0 | ||
env: | ||
FILTER_REGEX_EXCLUDE: .*(README\.md|Chart\.yaml|NOTES.txt).* | ||
FILTER_REGEX_INCLUDE: .*production/helm/.* | ||
VALIDATE_ALL_CODEBASE: false | ||
VALIDATE_KUBERNETES_KUBEVAL: false | ||
VALIDATE_YAML: false | ||
VALIDATE_GO: false | ||
DEFAULT_BRANCH: main | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
call-test: | ||
name: Test Helm Chart | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Set up Helm | ||
uses: azure/setup-helm@v1 | ||
with: | ||
version: v3.8.2 | ||
|
||
# Python is required because `ct lint` runs Yamale (https://github.com/23andMe/Yamale) and | ||
# yamllint (https://github.com/adrienverge/yamllint) which require Python | ||
- name: Set up Python | ||
uses: actions/setup-python@v2 | ||
with: | ||
python-version: 3.7 | ||
|
||
- name: Set up chart-testing | ||
uses: helm/[email protected] | ||
|
||
- name: Run chart-testing (list-changed) | ||
id: list-changed | ||
run: | | ||
changed=$(ct list-changed --config "${CT_CONFIGFILE}") | ||
if [[ -n "$changed" ]]; then | ||
echo "::set-output name=changed::true" | ||
fi | ||
- name: Run chart-testing (lint) | ||
run: ct lint --config "${CT_CONFIGFILE}" --check-version-increment=false | ||
|
||
- name: Create kind cluster | ||
uses: helm/[email protected] | ||
if: steps.list-changed.outputs.changed == 'true' | ||
|
||
- name: Install prometheus operator | ||
id: install-prometheus | ||
if: steps.list-changed.outputs.changed == 'true' | ||
run: | | ||
kubectl create namespace prometheus | ||
helm install prometheus prometheus-community/kube-prometheus-stack \ | ||
--namespace prometheus \ | ||
--set grafana.enabled=false \ | ||
--set prometheus.prometheusSpec.serviceMonitorSelector.matchLabels.release=prometheus | ||
kubectl --namespace prometheus get pods -l "release=prometheus" | ||
kubectl --namespace prometheus get services -l "release=prometheus" | ||
- name: Run chart-testing (install) | ||
run: | | ||
changed=$(ct list-changed --config "${CT_CONFIGFILE}") | ||
if [[ "$changed" == "charts/enterprise-metrics" ]]; then | ||
# Do not run `ct install` for enterprise-metrics | ||
exit 0 | ||
fi | ||
ct install --config "${CT_CONFIGFILE}" |
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
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 |
---|---|---|
@@ -1,45 +1,53 @@ | ||
{ self, nixpkgs, system }: | ||
let buildVars = import ./build-vars.nix; | ||
in { | ||
overlay = final: prev: rec { | ||
loki = | ||
let | ||
# self.rev is only set on a clean git tree | ||
gitRevision = if (self ? rev) then self.rev else "dirty"; | ||
shortGitRevsion = with prev.lib; | ||
if (self ? rev) then | ||
(strings.concatStrings | ||
(lists.take 8 (strings.stringToCharacters gitRevision))) | ||
else | ||
"dirty"; | ||
in | ||
{ | ||
overlay = final: prev: | ||
let | ||
# self.rev is only set on a clean git tree | ||
gitRevision = if (self ? rev) then self.rev else "dirty"; | ||
shortGitRevsion = with prev.lib; | ||
if (self ? rev) then | ||
(strings.concatStrings | ||
(lists.take 8 (strings.stringToCharacters gitRevision))) | ||
else | ||
"dirty"; | ||
|
||
# the image tag script is hard coded to take only 7 characters | ||
imageTagVersion = with prev.lib; | ||
if (self ? rev) then | ||
(strings.concatStrings | ||
(lists.take 8 (strings.stringToCharacters gitRevision))) | ||
else | ||
"dirty"; | ||
# the image tag script is hard coded to take only 7 characters | ||
imageTagVersion = with prev.lib; | ||
if (self ? rev) then | ||
(strings.concatStrings | ||
(lists.take 8 (strings.stringToCharacters gitRevision))) | ||
else | ||
"dirty"; | ||
|
||
imageTag = | ||
if (self ? rev) then | ||
"${buildVars.gitBranch}-${imageTagVersion}" | ||
else | ||
"${buildVars.gitBranch}-${imageTagVersion}-WIP"; | ||
in | ||
prev.callPackage ./loki.nix { | ||
imageTag = | ||
if (self ? rev) then | ||
"${buildVars.gitBranch}-${imageTagVersion}" | ||
else | ||
"${buildVars.gitBranch}-${imageTagVersion}-WIP"; | ||
|
||
loki-helm-test = prev.callPackage ../production/helm/loki/src/helm-test { | ||
inherit (prev) pkgs lib buildGoModule dockerTools; | ||
rev = gitRevision; | ||
}; | ||
in | ||
{ | ||
inherit (loki-helm-test) loki-helm-test loki-helm-test-docker; | ||
|
||
loki = prev.callPackage ./loki.nix { | ||
inherit imageTag; | ||
inherit (buildVars) gitBranch; | ||
version = shortGitRevsion; | ||
pkgs = prev; | ||
}; | ||
|
||
faillint = prev.callPackage ./faillint.nix { | ||
inherit (prev) lib buildGoModule fetchFromGitHub; | ||
}; | ||
faillint = prev.callPackage ./faillint.nix { | ||
inherit (prev) lib buildGoModule fetchFromGitHub; | ||
}; | ||
|
||
chart-releaser = prev.callPackage ./chart-releaser.nix { | ||
inherit (prev) pkgs lib buildGoModule fetchFromGitHub; | ||
chart-releaser = prev.callPackage ./chart-releaser.nix { | ||
inherit (prev) pkgs lib buildGoModule fetchFromGitHub; | ||
}; | ||
}; | ||
}; | ||
} |
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
Oops, something went wrong.