Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci(test): refactor helm workflows #15859

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 1 addition & 104 deletions .github/workflows/helm-diff-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Helm Loki Diff CI
on:
pull_request:
paths:
- 'production/helm/loki/**'
- "production/helm/loki/**"

permissions:
contents: read
Expand Down Expand Up @@ -269,106 +269,3 @@ jobs:
name: simple-scalable-aws-kube-irsa-diff-output
path: formatted_diff_output.md
retention-days: 2

summary-diff-outputs:
name: Summary Diffs
runs-on: ubuntu-latest
needs:
- single-binary-diff
- default-values-diff
- ingress-values-diff
- legacy-monitoring-values-diff
- simple-scalable-aws-kube-irsa-values-diff

steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/download-artifact@v4
with:
name: single-binary-diff-output
path: single-binary-diff

- uses: actions/download-artifact@v4
with:
name: default-values-diff-output
path: default-values-diff

- uses: actions/download-artifact@v4
with:
name: ingress-diff-output
path: ingress-values-diff

- uses: actions/download-artifact@v4
with:
name: legacy-monitoring-diff-output
path: legacy-monitoring-values-diff

- uses: actions/download-artifact@v4
with:
name: simple-scalable-aws-kube-irsa-diff-output
path: simple-scalable-aws-kube-irsa-values-diff

- name: Combine diff outputs
run: |
echo "## Helm Diff Output - Summary" > formatted_diff_output.md

echo "<details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo "<summary>Single Binary Scenario</summary>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo '```diff' >> formatted_diff_output.md
cat single-binary-diff/formatted_diff_output.md >> formatted_diff_output.md
echo '```' >> formatted_diff_output.md
echo "</details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md

echo "<details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo "<summary>Default Values Scenario</summary>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo '```diff' >> formatted_diff_output.md
cat default-values-diff/formatted_diff_output.md >> formatted_diff_output.md
echo '```' >> formatted_diff_output.md
echo "</details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md

echo "<details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo "<summary>Ingress Values Scenario</summary>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo '```diff' >> formatted_diff_output.md
cat ingress-values-diff/formatted_diff_output.md >> formatted_diff_output.md
echo '```' >> formatted_diff_output.md
echo "</details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md

echo "<details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo "<summary>Legacy Monitoring Scenario</summary>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo '```diff' >> formatted_diff_output.md
cat legacy-monitoring-values-diff/formatted_diff_output.md >> formatted_diff_output.md
echo '```' >> formatted_diff_output.md
echo "</details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md

echo "<details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo "<summary>Simple Scalable AWS Kube IRSA Scenario</summary>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo '```diff' >> formatted_diff_output.md
cat simple-scalable-aws-kube-irsa-values-diff/formatted_diff_output.md >> formatted_diff_output.md
echo '```' >> formatted_diff_output.md
echo "</details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md

- name: Post diff as PR comment
uses: marocchino/sticky-pull-request-comment@v2
with:
header: "Helm Diff Output - Summary"
skip_unchanged: true
hide_and_recreate: true
append: true
hide_classify: "OUTDATED"
path: formatted_diff_output.md
101 changes: 101 additions & 0 deletions .github/workflows/helm-diff-summary.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Helm diff summary
on:
workflow_run:
workflows: ["Helm Loki Diff CI"]
types:
- completed

jobs:
summary-diff-outputs:
name: Summary Diffs
runs-on: ubuntu-latest

steps:
- uses: actions/download-artifact@v4
with:
name: single-binary-diff-output
path: single-binary-diff

- uses: actions/download-artifact@v4
with:
name: default-values-diff-output
path: default-values-diff

- uses: actions/download-artifact@v4
with:
name: ingress-diff-output
path: ingress-values-diff

- uses: actions/download-artifact@v4
with:
name: legacy-monitoring-diff-output
path: legacy-monitoring-values-diff

