Add README to test folder (#2339)

* Add README to test folder

* Kubernetes members can trigger PR tests
This commit is contained in:
Vic Iglesias
2017-09-27 09:50:29 -07:00
committed by GitHub
parent 8b4d25eefc
commit 237caa0ea6
+52
View File
@@ -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`