Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deploy and test each release after it's done #1377

Closed
afrittoli opened this issue Oct 3, 2019 · 7 comments
Closed

Deploy and test each release after it's done #1377

afrittoli opened this issue Oct 3, 2019 · 7 comments
Assignees
Labels
area/release Indicates an issue on release (process, tasks). area/testing Issues or PRs related to testing

Comments

@afrittoli
Copy link
Member

We should test releases after they're done (including nightly ones) and track the results.
This should use the work done in tektoncd/plumbing#75.

Ideally this should be automated E2E, and we should not use prow to trigger the pipeline, so that we can benefit use the latest Tekton syntax in the pipeline definition.

@afrittoli
Copy link
Member Author

We're setting up a new cluster for dogfooding. We plan to CD tekton there on a daily basis (at least) and we can use that same Tekton to run this test.

@afrittoli afrittoli added this to the Pipelines 0.8 🐱 milestone Oct 3, 2019
@vdemeester vdemeester added area/release Indicates an issue on release (process, tasks). area/testing Issues or PRs related to testing labels Oct 3, 2019
@vdemeester
Copy link
Member

@afrittoli related to #1121 right ? (at least this is the foundation for it)

@afrittoli
Copy link
Member Author

@afrittoli related to #1121 right ? (at least this is the foundation for it)

Yeah, even though #1121 is about testing code before releasing, while this one is to test a release after it is made to ensure the build and release process was successful.

@afrittoli
Copy link
Member Author

afrittoli commented Oct 18, 2019

I've implemented nightly release automation with tektoncd/triggers in the dogfooding cluster. Now there are three options for triggering testing automatically:

  1. trigger a cloudevent using the CloudEventPipelineResource at the end of the release pipeline. Use a dedicated event listener as a sink. There are limitations in the way binding can extract info from the POST body, specifically filtering dicts from a list based on keys is not yet possible, so it would not be possible to extract the info required to trigger the testing pipeline. An alternative here would be to build an interceptor service that prepares a simple json body for the binding to use
  2. use something https://cloud.google.com/storage/docs/object-change-notification to receive the trigger from the bucket directly. The notification from the storage service would include a link to the storage, which would include the version tag (in the folder), the bucket URL and the path to the release file to be installed and tested, which should be enough info for the test pipeline to run
  3. add a task to the release pipeline that issues a POST to the event listener with only the info required

(1) Is the option I prefer, because it doesn't depend on a specific cloud provider like (2) and because it's less coupled to the sink like (3).

@vdemeester
Copy link
Member

/assign @afrittoli

@bobcatfish
Copy link
Collaborator

Related: #1372

@bobcatfish
Copy link
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/release Indicates an issue on release (process, tasks). area/testing Issues or PRs related to testing
Projects
None yet
Development

No branches or pull requests

3 participants