razinbouzar opened a new pull request, #26: URL: https://github.com/apache/druid-operator/pull/26
# Publish Druid Operator Helm charts with ASF GitHub Pages ## Summary This PR wires the Druid Operator Helm chart publishing flow to the ASF-managed GitHub Pages path for this repository: ```text https://apache.github.io/druid-operator ``` The published Helm repository layout is: ```text index.yaml helm-releases/ druid-operator-<chart-version>.tgz ``` Users will install with: ```bash helm repo add apache-druid https://apache.github.io/druid-operator helm repo update helm -n druid-operator-system upgrade -i --create-namespace cluster-druid-operator apache-druid/druid-operator ``` ## Why PR #19 added Helm chart publishing pieces, but those changes landed on the `gh-pages` branch. ASF GitHub Pages repository settings need to be configured from the default branch, and GitHub Actions workflows intended to run from `master` must live on `master`. This PR moves the publishing setup into the source branch and keeps publishing release-manager controlled instead of publishing on every push. ## Changes - Enables ASF GitHub Pages for this repository in `.asf.yaml`: ```yaml github: ghp_branch: gh-pages ghp_path: / ``` - Adds a manual `Helm Chart` GitHub Actions workflow. - `publish=false` validates only. - `publish=true` validates, packages, updates `gh-pages/index.yaml`, and publishes the chart under `gh-pages/helm-releases/`. - The workflow refuses to overwrite an existing chart package for the same chart version. - Adds Helm packaging helpers to `Makefile`: - `make helm-package` - local package/index generation under `dist/helm` - checks that the packaged chart contains `LICENSE` and `NOTICE` - Adds `chart/LICENSE` and `chart/NOTICE` so the Helm chart archive carries ASF license metadata. - Updates user docs from the old DataInfra chart repo to: ```text https://apache.github.io/druid-operator ``` - Adds `docs/helm-chart-release.md` with the release-manager workflow. - Updates RAT handling for generated local artifacts: - excludes `cover.out` - excludes `dist/**` - makes `$(RAT_JAR)` depend on `bin/` as an order-only prerequisite to avoid unnecessary jar redownloads. ## Manual publishing flow After the ASF release is approved: 1. Confirm `chart/Chart.yaml` has the chart version to publish and `appVersion` matches the operator release. 2. Run local validation: ```bash make helm-lint make helm-template make helm-package make rat ``` 3. In GitHub Actions, run the `Helm Chart` workflow from `master` with: ```text publish=true ``` 4. Verify the live Helm repo: ```bash curl -I https://apache.github.io/druid-operator/index.yaml helm repo add apache-druid https://apache.github.io/druid-operator helm repo update helm search repo apache-druid/druid-operator ``` ## Validation performed ```bash make helm-lint make helm-template make helm-package make rat git diff --check ``` A local simulation of the `gh-pages/helm-releases` layout generated an index entry pointing to: ```text https://apache.github.io/druid-operator/helm-releases/druid-operator-0.3.9.tgz ``` The packaged chart was also verified to include: ```text druid-operator/LICENSE druid-operator/NOTICE ``` ## Follow-up after merge The existing `gh-pages` branch should be cleaned up once this PR lands. It currently contains source-tree files from the earlier PR. The branch should be reduced to the generated Helm repository content: ```text index.yaml helm-releases/ ``` <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- Thanks for trying to help us make Druid Operator be the best it can be! Please fill out as much of the following information as is possible (where relevant, and remove it when irrelevant) to help make the intention and scope of this PR clear in order to ease review. --> Fixes #XXXX. <!-- Replace XXXX with the id of the issue fixed in this PR. Remove this section if there is no corresponding issue. Don't reference the issue in the title of this pull-request. --> ### Description <!-- Describe the goal of this PR and the problem you encoutered while managing Druid clusters. Something like, "I have a Druid cluster managed with this operator and wanted to change XX on the cluster to enable YY usecase that I needed due to ZZ requirement.". If there is a corresponding issue (referenced above), it's not necessary to repeat the description here, however, you may choose to keep one summary sentence. --> <!-- Describe the possible solutions and chosen one with the rationale. --> <!-- Describe key changes made in the patch. --> <hr> This PR has: - [ ] been tested on a real K8S cluster to ensure creation of a brand new Druid cluster works. - [ ] been tested for backward compatibility on a real K*S cluster by applying the changes introduced here on an existing Druid cluster. If there are any backward incompatible changes then they have been noted in the PR description. - [ ] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader. - [ ] added documentation for new or modified features or behaviors. <hr> ##### Key changed/added files in this PR * `MyFoo` * `OurBar` * `TheirBaz` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
