mirror of
https://github.com/helm/charts.git
synced 2026-08-23 22:37:45 +00:00
Add README to test folder (#2339)
* Add README to test folder * Kubernetes members can trigger PR tests
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# Charts Testing
|
||||
|
||||
## Pull Request Testing
|
||||
|
||||
### Procedure
|
||||
|
||||
Pull requests testing is run via the [Kuberentes Test Infrastructure](https://github.com/kubernetes/test-infra).
|
||||
|
||||
The configuration of the Pull Request trigger is [in the config.json](https://github.com/kubernetes/test-infra/blob/827797c54b48295045698465b437f463ca9276c2/jobs/config.json#L10285).
|
||||
|
||||
This snippet tells Test Infra to run the [test/e2e.sh](https://github.com/kubernetes/charts/blob/master/test/e2e.sh)
|
||||
when testing is triggered on a pull request. The e2e.sh script will use the [Charts test image](https://github.com/kubernetes/charts/blob/master/test/Dockerfile)
|
||||
to run the [test/changed.sh](https://github.com/kubernetes/charts/blob/master/test/changed.sh) script. This script
|
||||
is the main logic for validation of a pull request. It intends to only test charts that have changed in this PR.
|
||||
|
||||
The logic is as follows:
|
||||
|
||||
1. [Get credentials for the Kubernetes cluster used for testing.](https://github.com/kubernetes/charts/blob/master/test/changed.sh#L42)
|
||||
1. [Install and initialize Helm](https://github.com/kubernetes/charts/blob/master/test/changed.sh#L47)
|
||||
1. [For any charts that have changed](https://github.com/kubernetes/charts/blob/master/test/changed.sh#L62):
|
||||
- Download dependent charts, if any, with `helm dep update`
|
||||
- Run `helm lint` on the chart
|
||||
- Run `helm install` in a new namespace for this PR+build
|
||||
- Use the [test/verify-release.sh](https://github.com/kubernetes/charts/blob/master/test/verify-release.sh) to ensure that if any pods were launched that they get to the `Running` state
|
||||
- Run `helm test` on the release
|
||||
- Delete the release
|
||||
|
||||
### Triggering
|
||||
|
||||
In order for the tests to be kicked off one of the
|
||||
[Kubernetes member](https://github.com/orgs/kubernetes/people) must add the
|
||||
"ok-to-test" label. This can also be done by commenting "/ok-to-test" on the pull request.
|
||||
|
||||
This check is there to ensure that PRs are spot checked for any nefarious code. There are 2 things to check for:
|
||||
|
||||
1. No changes have been made to file in the test folder that unnecessarily alter the testing procedures.
|
||||
1. The chart is not using images whose provenance is not traceable (usually done via the sources metadata field).
|
||||
|
||||
## Repo syncing
|
||||
|
||||
The syncing of charts to the stable and incubator repos happens from a Jenkins instance that is polling for changes
|
||||
to the master branch. On each change it will use the [test/repo-sync.sh](https://github.com/kubernetes/charts/blob/master/test/repo-sync.sh)
|
||||
to update the public repositories. The procedure is as follows:
|
||||
|
||||
1. [Setup Helm](https://github.com/kubernetes/charts/blob/master/test/repo-sync.sh#L16)
|
||||
1. [Authenticate to Google Cloud so that we can upload to the Cloud Storage bucket that hosts the charts](https://github.com/kubernetes/charts/blob/master/test/repo-sync.sh#L27)
|
||||
1. For the stable and incubator folders:
|
||||
- Download the existing index.yaml from the repository
|
||||
- Run `helm dep update` on all the charts in the current repository
|
||||
- Run `helm package` on each chart
|
||||
- Recreate the index using `helm repo index`
|
||||
- Upload the repostory using `gsutil rsync`
|
||||
Reference in New Issue
Block a user