- uses: actions/download-artifact@v4
with:
name: simple-scalable-aws-kube-irsa-diff-output
path: simple-scalable-aws-kube-irsa-values-diff

- name: Combine diff outputs
run: |
echo "## Helm Diff Output - Summary" > formatted_diff_output.md

echo "<details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo "<summary>Single Binary Scenario</summary>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo '```diff' >> formatted_diff_output.md
cat single-binary-diff/formatted_diff_output.md >> formatted_diff_output.md
echo '```' >> formatted_diff_output.md
echo "</details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md

echo "<details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo "<summary>Default Values Scenario</summary>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo '```diff' >> formatted_diff_output.md
cat default-values-diff/formatted_diff_output.md >> formatted_diff_output.md
echo '```' >> formatted_diff_output.md
echo "</details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md

echo "<details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo "<summary>Ingress Values Scenario</summary>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo '```diff' >> formatted_diff_output.md
cat ingress-values-diff/formatted_diff_output.md >> formatted_diff_output.md
echo '```' >> formatted_diff_output.md
echo "</details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md

echo "<details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo "<summary>Legacy Monitoring Scenario</summary>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo '```diff' >> formatted_diff_output.md
cat legacy-monitoring-values-diff/formatted_diff_output.md >> formatted_diff_output.md
echo '```' >> formatted_diff_output.md
echo "</details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md

echo "<details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo "<summary>Simple Scalable AWS Kube IRSA Scenario</summary>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md
echo '```diff' >> formatted_diff_output.md
cat simple-scalable-aws-kube-irsa-values-diff/formatted_diff_output.md >> formatted_diff_output.md
echo '```' >> formatted_diff_output.md
echo "</details>" >> formatted_diff_output.md
echo "" >> formatted_diff_output.md

- name: Post diff as PR comment
uses: marocchino/sticky-pull-request-comment@v2
with:
header: "Helm Diff Output - Summary"
skip_unchanged: true
hide_and_recreate: true
append: true
hide_classify: "OUTDATED"
path: formatted_diff_output.md
14 changes: 9 additions & 5 deletions production/helm/loki/scenarios/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Each scenario is used in a different job execution that will be used to deploy l

We deploy the scenario with the latest release and then we execute a helm diff with the current version in the workspace, the diff between the release deployed will be posted in the pull request inside a comment like [this](https://github.com/grafana/loki/pull/15734#issuecomment-2592439539) making clear to review.

>*NOTE*: the helm diff output file will be available for each scenario inside github action to download for 2 days, after this you may need to re-run the job if you would like to download the output files.
> _NOTE_: the helm diff output file will be available for each scenario inside github action to download for 2 days, after this you may need to re-run the job if you would like to download the output files.

## Run scenarios locally

Expand All @@ -16,9 +16,9 @@ All this process that we run in the CI can be done locally, the following steps

To run locally you will need the following tools in your local environment

* k3d or any kubernetes cluster
* helm
* [helm-diff plugin](https://github.com/databus23/helm-diff)
- k3d or any kubernetes cluster
- helm
- [helm-diff plugin](https://github.com/databus23/helm-diff)

## Run

Expand All @@ -32,7 +32,7 @@ Deploy in your kubernetes cluster the latest released version of the helm chart
helm install --create-namespace loki-release grafana/loki -f ${scenario}-values.yaml
```

Then run the helm diff plugin to compare the local helm chart to see the upgrade changes that will happen:
Then run the helm diff plugin to compare the local helm chart to see the upgrade changes that will happen:

```shell
HELM_DIFF_USE_UPGRADE_DRY_RUN: true helm diff upgrade loki-release -f ${scenario}-values.yaml production/helm/loki
Expand Down Expand Up @@ -61,3 +61,7 @@ As the last step you need to run a diff between both files:
```shell
diff current-manifest.yaml release-manifest.yaml
```

## Known issues

Running the comments in the PR
Loading