-
Notifications
You must be signed in to change notification settings - Fork 426
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
Continuous integration #3
Comments
+1000! CI will likely be the topic of lecture |
The decision between TravisCI and Jenkins is pretty radical. TravisCI (as well as the new "kid on the block" CircleCI) is a managed solution and can be used for free by students through the GitHub Student Developer Pack also on private repositories. The configuration use a custom style in a Jenkins is a old and huge open source CD/CI tool built in Java with thousands of plugins. Needs to be managed on premise (i.e. installed and maintained on KTH servers). Configuration is complex and can be done through interface (both traditional one and Blue Ocean) but lately is becoming predominant the mindset of writing CD/CI pipelines as code ( At the end the most important thing is make students understand how these tools can be used with other technologies (version control, management tools, containers, etc.) to streamline and automate processes. Maybe the first lecture is not the best moment to introduce them; it's often the case that one shows how things (e.g. deployment) can be done manually and then it becomes obvious the need for such tools. |
Agree, this is an essential aspect of DevOps, and one of the primary intended learning outcome. |
The CI "engine" (Travis, Circle, Jenkins, GCB, Bamboo, QuickBuild, TeamCity, ...) is only one part of the CI question. The key questions are:
|
I think the 2 questions are often interconnected. If you use a hosted CD/CI tool like Travis or Circle you have often very little control on notification and caching strategies. Also how the real machines are setup is often hidden. On the contrary Jenkins gives all the needed customisations with a high cost in maintenance. Also it is often the case that Jenkins becomes a top security concern since is one of the largest source of vulnerabilities. Regarding the last one I would say that most platforms are moving towards the idea of using heavily kubernetes to manage executors or at least ephemeral agents. Also most modern CD/CI infrastructure build software as containers that are then deployed to some registry. In this case there are a lot of interesting question regarding the Docker-in-Docker problem. |
Some other questions that may make sense to address, depending on the level of the students:
|
Very original CI: |
An empirical study of the long duration of continuous integration builds |
The impact of continuous integration on other software development practices: a large-scale empirical study |
Pipes for Bitbucket Cloud |
Tool list for demo/presentation: Jenkins, TravisCI, QuickBuild, TeamCity, Concourse, CircleCI, Gitlab, etc. |
Visualize the Jenkins build |
Continuous integration at google scale |
Continuous Integration Theater |
Jenkins-stargate is a unit test automation framework for all your jenkins pipeline code such as jenkins shared libraries and Jenkinsfiles. Meetup on Feb 12 2020: https://www.meetup.com/DevOps-Stockholm/events/268502971/ |
Bazel, Build and test software |
game.ci |
How Do Software Developers Use GitHub Actions to Automate Their Workflows?. |
Buildkite is a platform for running fast, secure, and scalable continuous integration pipelines on your own infrastructure. |
"CI/CD Pipelines Evolution and Restructuring - A Qualitative and Quantitative Study." https://dblp.org/rec/conf/icsm/ZampettiGBP21 |
A relevant and hard topic in CI: handling test flakiness Recent paper |
A hard and essential topic for CI for games: defect prediction |
Faster builds with highly parallel GitHub Actions |
|
an amazing github action |
Perforce plugin for Jenkins |
Tekton is an open-source framework for creating CI/CD systems |
On the Use of GitHub Actions in Software Development Repositories |
Turbo is an incremental bundler and build system optimized for JavaScript and TypeScript, written in Rust. |
Analyzing the Effects of CI/CD on Open Source Repositories in GitHub and GitLab |
SoK: Machine Learning for Continuous Integration. |
T-Evos: A Large-Scale Longitudinal Study on CI Test Execution and Failure |
The CI/CD Collective at stackoverflow: https://stackoverflow.com/collectives/ci-cd |
Kubernetes controller for GitHub Actions self-hosted runners |
Chronicles of CI/CD: A Deep Dive into its Usage Over Time |
Martin Fowler's post on continuous integration, 2024 |
Keeping master green at scale |
Developer-Applied Accelerations in Continuous Integration 2024 See also papers from the same group: https://rebels.cs.uwaterloo.ca/publications.html |
paper |
Wikipedia references:
Jenkins and Travis are examples of build tools that automatically build release candidates from the version control system and uploads them to the artifact repository.
Often unit tests are also executed in the build tool, to ensure that no bugs are included in the builds.
The text was updated successfully, but these errors were encountered: