mirror of
https://github.com/plcnk/charts.git
synced 2026-04-05 17:22:21 +00:00
Compare commits
25 Commits
it-tools-0
...
it-tools-2
| Author | SHA1 | Date | |
|---|---|---|---|
| 36dce8cb0c | |||
| 392a30a3c9 | |||
| 7ee7a18896 | |||
| 882dc805cf | |||
| 6afaf6cf65 | |||
| 4aa55b6b26 | |||
| d9f460f93a | |||
| aa0dd39801 | |||
| 31bbf1ca94 | |||
| 8a84b5e13a | |||
| 6655b6bb97 | |||
| 4c3749aa12 | |||
| 60408a5fd4 | |||
| e476ff3c5b | |||
| 6877ce65df | |||
| 668781b2aa | |||
| 65985fa488 | |||
| afd6a5141e | |||
| 1c16ee1558 | |||
| 26326862fc | |||
| be39c8c240 | |||
| 5e11c94795 | |||
| 1a462f655d | |||
| 13e72521ae | |||
| 290272100f |
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
@ -0,0 +1 @@
|
||||
* @plcnk
|
||||
2
.github/cr-config.yaml
vendored
Normal file
2
.github/cr-config.yaml
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
generate-release-notes: true
|
||||
skip-existing: true
|
||||
4
.github/ct-install-config.yaml
vendored
Normal file
4
.github/ct-install-config.yaml
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
debug: true
|
||||
all: true
|
||||
chart-repos:
|
||||
- bjw-s=https://bjw-s.github.io/helm-charts
|
||||
5
.github/ct-lint-config.yaml
vendored
Normal file
5
.github/ct-lint-config.yaml
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
debug: true
|
||||
all: true
|
||||
validate-maintainers: false
|
||||
chart-repos:
|
||||
- bjw-s=https://bjw-s.github.io/helm-charts
|
||||
21
.github/renovate.json5
vendored
Normal file
21
.github/renovate.json5
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"github>plcnk/.github:default.json5",
|
||||
":semanticCommitTypeAll(chore)"
|
||||
],
|
||||
"regexManagers": [
|
||||
{
|
||||
"fileMatch": ["\\.yaml$"],
|
||||
"matchStrings": [
|
||||
"# ?renovate datasource=(?<datasource>.+?) depName=(?<depName>.+)\\n.+: [\"']?(?<currentValue>.+?)[\"']?\\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"packageRules": [
|
||||
{
|
||||
"matchDatasources": ["helm"],
|
||||
"commitMessageTopic": "{{depName}} Helm release"
|
||||
}
|
||||
]
|
||||
}
|
||||
56
.github/workflows/lint-test.yaml
vendored
Normal file
56
.github/workflows/lint-test.yaml
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
name: Linting and Testing
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
paths:
|
||||
- "charts/**"
|
||||
- ".github/workflows/**"
|
||||
pull_request:
|
||||
branches: [master]
|
||||
paths:
|
||||
- "charts/**"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up chart-testing
|
||||
uses: helm/chart-testing-action@v2.6.1
|
||||
|
||||
- name: Run chart-testing (lint)
|
||||
run: ct lint --config .github/ct-lint-config.yaml
|
||||
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install Helm
|
||||
uses: azure/setup-helm@v4
|
||||
|
||||
- name: Set up chart-testing
|
||||
uses: helm/chart-testing-action@v2.6.1
|
||||
|
||||
- name: Run chart-testing (list-changed)
|
||||
id: list-changed
|
||||
run: |
|
||||
changed=$(ct list-changed --chart-dirs charts --target-branch ${{ github.event.repository.default_branch }})
|
||||
if [[ -n "$changed" ]]; then
|
||||
echo "changed=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Create kind cluster
|
||||
if: steps.list-changed.outputs.changed == 'true'
|
||||
uses: helm/kind-action@v1.10.0
|
||||
|
||||
- name: Run chart-testing (install)
|
||||
if: steps.list-changed.outputs.changed == 'true'
|
||||
run: ct install --config .github/ct-install-config.yaml
|
||||
83
.github/workflows/release.yaml
vendored
83
.github/workflows/release.yaml
vendored
@ -1,4 +1,4 @@
|
||||
name: Release Charts
|
||||
name: Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
@ -8,12 +8,31 @@ on:
|
||||
paths:
|
||||
- charts/**
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
concurrency:
|
||||
group: release
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
release:
|
||||
permissions:
|
||||
contents: write
|
||||
release-charts:
|
||||
name: Release Charts
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
AUTHOR_USER: plcnk-bot
|
||||
AUTHOR_EMAIL: 178334506+plcnk-bot[bot]@users.noreply.github.com
|
||||
steps:
|
||||
- name: Generate Token
|
||||
id: app-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
app-id: ${{ secrets.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
@ -21,10 +40,56 @@ jobs:
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config user.name "$GITHUB_ACTOR"
|
||||
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||
git config user.name "${{ env.AUTHOR_USER }}"
|
||||
git config user.email "${{ env.AUTHOR_EMAIL }}"
|
||||
|
||||
- name: Run chart-releaser
|
||||
uses: helm/chart-releaser-action@v1.6.0
|
||||
- name: Add Helm repos
|
||||
run: helm repo add bjw-s https://bjw-s.github.io/helm-charts
|
||||
|
||||
- name: Install chart-releaser
|
||||
uses: helm/chart-releaser-action@v1.5.0
|
||||
with:
|
||||
install_only: true
|
||||
|
||||
- name: Package charts
|
||||
id: package_charts
|
||||
run: |
|
||||
changed_charts=""
|
||||
for dir in charts/*; do
|
||||
chart_name="$(basename "$dir")"
|
||||
version="$(yq '.version' "$dir/Chart.yaml")"
|
||||
if ! git rev-parse "$chart_name-${version#v}" &>/dev/null; then
|
||||
echo "Packaging chart $chart_name..."
|
||||
cr package --package-path=.cr-release-packages "$dir"
|
||||
changed_charts+="$chart_name,"
|
||||
fi
|
||||
done
|
||||
echo "changed_charts=${changed_charts%,}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
if: steps.package_charts.outputs.changed_charts != ''
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ github.token }}
|
||||
|
||||
- name: Push charts to GHCR
|
||||
if: steps.package_charts.outputs.changed_charts != ''
|
||||
run: |
|
||||
for pkg in .cr-release-packages/*; do
|
||||
if [ -z "${pkg:-}" ]; then
|
||||
break
|
||||
fi
|
||||
echo "Pushing $pkg..."
|
||||
helm push "$pkg" "oci://ghcr.io/$GITHUB_REPOSITORY_OWNER/charts"
|
||||
done
|
||||
|
||||
- name: Publish charts
|
||||
uses: helm/chart-releaser-action@v1.5.0
|
||||
if: steps.package_charts.outputs.changed_charts != ''
|
||||
with:
|
||||
config: .github/cr-config.yaml
|
||||
skip_packaging: true
|
||||
env:
|
||||
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||
CR_TOKEN: ${{ steps.app-token.outputs.token }}
|
||||
|
||||
115
.github/workflows/renovate.yaml
vendored
Normal file
115
.github/workflows/renovate.yaml
vendored
Normal file
@ -0,0 +1,115 @@
|
||||
name: Renovate
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- renovate/**
|
||||
|
||||
env:
|
||||
COMMIT_MESSAGE: "chore: Update chart metadata"
|
||||
|
||||
jobs:
|
||||
update-chart-metadata:
|
||||
name: Update Chart Metadata
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
AUTHOR_USER: chart-bot
|
||||
AUTHOR_EMAIL: 160046936+charts-bot[bot]@users.noreply.github.com
|
||||
steps:
|
||||
- name: Generate Token
|
||||
id: app-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
app-id: ${{ secrets.BOT_APP_ID }}
|
||||
private-key: ${{ secrets.BOT_APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Detect Changes
|
||||
uses: dorny/paths-filter@v3
|
||||
id: changes
|
||||
with:
|
||||
list-files: shell
|
||||
filters: |
|
||||
charts:
|
||||
- charts/**
|
||||
|
||||
- name: Fetch PR
|
||||
id: pr
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{ steps.app-token.outputs.token }}
|
||||
script: |
|
||||
const response = await github.rest.repos.listPullRequestsAssociatedWithCommit({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
commit_sha: context.sha,
|
||||
});
|
||||
const pr = response.data.shift();
|
||||
core.setOutput("title", pr.title);
|
||||
core.setOutput("base_ref", pr.base.ref);
|
||||
core.setOutput("labels", pr.labels.map((e) => e.name).filter((e) => e));
|
||||
|
||||
- name: Update changelog
|
||||
env:
|
||||
TITLE: ${{ steps.pr.outputs.title }}
|
||||
CHANGELOG_APPEND: ${{ contains(steps.pr.outputs.labels, 'changelog-append') }}
|
||||
BREAKING_CHANGE: ${{ contains(steps.pr.outputs.labels, 'breaking-change') }}
|
||||
run: |
|
||||
set -eux
|
||||
export DESCRIPTION="$(perl -pe 's/^.+?: (.)/\U$1/' <<<"$TITLE")"
|
||||
if [[ "$BREAKING_CHANGE" == "true" ]]; then
|
||||
DESCRIPTION="BREAKING - $DESCRIPTION"
|
||||
fi
|
||||
CHANGELOG="$(yq -o json '[{"kind": "changed", "description": strenv(DESCRIPTION)}]')"
|
||||
UPDATE_TYPE=replace
|
||||
if [[ "$CHANGELOG_APPEND" == "true" ]]; then
|
||||
UPDATE_TYPE=append
|
||||
fi
|
||||
./hack/update-changelog.sh "$UPDATE_TYPE" "$CHANGELOG" ${{ steps.changes.outputs.charts_files }}
|
||||
|
||||
- name: Set type to patch
|
||||
if: contains(steps.pr.outputs.labels, 'patch') || contains(steps.pr.outputs.labels, 'digest')
|
||||
run: echo TYPE=patch >>$GITHUB_ENV
|
||||
- name: Set type to minor
|
||||
if: contains(steps.pr.outputs.labels, 'major') || contains(steps.pr.outputs.labels, 'minor')
|
||||
run: echo TYPE=minor >>$GITHUB_ENV
|
||||
- name: Update chart version
|
||||
if: "!contains(steps.pr.outputs.labels, 'skip-version-bump')"
|
||||
run: |
|
||||
set -eux
|
||||
./hack/update-version.sh "$TYPE" ${{ steps.changes.outputs.charts_files }}
|
||||
|
||||
- name: Install helm-docs
|
||||
uses: gabe565/setup-helm-docs-action@v1
|
||||
- name: Generate Helm docs
|
||||
run: |
|
||||
set -eu
|
||||
./hack/gen-helm-docs.sh
|
||||
|
||||
- name: Check if commit exists
|
||||
id: commit_exists
|
||||
env:
|
||||
BASE_REF: ${{ steps.pr.outputs.base_ref }}
|
||||
run: |
|
||||
set -eu
|
||||
IFS=$'\n\t'
|
||||
commits="$(git rev-list --pretty=oneline "origin/$BASE_REF..HEAD" | cut -d' ' -f2-)"
|
||||
if grep -F -e "$COMMIT_MESSAGE" <<<"$commits"; then
|
||||
echo 'result=true' >>$GITHUB_OUTPUT
|
||||
else
|
||||
echo 'result=false' >>$GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Commit chart version
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
if: steps.commit_exists.outputs.result == 'false' && !contains(steps.pr.outputs.labels, 'skip-chart-meta')
|
||||
with:
|
||||
commit_user_name: ${{ env.AUTHOR_USER }}
|
||||
commit_user_email: ${{ env.AUTHOR_EMAIL }}
|
||||
commit_author: ${{ env.AUTHOR_USER }} <${{ env.AUTHOR_EMAIL }}>
|
||||
commit_message: ${{ env.COMMIT_MESSAGE }}
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@ -1 +1,5 @@
|
||||
test_values/
|
||||
# Test values
|
||||
test_values/
|
||||
|
||||
# Helm resources
|
||||
charts/**/charts
|
||||
|
||||
37
README.md
37
README.md
@ -3,41 +3,28 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/minicloudlabs/helm-charts/blob/main/LICENSE"><img src="https://img.shields.io/github/license/minicloudlabs/helm-charts" /></a>
|
||||
<a href="https://github.com/plcnk/charts/blob/master/LICENSE"><img src="https://img.shields.io/github/license/plcnk/charts" /></a>
|
||||
<a href="https://artifacthub.io/packages/search?repo=plcnk"><img src="https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/plcnk" /></a>
|
||||
<a href="https://github.com/plcnk/charts/actions/workflows/release.yaml"><img src="https://github.com/plcnk/charts/actions/workflows/release.yaml/badge.svg" /></a>
|
||||
<a href="https://github.com/plcnk/charts/actions/workflows/lint-test.yaml"><img src="https://github.com/plcnk/charts/actions/workflows/lint-test.yaml/badge.svg" /></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/github/v/release/plcnk/charts?filter=it-tools-*" />
|
||||
</p>
|
||||
# Charts
|
||||
|
||||
# plcnk's Helm Charts
|
||||
A collection of [Helm](https://helm.sh) charts for [Kubernetes](https://kubernetes.io/).
|
||||
|
||||
Charts for deploying applications on [Kubernetes](https://kubernetes.io/) using [Helm](https://helm.sh/).
|
||||
All charts are based on the [bjw-s common library chart](https://github.com/bjw-s/helm-charts/tree/main/charts/library/common).
|
||||
|
||||
Also available on [Artifact Hub](https://artifacthub.io/packages/search?repo=plcnk).
|
||||
|
||||
The code in this repository is provided as-is with no warranties.
|
||||
|
||||
## Usage
|
||||
## Chart Overview
|
||||
|
||||
[Helm](https://helm.sh) must be installed to use the charts.
|
||||
Please refer to Helm's [documentation](https://helm.sh/docs/) to get started.
|
||||
|
||||
Once Helm is set up properly, add the repo as follows:
|
||||
|
||||
```console
|
||||
helm repo add plcnk https://charts.plcnk.net
|
||||
helm repo update
|
||||
```
|
||||
|
||||
You can then run `helm search repo plcnk` to see the charts.
|
||||
|
||||
## Available charts
|
||||
|
||||
| Chart | Chart Version | App Version | Description |
|
||||
| --------------------------------------------------------------------- | ------------- | ----------------- | --------------------------------------------------------------- |
|
||||
| [it-tools](https://github.com/plcnk/charts/tree/main/charts/it-tools) | 0.1.0 | 2024.5.13-a0bc346 | Collection of handy online tools for developers, with great UX. |
|
||||
| Chart | Description |
|
||||
| ----- | ----------- |
|
||||
| [# it-tools <img src='https://raw.githubusercontent.com/plcnk/charts/master/charts/it-tools/icon.svg' alt='it-tools icon' width='18px' align='right' loading='lazy'>](https://github.com/plcnk/charts/tree/master/charts/it-tools/) | Collection of handy online tools for developers, with great UX. |
|
||||
|
||||
## License
|
||||
|
||||
[MIT License](https://github.com/plcnk/charts/blob/master/LICENSE).
|
||||
This project is licensed under the [MIT License](./LICENSE).
|
||||
|
||||
6
charts/it-tools/Chart.lock
Normal file
6
charts/it-tools/Chart.lock
Normal file
@ -0,0 +1,6 @@
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: https://bjw-s.github.io/helm-charts
|
||||
version: 3.3.2
|
||||
digest: sha256:5a0f9f06aa383b7cc3070899b879401bcd4ae48b021d0a2b7f9ba39827019e24
|
||||
generated: "2024-08-15T17:47:53.312594+02:00"
|
||||
@ -1,30 +1,29 @@
|
||||
apiVersion: v2
|
||||
name: it-tools
|
||||
description: Collection of handy online tools for developers, with great UX.
|
||||
icon: https://raw.githubusercontent.com/CorentinTh/it-tools/main/public/mstile-310x310.png
|
||||
home: https://github.com/plcnk/charts/tree/master/charts/it-tools
|
||||
icon: https://raw.githubusercontent.com/plcnk/charts/master/charts/it-tools/icon.svg
|
||||
type: application
|
||||
version: 2.1.1
|
||||
# renovate datasource=docker depName=ghcr.io/corentinth/it-tools
|
||||
appVersion: "2024.5.13-a0bc346"
|
||||
kubeVersion: ">=1.22.0-0"
|
||||
keywords:
|
||||
- it-tools
|
||||
- it
|
||||
- tools
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: https://bjw-s.github.io/helm-charts
|
||||
version: 3.3.2
|
||||
sources:
|
||||
- https://github.com/CorentinTh/it-tools
|
||||
maintainers:
|
||||
- name: Romain Pluciennik
|
||||
email: romain.pluciennik@gmail.com
|
||||
|
||||
# A chart can be either an 'application' or a 'library' chart.
|
||||
#
|
||||
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||
# to be deployed.
|
||||
#
|
||||
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||
type: application
|
||||
|
||||
# This is the chart version. This version number should be incremented each time you make changes
|
||||
# to the chart and its templates, including the app version.
|
||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||
version: 0.1.0
|
||||
|
||||
# This is the version number of the application being deployed. This version number should be
|
||||
# incremented each time you make changes to the application. Versions are not expected to
|
||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||
# It is recommended to use it with quotes.
|
||||
appVersion: "2024.5.13-a0bc346"
|
||||
annotations:
|
||||
artifacthub.io/changes: |-
|
||||
- kind: added
|
||||
description: Added replicas key
|
||||
artifacthub.io/links: |-
|
||||
- name: App Source
|
||||
url: https://github.com/CorentinTh/it-tools
|
||||
- name: Chart Source
|
||||
url: https://github.com/plcnk/charts/tree/master/charts/it-tools
|
||||
|
||||
@ -1,109 +1,106 @@
|
||||
# it-tools
|
||||
# # it-tools
|
||||
|
||||
Helm chart for deploying [it-tools](https://it-tools.tech/).
|
||||
<img src="https://raw.githubusercontent.com/plcnk/charts/master/charts/it-tools/icon.svg" align="right" width="92" alt="it-tools logo">
|
||||
|
||||
it-tools is a collection of handy online tools for developers, with great UX.
|
||||

|
||||

|
||||

|
||||
|
||||
> [!NOTE]
|
||||
> This chart is not maintained by the original author of it-tools and any problems with this chart should be submitted [here](https://github.com/plcnk/charts/issues/new).
|
||||
Collection of handy online tools for developers, with great UX.
|
||||
|
||||
## Source code
|
||||
**Homepage:** <https://github.com/plcnk/charts/tree/master/charts/it-tools>
|
||||
|
||||
**This chart is not maintained by the upstream project and any issues with the chart should be raised
|
||||
[here](https://github.com/plcnk/charts/issues/new?assignees=plcnk&labels=bug&template=bug_report.yaml&name=it-tools&version=2.1.1)**
|
||||
|
||||
## Source Code
|
||||
|
||||
* <https://github.com/CorentinTh/it-tools>
|
||||
|
||||
## Get repo
|
||||
## Requirements
|
||||
|
||||
Kubernetes: `>=1.22.0-0`
|
||||
|
||||
## Dependencies
|
||||
|
||||
| Repository | Name | Version |
|
||||
|------------|------|---------|
|
||||
| <https://bjw-s.github.io/helm-charts> | common | 3.3.2 |
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `it-tools`
|
||||
|
||||
### OCI (Recommended)
|
||||
|
||||
```console
|
||||
helm install it-tools oci://ghcr.io/plcnk/charts/it-tools
|
||||
```
|
||||
|
||||
### Traditional
|
||||
|
||||
```console
|
||||
helm repo add plcnk https://charts.plcnk.net
|
||||
helm repo update
|
||||
helm install it-tools plcnk/it-tools
|
||||
```
|
||||
|
||||
## Install chart
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall the `it-tools` deployment
|
||||
|
||||
```console
|
||||
helm install [RELEASE_NAME] plcnk/it-tools
|
||||
helm uninstall it-tools
|
||||
```
|
||||
|
||||
## Uninstall chart
|
||||
The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.
|
||||
|
||||
## Configuration
|
||||
|
||||
Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values.
|
||||
Other values may be used from the [values.yaml](https://github.com/bjw-s/helm-charts/tree/main/charts/library/common/values.yaml) from the [bjw-s common library](https://github.com/bjw-s/helm-charts/tree/main/charts/library/common).
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
|
||||
|
||||
```console
|
||||
helm uninstall [RELEASE_NAME]
|
||||
helm install it-tools \
|
||||
--set env.TZ="America/New York" \
|
||||
plcnk/it-tools
|
||||
```
|
||||
|
||||
## Parameters
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
|
||||
|
||||
### Global parameters
|
||||
```console
|
||||
helm install it-tools plcnk/it-tools -f values.yaml
|
||||
```
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------ | ---------------------------------------------- | ----- |
|
||||
| `replicaCount` | Number of replicas for the it-tools Deployment | `1` |
|
||||
| `imagePullSecrets` | Docker registry pull secrets | `[]` |
|
||||
| `nameOverride` | Name override | `""` |
|
||||
| `fullnameOverride` | Full name override | `""` |
|
||||
| `podAnnotations` | Additional annotations for the Pod resource | `{}` |
|
||||
| `podLabels` | Additional labels for the Pod resource | `{}` |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `tolerations` | Tolerations for pod assignment | `[]` |
|
||||
| `affinity` | Affinity for pod assignment | `{}` |
|
||||
## Custom configuration
|
||||
|
||||
### Image parameters
|
||||
N/A
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------ | ------------------------------------------------------------- | ----------------------------- |
|
||||
| `image.repository` | Docker image repository | `ghcr.io/corentinth/it-tools` |
|
||||
| `image.pullPolicy` | Docker image pull policy | `IfNotPresent` |
|
||||
| `image.tag` | Overrides the image tag whose default is the chart appVersion | `""` |
|
||||
## Values
|
||||
|
||||
### Service account parameters
|
||||
**Important**: When deploying an application Helm chart you can add more values from the bjw-s common library chart [here](https://github.com/bjw-s/helm-charts/tree/main/charts/library/common)
|
||||
|
||||
| Name | Description | Value |
|
||||
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------- |
|
||||
| `serviceAccount.create` | Specifies whether a service account should be created | `false` |
|
||||
| `serviceAccount.automount` | Automatically mount a ServiceAccount's API credentials? | `true` |
|
||||
| `serviceAccount.annotations` | Additional annotations for the ServiceAccount resource | `{}` |
|
||||
| `serviceAccount.name` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | `""` |
|
||||
| Key | Type | Default | Description |
|
||||
|-----|------|---------|-------------|
|
||||
| controllers.main.containers.app.env | object | See [values.yaml](./values.yaml) | Environment variables |
|
||||
| controllers.main.containers.app.image.pullPolicy | string | `"IfNotPresent"` | Image pull policy |
|
||||
| controllers.main.containers.app.image.repository | string | `"ghcr.io/corentinth/it-tools"` | Image repository |
|
||||
| controllers.main.containers.app.image.tag | string | `"2024.5.13-a0bc346"` | Image tag |
|
||||
| controllers.main.containers.app.securityContext.allowPrivilegeEscalation | bool | `false` | Disable privilege escalations |
|
||||
| controllers.main.containers.app.securityContext.capabilities | object | `{"drop":["ALL"]}` | Drop all capabilities |
|
||||
| controllers.main.containers.app.securityContext.readOnlyRootFilesystem | bool | `true` | Mount the container's root filesystem as read-only |
|
||||
| controllers.main.pod.securityContext.fsGroup | int | `65534` | Volume binds will be granted to `nobody` group |
|
||||
| controllers.main.pod.securityContext.runAsGroup | int | `65534` | Run as `nobody` group |
|
||||
| controllers.main.pod.securityContext.runAsNonRoot | bool | `true` | Run container as a non-root user |
|
||||
| controllers.main.pod.securityContext.runAsUser | int | `65534` | Run as `nobody` user |
|
||||
| controllers.main.replicas | int | `1` | Number of desired pods |
|
||||
| controllers.main.resources | object | `{}` | Set the resource requests / limits for the container. |
|
||||
| controllers.main.type | string | `"deployment"` | Controller type |
|
||||
| ingress.main | object | See [values.yaml](./values.yaml) | Enable and configure ingress settings for the chart under this key. |
|
||||
| persistence | object | See [values.yaml](./values.yaml) | Configure persistence for the chart under this key. |
|
||||
| service | object | See [values.yaml](./values.yaml) | Configure the services for the chart here. |
|
||||
|
||||
### Security context parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ------------------------------------------ | ----------------------------------------- | ---------------- |
|
||||
| `securityContext.capabilities.drop` | Capabilities to drop | `["ALL"]` |
|
||||
| `securityContext.readOnlyRootFilesystem` | If root filesystem should be read-only | `true` |
|
||||
| `securityContext.runAsNonRoot` | If pod should be run as non-root | `true` |
|
||||
| `securityContext.runAsUser` | User to run pod as | `10099` |
|
||||
| `securityContext.runAsGroup` | Group to run pod as | `10099` |
|
||||
| `securityContext.allowPrivilegeEscalation` | If privilege escalation should be allowed | `false` |
|
||||
| `securityContext.seccompProfile.type` | seccomp profile type | `RuntimeDefault` |
|
||||
|
||||
### Service parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| -------------- | ---------------------- | ----------- |
|
||||
| `service.type` | Service type to create | `ClusterIP` |
|
||||
| `service.port` | Service port to use | `80` |
|
||||
|
||||
### Ingress parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------- | ------------------------------------------------------------------------ | ------- |
|
||||
| `ingress.enabled` | Enable ingress record generation | `false` |
|
||||
| `ingress.className` | IngressClass that will be be used to implement the Ingress | `""` |
|
||||
| `ingress.annotations` | Additional annotations for the Ingress resource | `{}` |
|
||||
| `ingress.hosts` | An array with hostname(s) to be covered with the ingress record | `[]` |
|
||||
| `ingress.tls` | TLS configuration for hostname(s) to be covered with this ingress record | `[]` |
|
||||
|
||||
### Resources parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------- | -------------------- | ----- |
|
||||
| `resources` | Kubernetes resources | `{}` |
|
||||
|
||||
### Autoscaling parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
| ----------------------------------------------- | ------------------------------------ | ------- |
|
||||
| `autoscaling.enabled` | Enable Horizontal POD autoscaling | `false` |
|
||||
| `autoscaling.minReplicas` | Minimum number of replicas | `1` |
|
||||
| `autoscaling.maxReplicas` | Maximum number of replicas | `100` |
|
||||
| `autoscaling.targetCPUUtilizationPercentage` | Target CPU utilization percentage | `80` |
|
||||
| `autoscaling.targetMemoryUtilizationPercentage` | Target Memory utilization percentage | `80` |
|
||||
---
|
||||
Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs)
|
||||
|
||||
13
charts/it-tools/README_CONFIG.md.gotmpl
Normal file
13
charts/it-tools/README_CONFIG.md.gotmpl
Normal file
@ -0,0 +1,13 @@
|
||||
{{- define "custom.chart.name" -}}
|
||||
# {{ .Name }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.custom.configuration.header" -}}
|
||||
## Custom configuration
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.custom.configuration" -}}
|
||||
{{ template "custom.custom.configuration.header" . }}
|
||||
|
||||
N/A
|
||||
{{- end -}}
|
||||
6
charts/it-tools/icon.svg
Normal file
6
charts/it-tools/icon.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 9.7 KiB |
@ -1,62 +0,0 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "it-tools.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "it-tools.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "it-tools.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "it-tools.labels" -}}
|
||||
helm.sh/chart: {{ include "it-tools.chart" . }}
|
||||
{{ include "it-tools.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "it-tools.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "it-tools.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "it-tools.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "it-tools.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
93
charts/it-tools/templates/common.yaml
Normal file
93
charts/it-tools/templates/common.yaml
Normal file
@ -0,0 +1,93 @@
|
||||
{{/* Append the hardcoded settings */}}
|
||||
{{- define "it-tools.harcodedValues" -}}
|
||||
configMaps:
|
||||
nginx-conf:
|
||||
enabled: true
|
||||
data:
|
||||
nginx.conf: |
|
||||
worker_processes auto;
|
||||
|
||||
error_log /tmp/nginx/error.log warn;
|
||||
pid /tmp/nginx/nginx.pid;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
|
||||
server {
|
||||
listen 8080;
|
||||
server_name _;
|
||||
root /usr/share/nginx/html;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
persistence:
|
||||
cache:
|
||||
enabled: true
|
||||
type: emptyDir
|
||||
advancedMounts:
|
||||
main:
|
||||
app:
|
||||
- path: /var/cache/nginx
|
||||
tmp:
|
||||
enabled: true
|
||||
type: emptyDir
|
||||
advancedMounts:
|
||||
main:
|
||||
app:
|
||||
- path: /tmp/nginx
|
||||
nginx-conf:
|
||||
enabled: true
|
||||
type: configMap
|
||||
name: {{ include "bjw-s.common.lib.chart.names.fullname" . }}-nginx-conf
|
||||
advancedMounts:
|
||||
main:
|
||||
app:
|
||||
- path: /etc/nginx/nginx.conf
|
||||
subPath: nginx.conf
|
||||
|
||||
controllers:
|
||||
main:
|
||||
containers:
|
||||
app:
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: http
|
||||
protocol: TCP
|
||||
probes:
|
||||
liveness:
|
||||
enabled: true
|
||||
custom: true
|
||||
spec:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 30
|
||||
readiness:
|
||||
enabled: true
|
||||
custom: true
|
||||
spec:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 30
|
||||
{{- end -}}
|
||||
|
||||
{{- $tmplVars := deepCopy . -}}
|
||||
{{ include "bjw-s.common.loader.init" $tmplVars }}
|
||||
{{- $defaultValues := include "it-tools.harcodedValues" $tmplVars | fromYaml -}}
|
||||
{{- $_ := mustMerge .Values $defaultValues -}}
|
||||
|
||||
{{/* Render the templates */}}
|
||||
{{ include "bjw-s.common.loader.init" . }}
|
||||
{{ include "bjw-s.common.loader.generate" . }}
|
||||
@ -1,29 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: nginx-conf
|
||||
data:
|
||||
nginx.conf: |
|
||||
worker_processes auto;
|
||||
|
||||
error_log /tmp/nginx/error.log warn;
|
||||
pid /tmp/nginx/nginx.pid;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
root /usr/share/nginx/html;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,82 +0,0 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "it-tools.fullname" . }}
|
||||
labels:
|
||||
{{- include "it-tools.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{- if not .Values.autoscaling.enabled }}
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "it-tools.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "it-tools.labels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "it-tools.serviceAccountName" . }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 30
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
periodSeconds: 30
|
||||
timeoutSeconds: 30
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
volumeMounts:
|
||||
- name: cache
|
||||
mountPath: "/var/cache/nginx"
|
||||
- name: tmp
|
||||
mountPath: "/tmp/nginx"
|
||||
- name: conf
|
||||
mountPath: /etc/nginx/nginx.conf
|
||||
subPath: nginx.conf
|
||||
volumes:
|
||||
- name: cache
|
||||
emptyDir: {}
|
||||
- name: tmp
|
||||
emptyDir: {}
|
||||
- name: conf
|
||||
configMap:
|
||||
name: nginx-conf
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@ -1,32 +0,0 @@
|
||||
{{- if .Values.autoscaling.enabled }}
|
||||
apiVersion: autoscaling/v2
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ include "it-tools.fullname" . }}
|
||||
labels:
|
||||
{{- include "it-tools.labels" . | nindent 4 }}
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: {{ include "it-tools.fullname" . }}
|
||||
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||
metrics:
|
||||
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
{{- end }}
|
||||
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@ -1,61 +0,0 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "it-tools.fullname" . -}}
|
||||
{{- $svcPort := .Values.service.port -}}
|
||||
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
{{- else -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
{{- end }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels:
|
||||
{{- include "it-tools.labels" . | nindent 4 }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||
ingressClassName: {{ .Values.ingress.className }}
|
||||
{{- end }}
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ .host | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ .path }}
|
||||
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||
pathType: {{ .pathType }}
|
||||
{{- end }}
|
||||
backend:
|
||||
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||
service:
|
||||
name: {{ $fullName }}
|
||||
port:
|
||||
number: {{ $svcPort }}
|
||||
{{- else }}
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: {{ $svcPort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@ -1,15 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "it-tools.fullname" . }}
|
||||
labels:
|
||||
{{- include "it-tools.labels" . | nindent 4 }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
{{- include "it-tools.selectorLabels" . | nindent 4 }}
|
||||
@ -1,13 +0,0 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "it-tools.serviceAccountName" . }}
|
||||
labels:
|
||||
{{- include "it-tools.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
|
||||
{{- end }}
|
||||
@ -1,15 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "it-tools.fullname" . }}-test-connection"
|
||||
labels:
|
||||
{{- include "it-tools.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
spec:
|
||||
containers:
|
||||
- name: wget
|
||||
image: busybox
|
||||
command: ['wget']
|
||||
args: ['{{ include "it-tools.fullname" . }}:{{ .Values.service.port }}']
|
||||
restartPolicy: Never
|
||||
@ -1,128 +1,97 @@
|
||||
# Default values for it-tools.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
---
|
||||
#
|
||||
# IMPORTANT NOTE
|
||||
#
|
||||
# This chart inherits from our common library chart. You can check the default values/options here:
|
||||
# https://github.com/bjw-s/helm-charts/blob/main/charts/library/common/values.yaml
|
||||
#
|
||||
|
||||
## @section Global parameters
|
||||
## @param replicaCount Number of replicas for the it-tools Deployment
|
||||
replicaCount: 1
|
||||
controllers:
|
||||
main:
|
||||
# -- Controller type
|
||||
type: deployment
|
||||
# -- Number of desired pods
|
||||
replicas: 1
|
||||
containers:
|
||||
app:
|
||||
image:
|
||||
# -- Image repository
|
||||
repository: ghcr.io/corentinth/it-tools
|
||||
# -- Image pull policy
|
||||
pullPolicy: IfNotPresent
|
||||
# -- Image tag
|
||||
tag: 2024.5.13-a0bc346
|
||||
|
||||
## @param imagePullSecrets Docker registry pull secrets
|
||||
## @param nameOverride Name override
|
||||
## @param fullnameOverride Full name override
|
||||
imagePullSecrets: []
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
# -- Environment variables
|
||||
# @default -- See [values.yaml](./values.yaml)
|
||||
env: {}
|
||||
# TZ: UTC
|
||||
|
||||
## @param podAnnotations Additional annotations for the Pod resource
|
||||
## @param podLabels Additional labels for the Pod resource
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
securityContext:
|
||||
# -- Mount the container's root filesystem as read-only
|
||||
readOnlyRootFilesystem: true
|
||||
# -- Disable privilege escalations
|
||||
allowPrivilegeEscalation: false
|
||||
# -- Drop all capabilities
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
|
||||
## @param nodeSelector Node labels for pod assignment
|
||||
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
|
||||
nodeSelector: {}
|
||||
pod:
|
||||
securityContext:
|
||||
# -- Run container as a non-root user
|
||||
runAsNonRoot: true
|
||||
# -- Run as `nobody` user
|
||||
runAsUser: 65534
|
||||
# -- Run as `nobody` group
|
||||
runAsGroup: 65534
|
||||
# -- Volume binds will be granted to `nobody` group
|
||||
fsGroup: 65534
|
||||
|
||||
## @param tolerations Tolerations for pod assignment
|
||||
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
|
||||
tolerations: []
|
||||
# -- Set the resource requests / limits for the container.
|
||||
resources: {}
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
## @param affinity Affinity for pod assignment
|
||||
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
|
||||
affinity: {}
|
||||
|
||||
## @section Image parameters
|
||||
## @param image.repository Docker image repository
|
||||
## @param image.pullPolicy Docker image pull policy
|
||||
## @param image.tag Overrides the image tag whose default is the chart appVersion
|
||||
image:
|
||||
repository: ghcr.io/corentinth/it-tools
|
||||
pullPolicy: IfNotPresent
|
||||
tag: ""
|
||||
|
||||
## @section Service account parameters
|
||||
## @param serviceAccount.create Specifies whether a service account should be created
|
||||
## @param serviceAccount.automount Automatically mount a ServiceAccount's API credentials?
|
||||
## @param serviceAccount.annotations Additional annotations for the ServiceAccount resource
|
||||
## @param serviceAccount.name The name of the service account to use. If not set and create is true, a name is generated using the fullname template
|
||||
serviceAccount:
|
||||
create: false
|
||||
automount: true
|
||||
annotations: {}
|
||||
name: ""
|
||||
|
||||
## @section Security context parameters
|
||||
## @param securityContext.capabilities.drop Capabilities to drop
|
||||
## @param securityContext.readOnlyRootFilesystem If root filesystem should be read-only
|
||||
## @param securityContext.runAsNonRoot If pod should be run as non-root
|
||||
## @param securityContext.runAsUser User to run pod as
|
||||
## @param securityContext.runAsGroup Group to run pod as
|
||||
## @param securityContext.allowPrivilegeEscalation If privilege escalation should be allowed
|
||||
## @param securityContext.seccompProfile.type seccomp profile type
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
runAsUser: 10099
|
||||
runAsGroup: 10099
|
||||
allowPrivilegeEscalation: false
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
|
||||
## @section Service parameters
|
||||
## @param service.type Service type to create
|
||||
## @param service.port Service port to use
|
||||
# -- Configure the services for the chart here.
|
||||
# @default -- See [values.yaml](./values.yaml)
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
main:
|
||||
controller: main
|
||||
ports:
|
||||
http:
|
||||
port: 8080
|
||||
|
||||
# -- Configure persistence for the chart under this key.
|
||||
# @default -- See [values.yaml](./values.yaml)
|
||||
persistence:
|
||||
data:
|
||||
enabled: false
|
||||
retain: true
|
||||
# storageClass: ""
|
||||
# accessMode: ReadWriteOnce
|
||||
# size: 1Gi
|
||||
|
||||
## @section Ingress parameters
|
||||
## Configure the ingress resource that allows you to access the installation
|
||||
## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
|
||||
##
|
||||
## @param ingress.enabled Enable ingress record generation
|
||||
## @param ingress.className IngressClass that will be be used to implement the Ingress
|
||||
## @param ingress.annotations Additional annotations for the Ingress resource
|
||||
## @param ingress.hosts An array with hostname(s) to be covered with the ingress record
|
||||
## @param ingress.tls TLS configuration for hostname(s) to be covered with this ingress record
|
||||
ingress:
|
||||
enabled: false
|
||||
className: ""
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
hosts: []
|
||||
# - host: it-tools.example.local
|
||||
# paths:
|
||||
# - path: /
|
||||
# pathType: Prefix
|
||||
tls: []
|
||||
# - secretName: it-tools-tls
|
||||
# hosts:
|
||||
# - it-tools.example.local
|
||||
|
||||
## @section Resources parameters
|
||||
## @param resources Kubernetes resources
|
||||
resources: {}
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
## @section Autoscaling parameters
|
||||
## Autoscaling parameters
|
||||
## ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
|
||||
## @param autoscaling.enabled Enable Horizontal POD autoscaling
|
||||
## @param autoscaling.minReplicas Minimum number of replicas
|
||||
## @param autoscaling.maxReplicas Maximum number of replicas
|
||||
## @param autoscaling.targetCPUUtilizationPercentage Target CPU utilization percentage
|
||||
## @param autoscaling.targetMemoryUtilizationPercentage Target Memory utilization percentage
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 100
|
||||
targetCPUUtilizationPercentage: 80
|
||||
targetMemoryUtilizationPercentage: 80
|
||||
# -- Enable and configure ingress settings for the chart under this key.
|
||||
# @default -- See [values.yaml](./values.yaml)
|
||||
main:
|
||||
enabled: false
|
||||
# className: ""
|
||||
# annotations: {}
|
||||
# hosts:
|
||||
# - host: &host-main "chart-example.local"
|
||||
# paths:
|
||||
# - path: /
|
||||
# pathType: Prefix
|
||||
# service:
|
||||
# identifier: main
|
||||
# port: http
|
||||
# tls:
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - *host-main
|
||||
|
||||
39
hack/gen-chart-summary.sh
Executable file
39
hack/gen-chart-summary.sh
Executable file
@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# require yq
|
||||
command -v yq >/dev/null 2>&1 || {
|
||||
echo >&2 'yq (https://github.com/mikefarah/yq) is not installed. Aborting.'
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Absolute path of repository
|
||||
repository="$(git rev-parse --show-toplevel)"
|
||||
charts_folder="$repository/charts"
|
||||
charts_summary_file="$repository/README.md"
|
||||
charts_header='## Chart Overview'
|
||||
|
||||
# Gather all charts
|
||||
stable_charts="$(find "$charts_folder" -name "Chart.yaml" | sort)"
|
||||
|
||||
sed -i '' '/^'"$charts_header"'$/,$d' "$charts_summary_file"
|
||||
|
||||
{
|
||||
echo "$charts_header"
|
||||
echo
|
||||
echo "| Chart | Description |"
|
||||
echo "| ----- | ----------- |"
|
||||
for chart_yaml in ${stable_charts[@]}; do
|
||||
if ! git ls-files --error-unmatch "$chart_yaml" &>/dev/null; then continue; fi
|
||||
IFS=$'\t' read -r chart_name chart_description chart_icon < <(yq eval -o=tsv '[.name, .description, .icon // ""]' "$chart_yaml")
|
||||
if [[ -n "$chart_icon" ]]; then
|
||||
width=18
|
||||
if [[ "$chart_name" == mnemonic-ninja ]]; then
|
||||
width=12
|
||||
fi
|
||||
chart_icon="<img src='$chart_icon' alt='$chart_name icon' width='${width}px' align='right' loading='lazy'>"
|
||||
fi
|
||||
pretty_name="$(head -n1 "$(dirname "$chart_yaml")/README.md" | sed 's/^# //')"
|
||||
echo "| [$pretty_name $chart_icon](https://github.com/plcnk/charts/tree/master/charts/$chart_name/) | $chart_description |"
|
||||
done
|
||||
} >> "$charts_summary_file"
|
||||
59
hack/gen-helm-docs.sh
Executable file
59
hack/gen-helm-docs.sh
Executable file
@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Generate helm-docs for Helm charts
|
||||
# Usage ./gen-helm-docs.sh [chart]
|
||||
|
||||
# require helm-docs
|
||||
command -v helm-docs >/dev/null 2>&1 || {
|
||||
echo >&2 'helm-docs (https://github.com/norwoodj/helm-docs) is not installed. Aborting.'
|
||||
exit 1
|
||||
}
|
||||
|
||||
# require yq
|
||||
command -v yq >/dev/null 2>&1 || {
|
||||
echo >&2 'yq (https://github.com/mikefarah/yq) is not installed. Aborting.'
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Absolute path of repository
|
||||
repository="$(git rev-parse --show-toplevel)"
|
||||
charts_folder="$repository/charts"
|
||||
|
||||
# Templates to copy into each chart directory
|
||||
template_dir="$repository/hack/templates"
|
||||
readme_config_template="$template_dir/README_CONFIG.md.gotmpl"
|
||||
icon_template=$(<"$template_dir/icon.gotmpl")
|
||||
|
||||
# Gather all charts using the common library, excluding common-test
|
||||
charts="$(find "$charts_folder" -name Chart.yaml)"
|
||||
|
||||
# Allow for a specific chart to be passed in as a argument
|
||||
if [ $# -ge 1 ] && [ -n "$1" ]; then
|
||||
root="$(find "$charts_folder" -name "$1")"
|
||||
charts="$root/Chart.yaml"
|
||||
if [ ! -f "$charts" ]; then
|
||||
echo "Chart $1 does not exist."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
root="$charts_folder"
|
||||
fi
|
||||
|
||||
for chart in $charts; do (
|
||||
chart_directory="$(dirname "$chart")"
|
||||
icon="$(yq eval '.icon // ""' "$chart" 2>/dev/null)"
|
||||
|
||||
# Copy CONFIG template to each Chart directory, do not overwrite if exists
|
||||
cp -n "$readme_config_template" "$chart_directory" || true
|
||||
|
||||
# Run helm-docs for charts
|
||||
helm-docs \
|
||||
--log-level=warning \
|
||||
--template-files="$template_dir/README.md.gotmpl" \
|
||||
--template-files=<(echo "${icon_template/\$ICON/$icon}") \
|
||||
--template-files="$(basename "$readme_config_template")" \
|
||||
--badge-style=flat \
|
||||
--chart-search-root="$root" \
|
||||
--chart-to-generate="$chart_directory"
|
||||
) done
|
||||
170
hack/templates/README.md.gotmpl
Normal file
170
hack/templates/README.md.gotmpl
Normal file
@ -0,0 +1,170 @@
|
||||
{{- define "custom.repository.organization" -}}
|
||||
plcnk
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.repository.url" -}}
|
||||
https://github.com/plcnk/charts
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.helm.url" -}}
|
||||
https://charts.plcnk.net
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.helm.path" -}}
|
||||
{{ template "custom.repository.organization" . }}/{{ template "chart.name" . }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.helm.oci_url" -}}
|
||||
oci://ghcr.io/plcnk/charts
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.notes" -}}
|
||||
**This chart is not maintained by the upstream project and any issues with the chart should be raised
|
||||
[here]({{ template "custom.repository.url" . }}/issues/new?assignees=plcnk&labels=bug&template=bug_report.yaml&name={{ template "chart.name" . }}&version={{ template "chart.version" . }})**
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.requirements" -}}
|
||||
## Requirements
|
||||
|
||||
{{ template "chart.kubeVersionLine" . }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.dependencies" -}}
|
||||
## Dependencies
|
||||
|
||||
{{ if gt (len .Dependencies) 0 }}
|
||||
| Repository | Name | Version |
|
||||
|------------|------|---------|
|
||||
{{- range .Dependencies }}
|
||||
{{- if .Alias }}
|
||||
| <{{ .Repository }}> | {{ .Alias }}({{ .Name }}) | {{ .Version }} |
|
||||
{{- else }}
|
||||
| <{{ .Repository }}> | {{ .Name }} | {{ .Version }} |
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{ else }}
|
||||
This chart has no dependencies.
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.install" -}}
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `{{ template "chart.name" . }}`
|
||||
|
||||
### OCI (Recommended)
|
||||
|
||||
```console
|
||||
helm install {{ template "chart.name" . }} {{ template "custom.helm.oci_url" . }}/{{ template "chart.name" . }}
|
||||
```
|
||||
|
||||
### Traditional
|
||||
|
||||
```console
|
||||
helm repo add {{ template "custom.repository.organization" . }} {{ template "custom.helm.url" . }}
|
||||
helm repo update
|
||||
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }}
|
||||
```
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.uninstall" -}}
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall the `{{ template "chart.name" . }}` deployment
|
||||
|
||||
```console
|
||||
helm uninstall {{ template "chart.name" . }}
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.configuration.header" -}}
|
||||
## Configuration
|
||||
{{- end -}}
|
||||
|
||||
|
||||
{{- define "custom.bjwsRef" -}}
|
||||
{{- $ref := "" -}}
|
||||
{{- range .Dependencies -}}
|
||||
{{- if and (eq .Repository "https://bjw-s.github.io/helm-charts") (eq .Name "common") (semverCompare "^1.x" .Version) -}}
|
||||
{{- $ref = "a081de5" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- default "main" $ref -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.configuration.readValues" -}}
|
||||
Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values.
|
||||
Other values may be used from the [values.yaml](https://github.com/bjw-s/helm-charts/tree/{{ template "custom.bjwsRef" . }}/charts/library/common/values.yaml) from the [bjw-s common library](https://github.com/bjw-s/helm-charts/tree/{{ template "custom.bjwsRef" . }}/charts/library/common).
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.configuration.example.set" -}}
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
|
||||
|
||||
```console
|
||||
helm install {{ template "chart.name" . }} \
|
||||
--set env.TZ="America/New York" \
|
||||
{{ template "custom.helm.path" . }}
|
||||
```
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.configuration.example.file" -}}
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
|
||||
|
||||
```console
|
||||
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} -f values.yaml
|
||||
```
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.valuesSection" -}}
|
||||
## Values
|
||||
|
||||
**Important**: When deploying an application Helm chart you can add more values from the bjw-s common library chart [here](https://github.com/bjw-s/helm-charts/tree/{{ template "custom.bjwsRef" . }}/charts/library/common)
|
||||
|
||||
{{ template "chart.valuesTable" . }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.helm-docs.versionFooter" -}}
|
||||
---
|
||||
Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs)
|
||||
{{- end -}}
|
||||
|
||||
# {{ template "custom.chart.name" . }}
|
||||
|
||||
{{ template "custom.chart.icon" . }}
|
||||
|
||||
{{ template "chart.versionBadge" . }}
|
||||
{{ template "chart.typeBadge" . }}
|
||||
{{ template "chart.appVersionBadge" . }}
|
||||
|
||||
{{ template "chart.description" . }}
|
||||
|
||||
{{ template "chart.homepageLine" . }}
|
||||
|
||||
{{ template "custom.notes" . }}
|
||||
|
||||
{{ template "chart.sourcesSection" . }}
|
||||
|
||||
{{ template "custom.requirements" . }}
|
||||
|
||||
{{ template "custom.dependencies" . }}
|
||||
|
||||
{{ template "custom.install" . }}
|
||||
|
||||
{{ template "custom.uninstall" . }}
|
||||
|
||||
{{ template "custom.configuration.header" . }}
|
||||
|
||||
{{ template "custom.configuration.readValues" . }}
|
||||
|
||||
{{ template "custom.configuration.example.set" . }}
|
||||
|
||||
{{ template "custom.configuration.example.file" . }}
|
||||
|
||||
{{ template "custom.custom.configuration" . }}
|
||||
|
||||
{{ template "custom.valuesSection" . }}
|
||||
|
||||
{{ template "custom.helm-docs.versionFooter" . }}
|
||||
{{ "" }}
|
||||
13
hack/templates/README_CONFIG.md.gotmpl
Normal file
13
hack/templates/README_CONFIG.md.gotmpl
Normal file
@ -0,0 +1,13 @@
|
||||
{{- define "custom.chart.name" -}}
|
||||
# {{ .Name }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.custom.configuration.header" -}}
|
||||
## Custom configuration
|
||||
{{- end -}}
|
||||
|
||||
{{- define "custom.custom.configuration" -}}
|
||||
{{ template "custom.custom.configuration.header" . }}
|
||||
|
||||
N/A
|
||||
{{- end -}}
|
||||
5
hack/templates/icon.gotmpl
Normal file
5
hack/templates/icon.gotmpl
Normal file
@ -0,0 +1,5 @@
|
||||
{{- define "custom.chart.icon" -}}
|
||||
{{- with "$ICON" -}}
|
||||
<img src="{{ . }}" align="right" width="92" alt="{{ template "chart.name" $ }} logo">
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
56
hack/update-changelog.sh
Executable file
56
hack/update-changelog.sh
Executable file
@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
# require yq
|
||||
command -v yq >/dev/null 2>&1 || {
|
||||
echo >&2 'yq (https://github.com/mikefarah/yq) is not installed. Aborting.'
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$#" -lt 2 ]; then
|
||||
echo 'Usage: {append | replace} changelog [chart...]'
|
||||
exit
|
||||
fi
|
||||
|
||||
update_type="$1"
|
||||
shift
|
||||
|
||||
changelog="$(yq -P <<<"$1")"
|
||||
export changelog
|
||||
shift
|
||||
|
||||
CHARTS=()
|
||||
if [ "$#" -gt 0 ]; then
|
||||
# Get changed dirs from params
|
||||
for file in "$@"; do
|
||||
CHARTS+=( "$(dirname "$file")" )
|
||||
done
|
||||
else
|
||||
# Get changed dirs from uncommitted changes
|
||||
for file in $(git status --porcelain charts | grep '^M' | cut -c4-); do
|
||||
CHARTS+=( "$(dirname "$file")" )
|
||||
done
|
||||
fi
|
||||
CHARTS=( $(sort -u <<<"${CHARTS[*]}") )
|
||||
|
||||
case "$update_type" in
|
||||
append)
|
||||
expression='.annotations."artifacthub.io/changes" |= (@yamld + (strenv(changelog) | @yamld) | @yaml | trim)'
|
||||
;;
|
||||
replace)
|
||||
expression='.annotations."artifacthub.io/changes" = (env(changelog) | @yaml | trim)'
|
||||
;;
|
||||
*)
|
||||
echo "Invalid update type: $update_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
for chart in "${CHARTS[@]}"; do (
|
||||
meta_file="$chart/Chart.yaml"
|
||||
if [ ! -f "$meta_file" ]; then echo >&2 "Invalid file: $meta_file"; exit; fi
|
||||
|
||||
yq --inplace "$expression" "$meta_file"
|
||||
echo "Updated $(basename "$chart") changelog"
|
||||
) done
|
||||
53
hack/update-version.sh
Executable file
53
hack/update-version.sh
Executable file
@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
# require yq
|
||||
command -v yq >/dev/null 2>&1 || {
|
||||
echo >&2 'yq (https://github.com/mikefarah/yq) is not installed. Aborting.'
|
||||
exit 1
|
||||
}
|
||||
|
||||
function _print_usage() {
|
||||
echo 'Usage: {major|minor|patch} [chart...]'
|
||||
exit "${1:-0}"
|
||||
}
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
_print_usage
|
||||
fi
|
||||
|
||||
UPDATE_TYPE="$(tr '[:upper:]' '[:lower:]' <<<"$1")"
|
||||
shift
|
||||
case "$UPDATE_TYPE" in
|
||||
major) SCRIPT='[(.0 | @yamld | . + 1), 0, 0]' ;;
|
||||
minor) SCRIPT='[.0, (.1 | @yamld | . + 1), 0]' ;;
|
||||
patch) SCRIPT='[.0, .1, (.2 | @yamld | . + 1)]' ;;
|
||||
*) echo >&2 "Invalid update type: $UPDATE_TYPE"; _print_usage 1 ;;
|
||||
esac
|
||||
|
||||
echo "Performing $UPDATE_TYPE version bump"
|
||||
|
||||
CHARTS=()
|
||||
if [ "$#" -gt 0 ]; then
|
||||
# Get changed dirs from params
|
||||
for file in "$@"; do
|
||||
CHARTS+=( "$(dirname "$file")" )
|
||||
done
|
||||
else
|
||||
# Get changed dirs from uncommitted changes
|
||||
for file in $(git status --porcelain charts | grep '^M' | cut -c4-); do
|
||||
CHARTS+=( "$(dirname "$file")" )
|
||||
done
|
||||
fi
|
||||
CHARTS=( $(sort -u <<<"${CHARTS[*]}") )
|
||||
|
||||
for chart in "${CHARTS[@]}"; do (
|
||||
meta_file="$chart/Chart.yaml"
|
||||
if [ ! -f "$meta_file" ]; then echo >&2 "Invalid file: $meta_file"; exit; fi
|
||||
|
||||
current="$(yq '.version' "$meta_file")"
|
||||
yq -i '.version |= (split(".") | '"$SCRIPT"' | join("."))' "$meta_file"
|
||||
new="$(yq '.version' "$meta_file")"
|
||||
echo "Updated $(basename "$chart") from v$current to v$new"
|
||||
) done
|
||||
Reference in New Issue
Block a user