Giter Club home page Giter Club logo

test-infra's Introduction

CircleCI

Giant Swarm Testing Infrastructure

Getting started

Interacting with our test-infra setup is currently done exclusively through the releases repository. On this repository you can trigger new test runs through comments on Pull Requests.

Please be aware that all interactions with test-infra are designed with the idea in mind that a pull request will either modify or add a single release in the releases repository! Commands which are currently available are as follows:

  • /test cncf runs the cncf suite against the release.
  • /test cis runs the cis suite against the release.
  • /test aws runs awscnfm against the release - this only works for AWS.

There are multiple dashboards which can be useful to track the progress of tests:

  • prow gives a rough overview of the running tests.
  • tekton gives a more in depth overview of the test progress,
  • kibana gives full insight of the logs emitted during your test.

Each test will generally perform the same flow currently which can be summarized as this:

  1. Determine release CR from PR diff.
  2. Create release CR on provider CP (gaia,godsmack,gorgoth).
  3. Create tenant cluster with created release on target CP.
  4. Run tests against created tenant cluster.
  5. Report test results.
  6. Delete tenant cluster.
  7. Delete release on CP.

Feel free to reach out to team ludacris if you have further questions.

Developing test-infra

You can find guides for the creation of new tests in the docs subfolder.

Local development

A lot of functionality of tekton is available locally - the biggest exceptions being anything requiring an Ingress of webhooks.

Tools required for local development:

  • KIND
  • Kustomize
  • Kubectl
  • Giant Swarm internal tooling for secrets

To setup tekton in a KIND cluster you can simply do the following:

  1. Create a cluster with kind create cluster
  2. Apply all necessary files with ./tekton-kind.sh

Hack away!

In our ops cluster

Deploying test-infra is currently a bit cumbersome as it is running as an app inside a tenant cluster. The tenant cluster is rfjh2 on gorilla. To update test-infra you will need to manually edit the app CR on the gorilla CP in the namespace rfjh2. There is currently no automatic rollout by merging to master!

The roles and serviceaccounts on the target CPs are currently created manually. You can find the resources here.

Kubeconfigs to the target CPs are currently generated with a script using opsctl and then manually updated to rfjh2. You can find the necessary scripts here.

Included components

This repository contains manifests for our individual test pipelines as well as the components we run to build up our testing infrastructure. The two main open source projects used are Prow and Tekton

Prow

Prow is a CI/CD system running on Kubernetes. We utilize prow to trigger tests and have a nice Github integration to run high cost conformance tests.

Components

This is a list of components which we run:

  • Deck - UI for prow jobs.
  • Sinker - Clean up stale prow jobs.
  • Hook - Handle GitHub events dispatching them to plugins.
  • Horologium - Start periodic jobs.
  • Plank - Start prow jobs.
  • ghProxy - Designed to reduce Github API token usage.
  • Tide - Automatically retest PRs & merge them if tests go green.
  • Crier - Reports your prowjob status changes.
  • Pipelines - Automatically creates Tekton pipelines for each Prow job.

Tekton

Tekton is a CI/CD system which is highly integrated with Kubernetes. We utilize it to actually run tests and to structure our test stages.

Components

This is a list of components which we run:

  • Pipelines - This enables the meat of functionalities by Tekton.
  • Dashboard - Gives and overview of active Tekton tasks and pipelines.
  • prow-log-aggregator - Collects logs from Tekton tasks and makes them available to Deck.

Reference

test-infra's People

Contributors

architectbot avatar averagemarcus avatar calvix avatar fiunchinho avatar github-actions[bot] avatar kubasobon avatar marcelmue avatar marians avatar mazzy89 avatar njuettner avatar quentinbisson avatar renovate[bot] avatar rossf7 avatar silenteh avatar stone-z avatar taylorbot avatar tfussell avatar theobrigitte avatar tomahawk28 avatar tuommaki avatar ubergesundheit avatar uvegla avatar whites11 avatar xh3b4sd avatar yulianedyalkova avatar zewolfe avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

stefan06ro

test-infra's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • Update architect orb to v5

Edited/Blocked

These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

ansible
tekton/tasks/cis.yaml
  • quay.io/giantswarm/sonobuoy v0.56.17-alpine-giantswarm
tekton/tasks/cleanup-capi-hybrid.yaml
  • quay.io/giantswarm/standup 3.4.2
