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

[RFC #0001] OpenIMSDK cicd robot machine proposal #398

Open
cubxxw opened this issue May 13, 2023 · 6 comments
Open

[RFC #0001] OpenIMSDK cicd robot machine proposal #398

cubxxw opened this issue May 13, 2023 · 6 comments
Assignees
Labels
area/test Issues or PRs related to tests or testing infrastructure area/test-infra Issues or PRs related to test infrastructure enhancement New feature or request kind/feature Categorizes issue or PR as related to a new feature. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. proposal RFC Project design proposal sig/testing Categorizes an issue or PR as relevant to SIG Testing.
Milestone

Comments

@cubxxw
Copy link
Contributor

cubxxw commented May 13, 2023

[RFC #398] OpenIMSDK proposal template

Meta #398

📇Topics

Summary

The OpenIMSDK cicd machine is an automated system that performs continuous integration and deployment for OpenIMSDK projects. It streamlines the development process and ensures high quality code by running automated tests, code quality checks, and deployment pipelines.

Definitions

  • Continuous integration (CI): the practice of automatically building and testing code changes on a frequent basis.
  • Continuous deployment (CD): the practice of automatically deploying code changes to production environments after they pass automated tests.

Motivation

  • Improve development efficiency by automating repetitive tasks such as testing and deployment.
  • Reduce the risk of human error by automating tasks that can be prone to mistakes.
  • Ensure consistent code quality by enforcing automated checks.
  • Facilitate collaboration by providing a central location for code review and feedback.

What it is

The OpenIMSDK cicd machine is a combination of multiple tools and services that work together to automate the development process. It includes:

  • A version control system (VCS) for storing code, such as GitHub.
  • A continuous integration (CI) server, such as Jenkins or CircleCI, to build and test the code on every commit.
  • A container registry, such as Docker Hub, to store built images.
  • A continuous deployment (CD) system, such as Kubernetes, to deploy new code changes to production environments.
  • Configuration management tools, such as Ansible or Chef, to manage the deployment of infrastructure and application dependencies.

How it Works

The OpenIMSDK cicd machine works as follows:

  1. Developers create feature branches in the VCS and make changes to the code.
  2. Developers push their changes to the VCS, triggering a webhook that starts the CI process.
  3. The CI server pulls the latest code changes, builds the application, and runs automated tests and code quality checks.
  4. After the tests have passed, the CI server deploys the updated application to the staging environment for manual testing. Once the application passes manual testing, it is deployed to the production environment.
  5. To automate this process, we propose the creation of an OpenIMSDK CICD bot. The bot will be responsible for automating the build, test, and deployment process of OpenIMSDK.

The OpenIMSDK CICD bot will integrate with the Git repository hosting the OpenIMSDK source code. It will monitor for changes to the repository and trigger the build and test process automatically.

The bot will also be responsible for deploying the updated application to the staging and production environments. Deployment to the staging environment will happen automatically after the tests have passed. Deployment to the production environment will require manual approval from a designated team member.

Migration

The OpenIMSDK CICD bot will require changes to the existing build and deployment process. The existing build scripts and deployment configurations will need to be updated to work with the bot.

Existing OpenIMSDK developers will need to be trained on the new CICD process and the use of Kubernetes.

Drawbacks

The OpenIMSDK CICD bot will require additional infrastructure to support. This includes setting up and managing the Kubernetes clusters and configuring the bot.

Alternatives

Alternatives to the OpenIMSDK CICD bot include using an existing CICD service such as Jenkins or Travis CI. However, using an existing service may not provide the necessary customization and control required for the OpenIMSDK build and deployment process.

Prior Art

Similar CICD bots have been developed for other projects, such as the Kubernetes project's Prow bot.

Unresolved Questions

  • What additional features could be added to the OpenIMSDK CICD bot?
  • What is the impact of the bot on the development workflow?
  • How can we ensure the security of the deployment process?
@cubxxw cubxxw added enhancement New feature or request kind/feature Categorizes issue or PR as related to a new feature. RFC Project design proposal proposal labels May 13, 2023
@cubxxw cubxxw self-assigned this May 14, 2023
@cubxxw cubxxw added this to the Large refactoring efforts milestone May 25, 2023
@kubbot
Copy link
Member

kubbot commented Jul 25, 2023

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days.

@kubbot kubbot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jul 25, 2023
@cubxxw
Copy link
Contributor Author

cubxxw commented Aug 2, 2023

go on

@kubbot kubbot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Aug 2, 2023
@cubxxw
Copy link
Contributor Author

cubxxw commented Aug 5, 2023

@cubxxw
Copy link
Contributor Author

cubxxw commented Aug 5, 2023

@cubxxw cubxxw added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. area/test Issues or PRs related to tests or testing infrastructure area/test-infra Issues or PRs related to test infrastructure sig/testing Categorizes an issue or PR as relevant to SIG Testing. labels Aug 5, 2023
@cubxxw cubxxw modified the milestones: v3.1, v3.4 Sep 28, 2023
@kubbot
Copy link
Member

kubbot commented Mar 3, 2024

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days.

@kubbot kubbot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Mar 3, 2024
@kubbot
Copy link
Member

kubbot commented Mar 11, 2024

This issue was closed because it has been stalled for 7 days with no activity.

@kubbot kubbot closed this as not planned Won't fix, can't repro, duplicate, stale Mar 11, 2024
@cubxxw cubxxw reopened this Apr 1, 2024
@kubbot kubbot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Apr 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/test Issues or PRs related to tests or testing infrastructure area/test-infra Issues or PRs related to test infrastructure enhancement New feature or request kind/feature Categorizes issue or PR as related to a new feature. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. proposal RFC Project design proposal sig/testing Categorizes an issue or PR as relevant to SIG Testing.
Projects
Status: In progress
Development

No branches or pull requests

2 participants