Files
kubernetes/hack/jenkins
k8s-merge-robot 14f5eb458d Merge pull request #23454 from wonderfly/bump_timeouts
Automatic merge from submit-queue

Migrate gke-trusty test jobs to 1.2

Following up #23100 and #23139, #23319, migrate all gke-trusty jobs to the
`release-1.2` branch, add parallel and subnet test jobs, and bump timeouts
accordingly.

Tested with `jenkins-jobs test`. Manually diff'ed gke-trusty jobs against their equivalent gke jobs. For example,

```
# diff /tmp/jobs0324/kubernetes-e2e-gke-test /tmp/jobs0324/kubernetes-e2e-gke-trusty-test
4c4
<   <description>Run E2E tests on GKE test endpoint. Test owner: GKE on-call.&lt;!-- Managed by Jenkins Job Builder --&gt;</description>
---
>   <description>Run E2E tests on GKE test endpoint. Test owner: wonderfly@google.com.&lt;!-- Managed by Jenkins Job Builder --&gt;</description>
49c49
< export PROJECT=&quot;k8s-jkns-e2e-gke-test&quot;
---
> export PROJECT=&quot;kubekins-e2e-gke-trusty-test&quot;
51a52
> export E2E_NAME=&quot;jkns-gke-e2e-test-trusty&quot;
228c229
<       <recipientList>$DEFAULT_RECIPIENTS</recipientList>
---
>       <recipientList>wonderfly@google.com,qzheng@google.com</recipientList>
```

@spxtr @roberthbailey @ihmccreery Can you review this?
cc/ @andyzheng0831
2016-04-01 06:38:56 -07:00
..
2016-03-16 13:18:46 -07:00

Jenkins

Jenkins is a pluggable continuous integration system. The Google team is running a Jenkins server on a private GCE instance for the Kubernetes project in order to run longer integration tests, continuously, on different providers. Currently, we are running tests on GCE, GKE, and AWS.

General flow

The flow of the Google Jenkins server:

  • Under the kubernetes-build job: Every 2 minutes, Jenkins polls for a batch of new commits, after which it runs the build.sh script (in this directory) on the latest tip. This results in build assets getting pushed to GCS and the latest.txt file in the ci bucket being updated.
  • On trigger, and every half hour (which effectively means all the time, unless we're failing cluster creation), e2e variants run, on the latest build assets in GCS:
    • kubernetes-e2e-gce: Standard GCE e2e.
    • kubernetes-e2e-gke: GKE provider e2e, with head k8s client and GKE creating clusters at its default version.
    • kubernetes-e2e-gke-ci: GKE provider e2e, with head k8s client and GKE creating clusters at the head k8s version.
    • kubernetes-e2e-aws: AWS provider e2e.
  • Each job will not run concurrently with itself, so, for instance, Jenkins executor will only ever run one kubernetes-build job. However, it may run the jobs in parallel, i.e. kubernetes-build may be run at the same time as kubernetes-e2e-gce. For this reason, you may see your changes pushed to our GCS bucket rapidly, but they may take some time to fully work through Jenkins. Or you may get lucky and catch the train in 5 minutes.
  • There are many jobs not listed here, including upgrade tests, soak tests, and tests for previous releases.

Scripts

The scripts in this directory are directly used by Jenkins, either by curl from githubusercontent (if we don't have a git checkout handy) or by executing it from the git checkout. Since Jenkins is an entity outside this repository, it's tricky to keep documentation for it up to date quickly. However, the scripts themselves attempt to provide color for the configuration(s) that each script runs in.

Job Builder

New jobs should be specified as YAML files to be processed by Jenkins Job Builder. The YAML files live in job-configs and its subfolders. Jenkins runs Jenkins Job Builder in a Docker container defined in job-builder-image, and triggers it using update-jobs.sh. Jenkins Job Builder uses a config file called jenkins_jobs.ini which contains the location and credentials of the Jenkins server.

Analytics