tekton/tasks/cncf.yaml
  • quay.io/giantswarm/kubectl-gs 2.43.0
  • quay.io/giantswarm/sonobuoy v0.56.17-alpine-giantswarm
tekton/tasks/create-cluster-capi-hybrid.yaml
  • quay.io/giantswarm/kubectl-gs 2.43.0
  • quay.io/giantswarm/kubectl-gs 2.43.0
tekton/tasks/create-release.yaml
  • quay.io/giantswarm/standup 3.4.2
  • quay.io/giantswarm/kubectl-gs 2.43.0
tekton/tasks/detect-test-env.yaml
  • quay.io/giantswarm/standup 3.4.2
  • quay.io/giantswarm/kubectl-gs 2.43.0
tekton/tasks/e2e.yaml
tekton/tasks/get-latest-release.yaml
  • quay.io/giantswarm/standup 3.4.2
tekton/tasks/manage-sonobuoy-results.yaml
  • quay.io/giantswarm/sonobuoy v0.56.17-alpine-giantswarm
tekton/tasks/upgrade-cluster.yaml
  • quay.io/giantswarm/standup 3.4.2
tekton/tasks/upload-to-s3-bucket.yaml
  • quay.io/giantswarm/awscli 2.7.35
tekton/tasks/wait-for-ready.yaml
  • quay.io/giantswarm/standup 3.4.2
circleci
.circleci/config.yml
  • architect 4.35.5
  • quay.io/giantswarm/architect 6.12.1
kubernetes
control-plane/cluster-role-binding.yaml
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
control-plane/cluster-role.yaml
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
control-plane/sonobuoy-cluster-role-binding.yaml
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
crds/prowjob.yaml
  • CustomResourceDefinition apiextensions.k8s.io/v1
crds/tekton-dashboard.yaml
  • CustomResourceDefinition apiextensions.k8s.io/v1
crds/tekton-triggers.yaml
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
crds/tekton.yaml
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
  • CustomResourceDefinition apiextensions.k8s.io/v1
prow/cluster/crier.yaml
  • gcr.io/k8s-prow/crier v20200813-535fb53bd1
  • Role rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • Deployment apps/v1
prow/cluster/deck.yaml
  • gcr.io/k8s-prow/deck v20200813-535fb53bd1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • Ingress networking.k8s.io/v1
  • Ingress networking.k8s.io/v1
  • Deployment apps/v1
prow/cluster/ghproxy.yaml
  • gcr.io/k8s-prow/ghproxy v20200813-535fb53bd1
  • Deployment apps/v1
prow/cluster/hook.yaml
  • gcr.io/k8s-prow/hook v20200813-535fb53bd1
  • Role rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • Deployment apps/v1
  • Ingress networking.k8s.io/v1
prow/cluster/horologium.yaml
  • gcr.io/k8s-prow/horologium v20200813-535fb53bd1
  • Role rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • Deployment apps/v1
prow/cluster/needs-rebase.yaml
  • gcr.io/k8s-prow/needs-rebase v20200813-535fb53bd1
  • Deployment apps/v1
prow/cluster/pipeline.yaml
  • gcr.io/k8s-prow/pipeline v20200813-535fb53bd1
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • Deployment apps/v1
prow/cluster/plank.yaml
  • gcr.io/k8s-prow/plank v20200813-535fb53bd1
  • Role rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • Deployment apps/v1
prow/cluster/sinker.yaml
  • gcr.io/k8s-prow/sinker v20200813-535fb53bd1
  • Role rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • Deployment apps/v1
prow/cluster/test-workloads.yaml
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
prow/cluster/tide.yaml
  • gcr.io/k8s-prow/tide v20200813-535fb53bd1
  • Role rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • Deployment apps/v1
prow/kustomization.yaml
  • Kustomization kustomize.config.k8s.io/v1beta1
tekton/dashboard/kustomization.yaml
  • Kustomization kustomize.config.k8s.io/v1beta1
tekton/dashboard/tekton-dashboard-release-readonly.yaml
  • gcr.io/tekton-releases/github.com/tektoncd/dashboard/cmd/dashboard v0.26.0@sha256:d3963622f12448e566e3d4afb27f9b47e71d8fd8b38bab7edbbacbb9c75e331e
  • Role rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • Deployment apps/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
tekton/dashboard/tekton-ingresses.yaml
  • Ingress networking.k8s.io/v1
  • Ingress networking.k8s.io/v1
tekton/kustomization.yaml
  • Kustomization kustomize.config.k8s.io/v1beta1
