diff --git a/.github/cr.yaml b/.github/cr.yaml new file mode 100644 index 0000000..a16b339 --- /dev/null +++ b/.github/cr.yaml @@ -0,0 +1,2 @@ +generate-release-notes: true +release-name-template: "v{{ .Version }}" diff --git a/.github/ct.yaml b/.github/ct.yaml new file mode 100644 index 0000000..aeefaf5 --- /dev/null +++ b/.github/ct.yaml @@ -0,0 +1,10 @@ +# See https://github.com/helm/chart-testing#configuration +chart-dirs: charts +check-version-increment: false +debug: true +remote: origin +target-branch: main +upgrade: true +validate-chart-schema: true +validate-maintainers: false +validate-yaml: true diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..6f45912 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: +- package-ecosystem: github-actions + directory: "/" + schedule: + interval: monthly + open-pull-requests-limit: 10 + labels: + - enhancement + - dependency-management diff --git a/.github/hack/prepare_body_pr.sh b/.github/hack/prepare_body_pr.sh new file mode 100644 index 0000000..adb6c90 --- /dev/null +++ b/.github/hack/prepare_body_pr.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +DEFAULT_BASE_URL="https://github.com/bitnami/charts/releases/tag" + +awk -v default_base_url="$DEFAULT_BASE_URL" ' +/^[a-zA-Z]/ { + if (name && show && current_version && new_version && current_version != new_version) { + print name "\n" dashes "\n\n* **Current**: `" current_version "`\n* **Upgrade**: `" new_version "`" + if (name != "caldera") { + print "* **Changelog**: " default_base_url "/" name "/" new_version "\n" + } + } + name = $0; + getline; dashes = $0; + show = 1; # Reset show flag + current_version = ""; # Reset current_version + new_version = ""; # Reset new_version +} +/change detected:/ { + getline; + if (match($0, /updated from "([^"]+)" to "([^"]+)"/, versions)) { + current_version = versions[1]; + new_version = versions[2]; + } +} +/no change detected:/ { + show = 0; # Do not show this section +} +END { + if (name && show && current_version && new_version && current_version != new_version) { + print name "\n" dashes "\n\n* **Current**: `" current_version "`\n* **Upgrade**: `" new_version "`" + if (name != "caldera") { + print "* **Changelog**: " default_base_url "/" name "/" new_version "\n" + } + } +}' "$1" diff --git a/.github/updatecli/helm-appversion.yaml b/.github/updatecli/helm-appversion.yaml new file mode 100644 index 0000000..96a2060 --- /dev/null +++ b/.github/updatecli/helm-appversion.yaml @@ -0,0 +1,17 @@ +sources: + openbas: + kind: dockerimage + spec: + image: openbas/platform + architecture: linux/amd64 + versionFilter: + kind: semver +conditions: {} +targets: + openbas: + name: bump chart appversion + kind: yaml + spec: + file: charts/openbas/Chart.yaml + key: $.appVersion + sourceid: openbas diff --git a/.github/updatecli/helm-dependencies.yaml b/.github/updatecli/helm-dependencies.yaml new file mode 100644 index 0000000..60ae1e5 --- /dev/null +++ b/.github/updatecli/helm-dependencies.yaml @@ -0,0 +1,66 @@ +sources: + caldera: + kind: dockerimage + spec: + image: openbas/caldera-server + architecture: linux/amd64 + versionFilter: + kind: semver + pattern: '*' + minio: + kind: helmchart + spec: + url: https://charts.bitnami.com/bitnami + name: minio + versionFilter: + kind: semver + pattern: '*' # replace with CI/CD updatecli + sourceid: minio + postgresql: + kind: helmchart + spec: + url: https://charts.bitnami.com/bitnami + name: postgresql + versionFilter: + kind: semver + pattern: '*' # replace with CI/CD updatecli + sourceid: postgresql + rabbitmq: + kind: helmchart + spec: + url: https://charts.bitnami.com/bitnami + name: rabbitmq + versionFilter: + kind: semver + pattern: '*' # replace with CI/CD updatecli + sourceid: rabbitmq +conditions: {} +targets: + caldera: + name: bump chart caldera tag + kind: yaml + spec: + file: charts/openbas/values.yaml + key: $.caldera.image.tag + sourceid: caldera + minio: + name: bump chart dependencies + kind: yaml + spec: + file: charts/openbas/Chart.yaml + key: $.dependencies[0].version + sourceid: minio + postgresql: + name: bump chart dependencies + kind: yaml + spec: + file: charts/openbas/Chart.yaml + key: $.dependencies[1].version + sourceid: postgresql + rabbitmq: + name: bump chart dependencies + kind: yaml + spec: + file: charts/openbas/Chart.yaml + key: $.dependencies[2].version + sourceid: rabbitmq diff --git a/.github/workflows/auto-assign.yaml b/.github/workflows/auto-assign.yaml new file mode 100644 index 0000000..8fcf173 --- /dev/null +++ b/.github/workflows/auto-assign.yaml @@ -0,0 +1,20 @@ +name: Auto-assign Issue +on: + issues: + types: [opened] + pull_request: + types: [opened, edited, synchronize, reopened] +jobs: + run: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - name: 'auto-assign issue' + uses: pozil/auto-assign-issue@v2 + with: + repo-token: ${{ secrets.PAT_GITHUB }} + teams: devops-ia + removePreviousAssignees: true diff --git a/.github/workflows/check-openbas-major-dependencies.yaml b/.github/workflows/check-openbas-major-dependencies.yaml new file mode 100644 index 0000000..5f685e6 --- /dev/null +++ b/.github/workflows/check-openbas-major-dependencies.yaml @@ -0,0 +1,83 @@ +name: Check OpenBAS major dependencies releases + +on: + workflow_dispatch: + schedule: + - cron: '0 0 1 * *' # first day of month + +jobs: + check-and-update-major-dependencies: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Prepare updatecli configuration + id: dependencies + run: | + # get name dependencies + dependencies=($(yq eval -o=json '.dependencies[] | .name' charts/openbas/Chart.yaml | xargs)) + + # replace version + for dependency in "${dependencies[@]}"; do + yq eval -i ".sources.${dependency}.spec.versionFilter.pattern = \"*\"" .github/updatecli/helm-dependencies.yaml + done + + - name: Install updatecli + uses: updatecli/updatecli-action@v2 + + - name: Update dependencies + run: | + updatecli apply --config .github/updatecli/helm-dependencies.yaml --commit=false 2>&1 | tee > $GITHUB_WORKSPACE/tmp-major-output.log + awk '/TARGETS/{flag=1;next}/ACTIONS/{flag=0}flag' $GITHUB_WORKSPACE/tmp-major-output.log > $GITHUB_WORKSPACE/clean-major-output.log + chmod +x .github/hack/prepare_body_pr.sh + $GITHUB_WORKSPACE/.github/hack/prepare_body_pr.sh $GITHUB_WORKSPACE/clean-major-output.log > $GITHUB_WORKSPACE/major-output.log + + # show PR body + cat major-output.log + shell: bash + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + + - name: Update README.md Helm Chart + uses: losisin/helm-docs-github-action@v1 + with: + chart-search-root: charts/openbas + + - name: Get current date + id: date + run: | + echo "date=$(date -I)" >> $GITHUB_OUTPUT + + - name: Create PR with changes (dry-run) + uses: peter-evans/create-pull-request@v6 + if: github.event_name == 'workflow_dispatch' + with: + add-paths: charts/openbas + token: ${{ secrets.PAT_GITHUB }} + commit-message: "fix: update major dependencies version" + signoff: false + branch: fix/upgrade-openbas-major-dependencies-${{ steps.date.outputs.date }} + delete-branch: true + title: '[openbas] upgrade major dependencies (${{ steps.date.outputs.date }})' + body-path: major-output.log + draft: true + labels: | + auto-pr-bump-version + + - name: Create PR with changes + uses: peter-evans/create-pull-request@v6 + if: github.event_name == 'schedule' + with: + add-paths: charts/openbas + token: ${{ secrets.PAT_GITHUB }} + commit-message: "fix: update major dependencies version" + signoff: false + branch: fix/upgrade-openbas-major-dependencies-${{ steps.date.outputs.date }} + delete-branch: true + title: '[openbas] upgrade major dependencies (${{ steps.date.outputs.date }})' + body-path: major-output.log + labels: | + auto-pr-bump-version diff --git a/.github/workflows/check-openbas-minor-dependencies.yaml b/.github/workflows/check-openbas-minor-dependencies.yaml new file mode 100644 index 0000000..3277539 --- /dev/null +++ b/.github/workflows/check-openbas-minor-dependencies.yaml @@ -0,0 +1,85 @@ +name: Check OpenBAS minor dependencies releases + +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * 1' # every monday + +jobs: + check-and-update-minor-dependencies: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Prepare updatecli configuration + id: dependencies + run: | + # get name dependencies + dependencies=($(yq eval -o=json '.dependencies[] | .name' charts/openbas/Chart.yaml | xargs)) + + # replace version + for dependency in "${dependencies[@]}"; do + version="~$(yq eval -r ".dependencies[] | select(.name == \"${dependency}\") | .version" charts/openbas/Chart.yaml | cut -d'.' -f1)" + yq eval -i ".sources.${dependency}.spec.versionFilter.pattern = \"${version}\"" .github/updatecli/helm-dependencies.yaml + done + + - name: Install updatecli + uses: updatecli/updatecli-action@v2 + + - name: Update dependencies + run: | + updatecli apply --config .github/updatecli/helm-dependencies.yaml --commit=false 2>&1 | tee > $GITHUB_WORKSPACE/tmp-minor-output.log + awk '/TARGETS/{flag=1;next}/ACTIONS/{flag=0}flag' $GITHUB_WORKSPACE/tmp-minor-output.log > $GITHUB_WORKSPACE/clean-minor-output.log + chmod +x .github/hack/prepare_body_pr.sh + $GITHUB_WORKSPACE/.github/hack/prepare_body_pr.sh $GITHUB_WORKSPACE/clean-minor-output.log > $GITHUB_WORKSPACE/minor-output.log + + # show PR body + cat minor-output.log + shell: bash + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + + - name: Update README.md Helm Chart + uses: losisin/helm-docs-github-action@v1 + with: + chart-search-root: charts/openbas + + - name: Get current date + id: date + run: | + echo "date=$(date -I)" >> $GITHUB_OUTPUT + + + - name: Create PR with changes (dry-run) + uses: peter-evans/create-pull-request@v6 + if: github.event_name == 'workflow_dispatch' + with: + add-paths: charts/openbas + token: ${{ secrets.PAT_GITHUB }} + commit-message: "fix: update minor dependencies version" + signoff: false + branch: fix/upgrade-openbas-minor-dependencies-${{ steps.date.outputs.date }} + delete-branch: true + title: '[openbas] upgrade minor dependencies (${{ steps.date.outputs.date }})' + body-path: minor-output.log + draft: true + labels: | + auto-pr-bump-version + + - name: Create PR with changes + uses: peter-evans/create-pull-request@v6 + if: github.event_name == 'schedule' + with: + add-paths: charts/openbas + token: ${{ secrets.PAT_GITHUB }} + commit-message: "fix: update minor dependencies version" + signoff: false + branch: fix/upgrade-openbas-minor-dependencies-${{ steps.date.outputs.date }} + delete-branch: true + title: '[openbas] upgrade minor dependencies (${{ steps.date.outputs.date }})' + body-path: minor-output.log + labels: | + auto-pr-bump-version diff --git a/.github/workflows/check-openbas-release.yaml b/.github/workflows/check-openbas-release.yaml new file mode 100644 index 0000000..5cf2a83 --- /dev/null +++ b/.github/workflows/check-openbas-release.yaml @@ -0,0 +1,66 @@ +name: Check OpenBAS new releases + +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * *' # every day + +jobs: + check-and-update-openbas: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get current release + id: current_release + run: | + current_release=$(grep appVersion charts/openbas/Chart.yaml | awk '{ print $2 }') + echo "current_release=$current_release" >> $GITHUB_OUTPUT + + - name: Install updatecli + uses: updatecli/updatecli-action@v2 + + - name: Update dependencies + run: | + updatecli apply --config .github/updatecli/helm-appversion.yaml --commit=false + + - name: Get latest release + id: latest_release + run: | + latest_release=$(grep appVersion charts/openbas/Chart.yaml | awk '{ print $2 }') + echo "latest_release=$latest_release" >> $GITHUB_OUTPUT + + - name: Check if release changed + id: check_changes + run: | + if [ ${{ steps.latest_release.outputs.latest_release }} != ${{ steps.current_release.outputs.current_release }} ]; then + echo "release_changed=true" >> $GITHUB_OUTPUT + fi + + - name: Update README.md Helm Chart + if: steps.check_changes.outputs.release_changed == 'true' + uses: losisin/helm-docs-github-action@v1 + with: + chart-search-root: charts/openbas + + - name: Create PR with changes + if: steps.check_changes.outputs.release_changed == 'true' + uses: peter-evans/create-pull-request@v6 + with: + token: ${{ secrets.PAT_GITHUB }} + commit-message: "fix: update OpenBAS version to ${{ steps.latest_release.outputs.latest_release }}" + signoff: false + branch: fix/upgrade-openbas-appversion-${{ steps.latest_release.outputs.latest_release }} + delete-branch: true + title: '[openbas] new release: ${{ steps.latest_release.outputs.latest_release }}' + body: | + OpenBAS version: + - :information_source: Current: `${{ steps.current_release.outputs.current_release }}` + - :up: Upgrade: `${{ steps.latest_release.outputs.latest_release }}` + + Changelog: https://github.com/OpenBAS-Platform/openbas/releases/tag/${{ steps.latest_release.outputs.latest_release }} + labels: | + auto-pr-bump-version diff --git a/.github/workflows/lint-test.yaml b/.github/workflows/lint-test.yaml new file mode 100644 index 0000000..476128d --- /dev/null +++ b/.github/workflows/lint-test.yaml @@ -0,0 +1,45 @@ +name: Lint and Test Charts + +on: pull_request + +jobs: + lint-test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + # default install latest (stable) + - name: Set up Helm + uses: azure/setup-helm@v4 + + - uses: actions/setup-python@v5 + with: + python-version: 3.x + check-latest: true + + - name: Set up chart-testing + uses: helm/chart-testing-action@v2 + + - name: Run chart-testing (list-changed) + id: list-changed + run: | + changed=$(ct list-changed --config .github/ct.yaml) + if [[ -n "${changed}" ]]; then + echo "changed=true" >> "$GITHUB_OUTPUT" + fi + + - name: Run chart-testing (lint) + if: steps.list-changed.outputs.changed == 'true' + run: ct lint --config .github/ct.yaml + + # TODO: uncomment when we've self-managed nodes + # - name: Create kind cluster + # if: steps.list-changed.outputs.changed == 'true' + # uses: helm/kind-action@v1 + + # - name: Run chart-testing (install) + # if: steps.list-changed.outputs.changed == 'true' + # run: ct install --config ct.yaml diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..1671581 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,98 @@ +name: Release OpenBAS chart + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - "charts/openbas/**" + +jobs: + release: + runs-on: ubuntu-latest + + permissions: + contents: write + packages: write + id-token: write + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Configure Git + run: | + git config user.name "$GITHUB_ACTOR" + git config user.email "$GITHUB_ACTOR@users.noreply.github.com" + + - name: Semantic Release + uses: cycjimmy/semantic-release-action@v4 + id: semantic_release + with: + dry_run: true + branch: main + tag_format: ${version} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Update Chart verison + id: chart_version + if: steps.semantic_release.outputs.new_release_published == 'true' + run: | + sed -i 's/^version: .*/version: ${{ steps.semantic_release.outputs.new_release_git_tag }}/g' charts/openbas/Chart.yaml + echo "CHART_VERSION=${{ steps.semantic_release.outputs.new_release_git_tag }}" >> $GITHUB_OUTPUT + + - name: Check if tag exists + id: tag_exists + if: steps.semantic_release.outputs.new_release_published == 'true' + run: | + TAG_EXISTS=true + if ! [ $(git tag -l "v${{ steps.chart_version.outputs.CHART_VERSION }}") ]; then + TAG_EXISTS=false + fi + echo TAG_EXISTS=$TAG_EXISTS >> $GITHUB_OUTPUT + + - name: Run chart-releaser + if: steps.tag_exists.outputs.TAG_EXISTS == 'false' + uses: helm/chart-releaser-action@v1.6.0 + with: + charts_dir: charts + config: .github/cr.yaml + env: + CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + CR_SKIP_EXISTING: true + + - name: Login in to the Container registry + if: steps.tag_exists.outputs.TAG_EXISTS == 'false' + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Install Cosign + if: steps.tag_exists.outputs.TAG_EXISTS == 'false' + uses: sigstore/cosign-installer@v3 + + - name: Install Oras + if: steps.tag_exists.outputs.TAG_EXISTS == 'false' + uses: oras-project/setup-oras@v1 + + # ref: https://github.com/backstage/charts/blob/88240ce7a0726e3773ee0e4866fbe6325c15267b/.github/workflows/release.yml#L50 + - name: Publish and Sign OCI Charts + if: steps.tag_exists.outputs.TAG_EXISTS == 'false' + run: | + for chart in `find .cr-release-packages -name '*.tgz' -print`; do + helm push ${chart} oci://ghcr.io/${GITHUB_REPOSITORY} |& tee helm-push-output.log + file_name=${chart##*/} + chart_name=${file_name%-*} + digest=$(awk -F "[, ]+" '/Digest/{print $NF}' < helm-push-output.log) + cosign sign -y "ghcr.io/${GITHUB_REPOSITORY}/${chart_name}@${digest}" + + oras push "ghcr.io/${GITHUB_REPOSITORY}/${chart_name}:${{ steps.chart_version.outputs.CHART_VERSION }}" + done + env: + COSIGN_EXPERIMENTAL: 1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..9381960 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,41 @@ +# How to contribute to OpenBAS Helm Chart + +This document provides guidelines for contributing to the *OpenBAS Helm Chart* project. + +## How can I contribute? + +### Did you find a bug? + +* **Ensure the bug has not already been reported** by searching on GitHub under [Issues](https://github.com/devops-ia/helm-openbas/issues). +* If you cannot find an open issue addressing the problem, [open a new one](https://github.com/devops-ia/helm-openbas/issues/new). Include a **title and clear description**, as much relevant information as possible, and a **code sample** or an **executable test case** demonstrating the unexpected behavior. +* Use the relevant bug report templates to create the issue, if available. + +### Do you intend to add a new feature or change an existing one? + +* Please discuss first ([open an issue](https://github.com/devops-ia/helm-openbas/issues)) before starting any significant pull request (e.g., implementing features, refactoring code) to avoid spending time on something that might not be merged. +* Adhere to the project's coding conventions (indentation, accurate comments, etc.) and any other requirements (such as test coverage, documentation). + +## Styleguides + +### YAML Styleguide + +All YAML files must adhere to the following style guide: + +* Indentation: Use 2 spaces for indentation. +* No trailing spaces. +* Use hyphens for list items. +* Use camelCase for key names. +* Ensure there are no syntax errors. + +Additional rules: + +* Always use double quotes for strings. +* Keep lines to a maximum of 80 characters. +* Ensure proper alignment of nested elements. + +### Git Commit Messages + +* Use the present tense ("Add feature" not "Added feature"). +* Use the imperative mood ("Move cursor to..." not "Moves cursor to..."). +* Limit the first line to 72 characters or less. +* Reference issues and pull requests liberally after the first line. diff --git a/GUIDELINES.md b/GUIDELINES.md new file mode 100644 index 0000000..a099036 --- /dev/null +++ b/GUIDELINES.md @@ -0,0 +1 @@ +TBD diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..32c75fe --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 DevOps Solutions + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4440ae4 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# OpenBAS Helm Chart + +[OpenBAS](https://github.com/OpenBAS-Platform/openbas) is an open source platform allowing organizations to plan, schedule and conduct cyber adversary simulation campaign and tests. + +## Usage + +Charts are available in: + +* [Chart Repository](https://helm.sh/docs/topics/chart_repository/) +* [OCI Artifacts](https://helm.sh/docs/topics/registries/) + +### Chart Repository + +#### Add repository + +```console +helm repo add openbas https://devops-ia.github.io/helm-openbas +helm repo update +``` + +#### Install Helm chart + +```console +helm install [RELEASE_NAME] openbas/openbas +``` + +This install all the Kubernetes components associated with the chart and creates the release. + +_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ + +### OCI Registry + +Charts are also available in OCI format. The list of available charts can be found [here](https://github.com/devops-ia/helm-openbas/pkgs/container/helm-openbas%2Fopenbas). + +#### Install Helm chart + +```console +helm install [RELEASE_NAME] oci://ghcr.io/devops-ia/helm-openbas/openbas --version=[version] +``` + +## OpenBAS chart + +Can be found in [openbas chart](charts/openbas). diff --git a/TESTING.md b/TESTING.md new file mode 100644 index 0000000..a099036 --- /dev/null +++ b/TESTING.md @@ -0,0 +1 @@ +TBD diff --git a/package.json b/package.json new file mode 100644 index 0000000..62909d3 --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "helm-openbas", + "version": "1.0.0", + "release": { + "branches": [ + "main" + ], + "repositoryUrl": "https://github.com/devops-ia/helm-openbas.git", + "plugins": [ + "@semantic-release/release-notes-generator", + "@semantic-release/github" + ] + } +}