tekton/pipelines/kustomization.yaml
  • Kustomization kustomize.config.k8s.io/v1beta1
tekton/tasks/cis.yaml
  • quay.io/giantswarm/sonobuoy v0.56.17-alpine-giantswarm
tekton/tasks/cleanup-capi-hybrid.yaml
  • quay.io/giantswarm/standup 3.4.2
tekton/tasks/cncf.yaml
  • quay.io/giantswarm/kubectl-gs 2.43.0
  • quay.io/giantswarm/sonobuoy v0.56.17-alpine-giantswarm
tekton/tasks/create-cluster-capi-hybrid.yaml
  • quay.io/giantswarm/kubectl-gs 2.43.0
  • quay.io/giantswarm/kubectl-gs 2.43.0
tekton/tasks/create-release.yaml
  • quay.io/giantswarm/standup 3.4.2
  • quay.io/giantswarm/kubectl-gs 2.43.0
tekton/tasks/detect-test-env.yaml
  • quay.io/giantswarm/standup 3.4.2
  • quay.io/giantswarm/kubectl-gs 2.43.0
tekton/tasks/e2e.yaml
tekton/tasks/get-latest-release.yaml
  • quay.io/giantswarm/standup 3.4.2
tekton/tasks/kustomization.yaml
  • Kustomization kustomize.config.k8s.io/v1beta1
tekton/tasks/manage-sonobuoy-results.yaml
  • quay.io/giantswarm/sonobuoy v0.56.17-alpine-giantswarm
tekton/tasks/upgrade-cluster.yaml
  • quay.io/giantswarm/standup 3.4.2
tekton/tasks/upload-to-s3-bucket.yaml
  • quay.io/giantswarm/awscli 2.7.35
tekton/tasks/wait-for-ready.yaml
  • quay.io/giantswarm/standup 3.4.2
tekton/tekton.yaml
  • gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/controller v0.35.1@sha256:48d1873bacc9729bfd1150ee6cc488ee608386b18b8019bfce47222eeb09585a
  • gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/webhook v0.35.1@sha256:28ec46b444338823e13f11b7907ea22bf15eda4aaa7a65a1f2e7a6de1bf46e10
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • ValidatingWebhookConfiguration admissionregistration.k8s.io/v1
  • MutatingWebhookConfiguration admissionregistration.k8s.io/v1
  • ValidatingWebhookConfiguration admissionregistration.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • Deployment apps/v1
  • HorizontalPodAutoscaler autoscaling/v2beta2
  • Deployment apps/v1
tekton/triggers/add-pr-body.yaml
  • gcr.io/tekton-releases/dogfooding/add-pr-body-37196dbb1230b7cd43fd605aeb3ecda6 sha256:12120c1cb9235d548c2f7bed45932870a508abaa9c8f53077ccb2db34b38e3cb
  • Deployment apps/v1
tekton/triggers/ingress.yaml
  • Ingress networking.k8s.io/v1
tekton/triggers/interceptors.yaml
  • gcr.io/tekton-releases/github.com/tektoncd/triggers/cmd/interceptors v0.20.1@sha256:65a1dbc19056050b0ca1b1a59122e1d90d2c955222ccee5e3987389a76da16ba
  • Deployment apps/v1
tekton/triggers/kustomization.yaml
  • Kustomization kustomize.config.k8s.io/v1beta1
tekton/triggers/rbac.yaml
  • Role rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
tekton/triggers/triggertemplate.yaml
tekton/triggers/upstream.yaml
  • gcr.io/tekton-releases/github.com/tektoncd/triggers/cmd/controller v0.20.1@sha256:d55339c0970402a6049d7f629ae960451b86880099d2d28cc0bd148c755392e4
  • gcr.io/tekton-releases/github.com/tektoncd/triggers/cmd/webhook v0.20.1@sha256:e343fc7394b971987b38bc0d3ec8001d1d5099b464e74e1de38b55ded4897efa
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • Role rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • ClusterRoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • RoleBinding rbac.authorization.k8s.io/v1
  • ValidatingWebhookConfiguration admissionregistration.k8s.io/v1
  • MutatingWebhookConfiguration admissionregistration.k8s.io/v1
  • ValidatingWebhookConfiguration admissionregistration.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • ClusterRole rbac.authorization.k8s.io/v1
  • Deployment apps/v1
  • Deployment apps/v1

  • Check this box to trigger a request for Renovate to run again on this repository

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.