<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>DevOps on Shaowen Chen's Website</title><link>https://www.chenshaowen.com/en/tags/devops/</link><description>Recent content in DevOps on Shaowen Chen's Website</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>&amp;copy;2016 - {year}, All Rights Reserved.</copyright><lastBuildDate>Fri, 23 Feb 2024 00:00:00 +0000</lastBuildDate><sy:updatePeriod>weekly</sy:updatePeriod><atom:link href="https://www.chenshaowen.com/en/tags/devops/atom.xml" rel="self" type="application/rss+xml"/><item><title>Introduction to Argo Core Components</title><link>https://www.chenshaowen.com/en/blog/introduction-to-argo-core-components.html</link><pubDate>Fri, 23 Feb 2024 00:00:00 +0000</pubDate><atom:modified>Fri, 23 Feb 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/introduction-to-argo-core-components.html</guid><description>1. Introduction to Argo Argo is an open source project that provides a set of tools on Kubernetes for building and running applications. The core components of Argo mainly include the following:
Argo CD Argo CD is a GitOps-based continuous delivery tool that allows users to declaratively manage the deployment of applications in a Kubernetes cluster.</description><dc:creator>微信公众号</dc:creator><category>Argo</category><category>Argo CD</category><category>Kubernetes</category><category>CICD</category><category>DevOps</category><category>Operations</category></item><item><title>The Scope of Credentials During Pipeline Builds</title><link>https://www.chenshaowen.com/en/blog/the-scope-of-credential-in-building.html</link><pubDate>Thu, 06 Jul 2023 00:00:00 +0000</pubDate><atom:modified>Thu, 06 Jul 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-scope-of-credential-in-building.html</guid><description>In the client, we have already seen the Docker CLI passing credentials to the Docker Daemon via X-Registry-Config when sending the build context. But recent build feedback still shows some phenomena that cannot be explained. This post mainly runs some basic tests to make troubleshooting easier.
1. Building under host Docker The Docker Daemon is started with root privileges.</description><dc:creator>微信公众号</dc:creator><category>CICD</category><category>DevOps</category><category>Docker</category><category>Credentials</category><category>Kubernetes</category><category>Operations</category><category>Troubleshooting</category></item><item><title>Tekton Optimization: A Custom Cluster Scheduler</title><link>https://www.chenshaowen.com/en/blog/custom-cluster-scheduler-to-optimize-tekton.html</link><pubDate>Wed, 26 Apr 2023 10:00:00 +0000</pubDate><atom:modified>Wed, 26 Apr 2023 10:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/custom-cluster-scheduler-to-optimize-tekton.html</guid><description>1. A Constrained Build Environment Cannot Meet Build Requirements Tekton is a CICD engine based on a Kubernetes cluster, and it is more cloud-native than Jenkins. In plain terms, that means it is easier to develop plugins for, easier to scale, easier to observe, and more fun.
Because code can only be stored on the company intranet, the build cluster can only be deployed on the office intranet.</description><dc:creator>微信公众号</dc:creator><category>Optimization</category><category>Tekton</category><category>CICD</category><category>DevOps</category><category>Kubernetes</category><category>Operations</category><category>Learning</category><category>Scheduling</category><category>Build</category><category>Multi-Cluster</category></item><item><title>Optimizing Tekton's Slow Clone Task, Saving About 30 Seconds</title><link>https://www.chenshaowen.com/en/blog/optimizing-the-slow-of-tekton-clone-task.html</link><pubDate>Thu, 16 Feb 2023 00:00:00 +0000</pubDate><atom:modified>Thu, 16 Feb 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/optimizing-the-slow-of-tekton-clone-task.html</guid><description>1. Symptom - Tekton&amp;rsquo;s Clone Task Is Slow When running the clone task, Tekton is very time-consuming; with multiple repositories it generally takes around 2 minutes 30 seconds. As shown below:
A pipeline that only clones takes 2 minutes 16 seconds to run, while the clone script itself actually runs for only 1-3 seconds.</description><dc:creator>微信公众号</dc:creator><category>Tekton</category><category>Kubernetes</category><category>CICD</category><category>DevOps</category><category>Operations</category><category>Performance Optimization</category></item><item><title>How Staged Builds Cache Third-Party Dependencies</title><link>https://www.chenshaowen.com/en/blog/how-to-cache-third-party-package-whilie-building-in-stage.html</link><pubDate>Tue, 22 Feb 2022 00:00:00 +0000</pubDate><atom:modified>Tue, 22 Feb 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-cache-third-party-package-whilie-building-in-stage.html</guid><description>In a non-staged build scenario, when we use a container to build, we can mount the cache directory inside the container onto the build host, run the build task, and then copy the artifacts into the runtime image to produce the application image. But with a staged build, the build image and the runtime image live in the same Dockerfile, which makes it harder to optimize the caching of third-party dependencies.</description><dc:creator>微信公众号</dc:creator><category>CICD</category><category>CI</category><category>DevOps</category><category>Cache</category><category>Optimization</category></item><item><title>A CICD Platform Based on Tekton</title><link>https://www.chenshaowen.com/en/blog/a-cicd-system-based-on-tekton.html</link><pubDate>Wed, 25 Aug 2021 00:00:00 +0000</pubDate><atom:modified>Wed, 25 Aug 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/a-cicd-system-based-on-tekton.html</guid><description>1. Background 1.1 Problems with the Current Use of Jenkins The orchestration engine is unstable Jenkins is an orchestration engine written in Java, and it stops the world (STW) during a full GC. Under large-scale builds, STW can prevent Jenkins from handling new requests.
Heavy builds stall Jenkins stores data in disk files; every pipeline and every build occupies a file directory, producing a huge number of files.</description><dc:creator>微信公众号</dc:creator><category>CICD</category><category>DevOps</category><category>Tekton</category><category>Kubernetes</category><category>Operations</category><category>Pipeline</category><category>Learning</category></item><item><title>How to Implement an Approval Feature in Tekton</title><link>https://www.chenshaowen.com/en/blog/how-to-implement-approval-function-in-tekton.html</link><pubDate>Thu, 24 Jun 2021 00:00:00 +0000</pubDate><atom:modified>Thu, 24 Jun 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-implement-approval-function-in-tekton.html</guid><description>1. Basic Features of a CICD Platform A common CICD engine is not suitable to hand directly to the business side. The main reasons are the high learning cost for users, the lack of necessary authentication, and the difficulty of maintenance and upgrades.
We usually build on top of a process engine, adapting it to the business to improve usability and encapsulating it for specific scenarios to reduce complexity.</description><dc:creator>微信公众号</dc:creator><category>Tekton</category><category>Kubernetes</category><category>CICD</category><category>DevOps</category><category>Operations</category></item><item><title>How to Customize Your Own Jenkins Image</title><link>https://www.chenshaowen.com/en/blog/how-to-customize-your-jenkins.html</link><pubDate>Sat, 05 Jun 2021 00:00:00 +0000</pubDate><atom:modified>Sat, 05 Jun 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-customize-your-jenkins.html</guid><description>1. How to Deploy Jenkins To make the tests below easier, let me first introduce two ways to deploy Jenkins. Here I use the shaowenchen/jenkins:2.277.4 image. In a production environment, you should replace it with the official jenkins/jenkins image or your own custom image.
1.1 Running with docker-compose The docker-compose.yaml file</description><dc:creator>微信公众号</dc:creator><category>DevOps</category><category>CICD</category><category>Jenkins</category><category>Docker</category><category>Operations</category></item><item><title>A Universal Pipeline Design</title><link>https://www.chenshaowen.com/en/blog/a-universal-design-for-pipeline.html</link><pubDate>Wed, 19 May 2021 00:00:00 +0000</pubDate><atom:modified>Wed, 19 May 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/a-universal-design-for-pipeline.html</guid><description>1. Decoupling the Engine to Unlock Pipeline Capabilities When designing a system, we often face a dilemma. Do we contain the complexity and offer a single, easy-to-use capability to the outside; or do we release the complexity and return flexibility to the user? This is a real test of product</description><dc:creator>微信公众号</dc:creator><category>Cloud Native</category><category>DevOps</category><category>CICD</category><category>Thoughts</category><category>R&amp;D</category></item><item><title>How Tekton Connects to Physical Machines for Builds</title><link>https://www.chenshaowen.com/en/blog/how-to-add-physical-machines-to-tekton.html</link><pubDate>Wed, 28 Apr 2021 00:00:00 +0000</pubDate><atom:modified>Wed, 28 Apr 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-add-physical-machines-to-tekton.html</guid><description>1. Why Physical Build Machines Are Needed In the article How to Add a Remote macOS Physical Machine for Jenkins Pipeline Builds, I described how to add a physical build machine in Jenkins. This was not a requirement I made up on a whim — at the time, real ToB commercial customers were actually asking for a solution.</description><dc:creator>微信公众号</dc:creator><category>Tekton</category><category>Cloud Native</category><category>Kubernetes</category><category>CICD</category><category>DevOps</category><category>Operations</category></item><item><title>Jenkins Services on Kubernetes Can Drop Docker Now</title><link>https://www.chenshaowen.com/en/blog/using-podman-to-build-images-under-kubernetes-and-jenkins.html</link><pubDate>Thu, 25 Feb 2021 00:00:00 +0000</pubDate><atom:modified>Thu, 25 Feb 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/using-podman-to-build-images-under-kubernetes-and-jenkins.html</guid><description>In principle, Jenkins can use Podman to build images in any Kubernetes cluster; this article uses Containerd as the example.
1. Dropping Docker Brings New Challenges to CICD In CICD scenarios, we often need to build and push images within a pipeline.
In an earlier document, Creating Jenkins Slaves Dynamically on Kubernetes, I described how mounting the /var/run/docker.</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>DevOps</category><category>CICD</category><category>Docker</category><category>Kubernetes</category><category>Podman</category></item><item><title>An Old Tree Blooms Anew - Cloud Native Buildpacks</title><link>https://www.chenshaowen.com/en/blog/a-sample-intro-to-cloud-native-buildpacks.html</link><pubDate>Fri, 05 Feb 2021 00:00:00 +0000</pubDate><atom:modified>Fri, 05 Feb 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/a-sample-intro-to-cloud-native-buildpacks.html</guid><description>1. Buildpacks, an Old Tree Blooms Anew The Buildpacks project was first started by Heroku in 2011 and was widely adopted by PaaS platforms such as Cloud Foundry. In an earlier document, Buildpack for PaaS Deployment, I demonstrated how to deploy a Django application to Heroku.
The shortcoming of Buildpacks was that the artifact it produced was in Droplet format, which could not be adapted directly to container platforms.</description><dc:creator>微信公众号</dc:creator><category>DevOps</category><category>Buildpack</category><category>Containers</category><category>Images</category></item><item><title>DevOps Toolchain: Argo CD</title><link>https://www.chenshaowen.com/en/blog/argocd-of-devops-tool-chain.html</link><pubDate>Thu, 04 Feb 2021 00:00:00 +0000</pubDate><atom:modified>Thu, 04 Feb 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/argocd-of-devops-tool-chain.html</guid><description>1. What Problem Argo CD Solves 1.1 Starting from GitOps GitOps originated from a blog post published by Weaveworks in 2017: GitOps - Operations by Pull Request. In it, Alexis introduced a deployment approach that treats Git as the single source of truth.
In GitOps practice, we need to define software infrastructure in a Git repository for management.</description><dc:creator>微信公众号</dc:creator><category>DevOps</category><category>ArgoCD</category><category>Kubernetes</category><category>CICD</category><category>GitOps</category><category>Operations</category><category>Learning</category><category>Deployment</category><category>Best Practices</category></item><item><title>10 Advanced GitHub Actions Tips You Should Know</title><link>https://www.chenshaowen.com/en/blog/10-tips-of-github-action.html</link><pubDate>Sun, 31 Jan 2021 00:00:00 +0000</pubDate><atom:modified>Sun, 31 Jan 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/10-tips-of-github-action.html</guid><description>If you already use GitHub Actions, this article will show you more interesting and useful ways to use it. By the time I finished writing, I had added several more workflows to my repositories.
1. Passing Parameters When a Workflow Runs When a workflow runs, you can allow parameters to be entered on the GitHub Actions page to control the execution logic.</description><dc:creator>微信公众号</dc:creator><category>GitHub</category><category>GitHub Actions</category><category>CICD</category><category>DevOps</category><category>R&amp;D</category></item><item><title>GitHub Actions Online Debugging Tool: debugger-action</title><link>https://www.chenshaowen.com/en/blog/a-debugger-for-actions.html</link><pubDate>Mon, 18 Jan 2021 00:00:00 +0000</pubDate><atom:modified>Mon, 18 Jan 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/a-debugger-for-actions.html</guid><description>1. Debugging Until You Want to Quit GitHub Actions is the continuous integration service GitHub launched in October 2018. For open-source projects it offers unlimited free build time, and it supports Linux, MacOs, and Windows systems, which makes it very appealing.
But a recent experience changed my view. I submitted a commit, improvement: build and ci, to a colleague&amp;rsquo;s repository, to improve its continuous build setup.</description><dc:creator>微信公众号</dc:creator><category>GitHub</category><category>Actions</category><category>DevOps</category><category>CICD</category><category>demo</category></item><item><title>GitHub Actions: Build a ChatOps System in Three Steps</title><link>https://www.chenshaowen.com/en/blog/using-github-actions-to-build-a-chatops-in-three-steps.html</link><pubDate>Wed, 06 Jan 2021 00:00:00 +0000</pubDate><atom:modified>Wed, 06 Jan 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/using-github-actions-to-build-a-chatops-in-three-steps.html</guid><description>In the previous post, Using ChatOps to Improve the R&amp;amp;D Process, providing preview links for Pull Requests through ChatOps improved our agility. This post describes how to implement this feature quickly.
1. Step One: Configure a Trigger 1.1 Choose a Trigger GitHub has three kinds of Workflow triggers: scheduled, manual, and automatic.</description><dc:creator>微信公众号</dc:creator><category>GitHub</category><category>GitHub Actions</category><category>R&amp;D</category><category>DevOps</category><category>ChatOps</category></item><item><title>Tekton Concepts - A Big Game of Chess</title><link>https://www.chenshaowen.com/en/blog/the-concept-of-tekton-a-big-game.html</link><pubDate>Sat, 12 Dec 2020 00:00:00 +0000</pubDate><atom:modified>Sat, 12 Dec 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-concept-of-tekton-a-big-game.html</guid><description>1. On the Aesthetics of CICD Tools In the document A Software Product Is the Output of a Team&amp;rsquo;s Capability, I mentioned that a software product is the delivery vehicle for a solution, and that its quality depends on the team&amp;rsquo;s understanding of the core problem. Only with a deep understanding of the domain can the delivered product have a chance of being good.</description><dc:creator>微信公众号</dc:creator><category>DevOps</category><category>Tekton</category><category>Kubernetes</category><category>CICD</category><category>Thoughts</category></item><item><title>Daemon-less Image Build Tool: Kaniko</title><link>https://www.chenshaowen.com/en/blog/the-daemon-less-tools-of-kaniko.html</link><pubDate>Fri, 11 Dec 2020 08:00:00 +0000</pubDate><atom:modified>Fri, 11 Dec 2020 08:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-daemon-less-tools-of-kaniko.html</guid><description>1. daemon-less Image Build Tools 1.1 What Is a daemon-less Image Build Tool In a CICD pipeline, image builds come up often, and the conventional approach is to build with Docker in Docker or Docker out of Docker. For details, see: How to Use Docker in Docker
In fact, to avoid monopolies and advance the industry, a unified OCI image format specification based on the Docker image format was defined long ago.</description><dc:creator>微信公众号</dc:creator><category>Kaniko</category><category>DevOps</category><category>Images</category><category>CICD</category><category>Kubernetes</category><category>Operations</category></item><item><title>How to Add Your Own Runner Hosts to GitHub Actions</title><link>https://www.chenshaowen.com/en/blog/how-to-add-self-hosted-runners-to-github-action.html</link><pubDate>Fri, 04 Dec 2020 00:00:00 +0000</pubDate><atom:modified>Fri, 04 Dec 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-add-self-hosted-runners-to-github-action.html</guid><description>1. What GitHub Actions Is In an earlier post I put the CI capabilities GitLab provides into practice — click here to see. The advantages of using GitLab are that it can be deployed privately, it allows an unlimited number of private repositories, its CI configuration is simple, and it can connect to self-hosted Runners.</description><dc:creator>微信公众号</dc:creator><category>GitHub</category><category>GitHub Actions</category><category>CICD</category><category>DevOps</category><category>Tools</category><category>R&amp;D</category><category>Operations</category></item><item><title>Download: Capability Maturity Model of DevOps</title><link>https://www.chenshaowen.com/en/blog/capability-maturity-model-of-devops.html</link><pubDate>Fri, 27 Nov 2020 00:00:00 +0000</pubDate><atom:modified>Fri, 27 Nov 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/capability-maturity-model-of-devops.html</guid><description>Unveiling the Capability Maturity Model of DevOps
R&amp;amp;D Operations (DevOps) Solution Capability Rating Requirements - PDF Download
Part 1: Overall Architecture - PDF Download
Part 2: Agile Development Management Process - PDF Download
Part 3: Continuous Delivery Process - PDF Download
Part 4: Technical Operations - PDF Download
Part 5: Application Design - PDF Download</description><dc:creator>微信公众号</dc:creator><category>DevOps</category><category>CICD</category><category>Standards</category><category>Models</category></item><item><title>How to Connect a Remote macOS Physical Machine for Jenkins Pipeline Builds</title><link>https://www.chenshaowen.com/en/blog/how-to-run-the-pipeline-on-remote-osx.html</link><pubDate>Sun, 22 Nov 2020 00:00:00 +0000</pubDate><atom:modified>Sun, 22 Nov 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-run-the-pipeline-on-remote-osx.html</guid><description>This article also applies to connecting physical machines with ARM or MIPS architectures and FreeBSD or Windows systems. If Jenkins can reach the build machine, you can skip the Frp part.
1. The Problem In scenarios where Kubernetes is the infrastructure, when Jenkins runs a build pipeline it creates a separate Pod for each pipeline for building.</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>macOS</category><category>CICD</category><category>CI</category><category>DevOps</category></item><item><title>KubeSphere DevOps 3.0 Pipeline Operations Guide</title><link>https://www.chenshaowen.com/en/blog/the-operation-guide-of-kubesphere-devops-3-0-pipeline.html</link><pubDate>Wed, 14 Oct 2020 00:00:00 +0000</pubDate><atom:modified>Wed, 14 Oct 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-operation-guide-of-kubesphere-devops-3-0-pipeline.html</guid><description>This post mainly covers how to operate and maintain a DevOps pipeline, and how to solve some common problems. The problems fall mainly into two categories: one is Kubernetes-related and fairly general in nature; the other is business-related and requires some understanding of the domain before you can solve problems</description><dc:creator>微信公众号</dc:creator><category>KubeSphere</category><category>Kubernetes</category><category>DevOps</category><category>Jenkins</category><category>Operations</category><category>CICD</category></item><item><title>KubeSphere DevOps 3.0 Pipeline Development Guide</title><link>https://www.chenshaowen.com/en/blog/the-development-guide-of-kubesphere-devops-3-0-pipeline.html</link><pubDate>Tue, 13 Oct 2020 00:00:00 +0000</pubDate><atom:modified>Tue, 13 Oct 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-development-guide-of-kubesphere-devops-3-0-pipeline.html</guid><description>KubeSphere DevOps consists of two parts: S2I and Pipeline. In the community, OpenShift provides an application packaging tool called S2I; for details, see Building Cloud-Native Applications with S2I
. KubeSphere turned it into a service, using a CRD managed by a separate Operator, and its functionality is fairly self-contained. In 3.</description><dc:creator>微信公众号</dc:creator><category>KubeSphere</category><category>Kubernetes</category><category>DevOps</category><category>Jenkins</category><category>Development Environment</category><category>R&amp;D</category><category>Operations</category></item><item><title>How to Use a Terraform Provider to Deliver Iac-Level Applications</title><link>https://www.chenshaowen.com/en/blog/how-to-use-terraform-to-provide-iac-platform.html</link><pubDate>Sat, 22 Aug 2020 00:00:00 +0000</pubDate><atom:modified>Sat, 22 Aug 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-use-terraform-to-provide-iac-platform.html</guid><description>1. Terraform Vs Kubernetes Infrastructure as Code (Iac) is built on immutable infrastructure: it uses orchestration tools to turn infrastructure into text, so you can manage infrastructure the way you manage code.
In 2018 I was working on SaaS development, deploying on the Kubernetes platform, and that was the year Terraform was very hot.</description><dc:creator>微信公众号</dc:creator><category>Terraform</category><category>Iac</category><category>Kubernetes</category><category>DevOps</category><category>CICD</category><category>R&amp;D</category></item><item><title>Jenkins X Is Not Jenkins, but a Tech Stack</title><link>https://www.chenshaowen.com/en/blog/jenkins-x-is-not-jenkins-but-stack.html</link><pubDate>Sun, 16 Aug 2020 00:00:00 +0000</pubDate><atom:modified>Sun, 16 Aug 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/jenkins-x-is-not-jenkins-but-stack.html</guid><description>1. Introduction to Jenkins X Relying on its massive plugin ecosystem, Jenkins currently holds most of the enterprise CICD engine market share. But in the cloud native era, Jenkins has also exposed many problems: a single point of service, disk storage, memory usage, and so on.
Around Kubernetes, Jenkins X offers a DevOps approach better suited to the cloud native era.</description><dc:creator>微信公众号</dc:creator><category>Tech Stack</category><category>Jenkins</category><category>Jenkins-X</category><category>Kubernetes</category><category>DevOps</category><category>CICD</category><category>Operations</category></item><item><title>Stress Test: Dynamically Creating Jenkins Agents on Kubernetes</title><link>https://www.chenshaowen.com/en/blog/the-stress-test-about-kubernetes-dynamically-creates-jenkins-agent.html</link><pubDate>Sun, 02 Aug 2020 00:00:00 +0000</pubDate><atom:modified>Sun, 02 Aug 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-stress-test-about-kubernetes-dynamically-creates-jenkins-agent.html</guid><description>In the previous document, we took advantage of the elasticity Kubernetes provides to dynamically create Jenkins Slaves on Kubernetes. This document is mainly a stress test of Jenkins under large-scale builds.
1. Cluster Configuration 1.1 Kubernetes Version The version used here is v1.16.7
1 2 3 4 kubectl version Client Version: version.</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>Kubernetes</category><category>DevOps</category><category>CICD</category><category>Testing</category><category>Operations</category></item><item><title>DevOps Essentials: A Business Perspective</title><link>https://www.chenshaowen.com/en/blog/book/the-essentials-of-devops.html</link><pubDate>Tue, 23 Jun 2020 00:00:00 +0000</pubDate><atom:modified>Tue, 23 Jun 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/book/the-essentials-of-devops.html</guid><description>Author: (Russia) Oleg Skrynnik
Publisher: Tsinghua University Press
Publication year: 2020-05-01
ISBN: 9787302547143
Notes:
As the title suggests, the book focuses on DevOps from a business perspective. From its origins to its foundations, from principles to practice, you can take something away at every level. DevOps rests on lean production (the Toyota production line) and agile development, with the value chain at its core.</description><dc:creator>微信公众号</dc:creator><category>Books</category><category>DevOps</category><category>CICD</category><category>R&amp;D</category></item><item><title>Analyzing the Lightweight Checkout Problem in Jenkins</title><link>https://www.chenshaowen.com/en/blog/the-question-of-lightweight-checkout-in-jenkins.html</link><pubDate>Mon, 22 Jun 2020 00:00:00 +0000</pubDate><atom:modified>Mon, 22 Jun 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/the-question-of-lightweight-checkout-in-jenkins.html</guid><description>1. What Problem We Hit A Jenkins build log threw an error:
1 2 3 4 5 6 Started by user admin Lightweight checkout support not available, falling back to full checkout. Checking out git https://github.com/shaowenchen/pipeline-test.git into /var/jenkins_home/workspace/abc@script to read Jenkinsfile ... ... Unable to access &amp;#39;.git/index.lock&amp;#39;: File exists. Cause analysis:</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>Git</category><category>DevOps</category><category>Troubleshooting</category></item><item><title>Build Artifacts and Cache in Jenkins</title><link>https://www.chenshaowen.com/en/blog/artifacts-and-cache-in-jenkins.html</link><pubDate>Sun, 21 Jun 2020 00:00:00 +0000</pubDate><atom:modified>Sun, 21 Jun 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/artifacts-and-cache-in-jenkins.html</guid><description>In a CICD flow, there are two main kinds of things that need to be saved: build artifacts and caches. Build artifacts are the final execution result, and caches exist to speed up the next build. This post mainly describes how to archive build artifacts and caches in Jenkins, along with a hands-on example backed by object storage.</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>S3</category><category>DevOps</category><category>Cache</category></item><item><title>Jenkins Plugin Development</title><link>https://www.chenshaowen.com/en/blog/how-to-develop-the-plugin-of-jenkins.html</link><pubDate>Sat, 20 Jun 2020 00:00:00 +0000</pubDate><atom:modified>Sat, 20 Jun 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-develop-the-plugin-of-jenkins.html</guid><description>Using Jenkins always means dealing with all kinds of plugins. To practice DevOps better, we should also be capable of developing plugins ourselves, so the whole process can converge inside Jenkins.
1. Jenkins Plugins 1.1 The Plugin Ecosystem Jenkins&amp;rsquo; predecessor Hudson started in 2004, and 16 years on it is still a mainstream CI/CD engine.</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>DevOps</category><category>CICD</category><category>R&amp;D</category><category>Plugin</category><category>Java</category><category>Learning</category></item><item><title>DevOps Toolchain: Prow</title><link>https://www.chenshaowen.com/en/blog/prow-of-devops-tool-chain.html</link><pubDate>Fri, 17 Apr 2020 13:17:44 +0000</pubDate><atom:modified>Fri, 17 Apr 2020 13:17:44 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/prow-of-devops-tool-chain.html</guid><description>1. About Prow In the GitHub repositories of well-known projects such as Kubernetes and Istio, we often see an xxx-bot user adding labels to issues and merging PRs. That bot account is driven by Prow.
Prow is a project of the Kubernetes Testing Special Interest Group and is currently part of kubernetes/test-infra.</description><dc:creator>微信公众号</dc:creator><category>DevOps</category><category>Prow</category><category>Kubernetes</category><category>CICD</category></item><item><title>Building an Automated Test System with Kubernetes and Jenkins</title><link>https://www.chenshaowen.com/en/blog/build-an-automated-test-system-using-kubernetes-and-jenkins.html</link><pubDate>Thu, 12 Dec 2019 00:00:00 +0000</pubDate><atom:modified>Thu, 12 Dec 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/build-an-automated-test-system-using-kubernetes-and-jenkins.html</guid><description>1. Test Layering The purpose of testing is to verify expected behavior and uncover latent defects. Testing strengthens confidence that a qualified product can be delivered, and it is what makes agile iteration possible. You could say that testing determines the development pace of a product.
The network model has the seven-layer OSI and the four-layer TCP, while development patterns include MTV, MVC, MVP, MVVM, and so on.</description><dc:creator>微信公众号</dc:creator><category>Testing</category><category>Automation</category><category>Kubernetes</category><category>Jenkins</category><category>DevOps</category><category>CICD</category><category>Operations</category></item><item><title>Dynamically Creating a Jenkins Slave on Kubernetes</title><link>https://www.chenshaowen.com/en/blog/creating-jenkins-slave-dynamically-on-kubernetes.html</link><pubDate>Fri, 06 Dec 2019 00:00:00 +0000</pubDate><atom:modified>Fri, 06 Dec 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/creating-jenkins-slave-dynamically-on-kubernetes.html</guid><description>1. Jenkins Working Modes Jenkins has a single-Master, multi-Slave architecture. The Master assigns tasks and manages services. Slaves execute the actual tasks. Even when multiple Masters are deployed, they remain independent of one another and cannot coordinate scheduling. A high-availability Jenkins solution requires an external task distribution framework, such as</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>Kubernetes</category><category>CICD</category><category>DevOps</category><category>Operations</category></item><item><title>Dial Testing Services with Jenkins</title><link>https://www.chenshaowen.com/en/blog/how-to-dial-up-testing-using-jenkins.html</link><pubDate>Wed, 04 Dec 2019 00:00:00 +0000</pubDate><atom:modified>Wed, 04 Dec 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-dial-up-testing-using-jenkins.html</guid><description>1. Why Dial Testing For some of the critical services in a system, we usually set up monitoring. When a failure occurs, it can be detected as quickly as possible and a notification sent to the people who care. Once a failure has occurred, the failure process can be traced</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>Dial Testing</category><category>Monitoring</category><category>DevOps</category><category>Operations</category></item><item><title>Code Quality Analysis Tool SonarQube</title><link>https://www.chenshaowen.com/en/blog/sonarqube-of-code-quality-analysis-tool.html</link><pubDate>Wed, 21 Aug 2019 00:00:00 +0000</pubDate><atom:modified>Wed, 21 Aug 2019 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/sonarqube-of-code-quality-analysis-tool.html</guid><description>1. Who Needs SonarQube Code review is an indispensable part of high-quality software development. It helps developers spot bugs in the code in time and improves code quality and maintainability. The dimensions of code review include language conventions, code style, and soundness of design. Checking these things by hand consumes</description><dc:creator>微信公众号</dc:creator><category>SonarQube</category><category>DevOps</category><category>CICD</category><category>R&amp;D</category><category>Code Quality</category></item><item><title>How to Build an Automated Deployment Pipeline for Django with Jenkins, Docker, and GitLab</title><link>https://www.chenshaowen.com/en/blog/how-to-use-jenkins-docker-gitlab-to-build-django-automated-deployment-process.html</link><pubDate>Sun, 25 Nov 2018 00:00:00 +0000</pubDate><atom:modified>Sun, 25 Nov 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-use-jenkins-docker-gitlab-to-build-django-automated-deployment-process.html</guid><description>One of the illusions that programmers at big companies easily fall into is mistaking platform capabilities for their own abilities. In a large team, we should not focus only on our own little patch of ground; we need to understand every part of the platform. On one hand, this helps us make better use of the platform&amp;rsquo;s features; on the other, it helps our own technical growth.</description><dc:creator>微信公众号</dc:creator><category>Django</category><category>GitLab</category><category>Jenkins</category><category>Docker</category><category>DevOps</category><category>CICD</category><category>R&amp;D</category><category>Operations</category></item><item><title>How to Use a CDN for Further Frontend/Backend Separation - CI Scripts</title><link>https://www.chenshaowen.com/en/blog/ci-script-of-how-to-use-cdn-to-separate-frontend-and-backend-more.html</link><pubDate>Sat, 15 Sep 2018 00:00:00 +0000</pubDate><atom:modified>Sat, 15 Sep 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/ci-script-of-how-to-use-cdn-to-separate-frontend-and-backend-more.html</guid><description>In a team, any change to the development workflow must be paired with the corresponding automation tooling. Without a low enough cost of use, the change is meaningless, because nobody will actually use it. In the previous post we covered how to use a CDN for further frontend/backend separation; this</description><dc:creator>微信公众号</dc:creator><category>CI</category><category>CDN</category><category>Optimization</category><category>Deployment</category><category>PaaS</category><category>Scripting</category><category>DevOps</category><category>R&amp;D</category></item><item><title>Robot Framework Advanced (2)</title><link>https://www.chenshaowen.com/en/blog/senior-of-robot-framework-2.html</link><pubDate>Thu, 16 Aug 2018 00:00:00 +0000</pubDate><atom:modified>Thu, 16 Aug 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/senior-of-robot-framework-2.html</guid><description>Settings Table The settings table in Robot Framework mainly serves two purposes. For a detailed explanation, see here. Import test, resource, and variable files. Define metadata. In the Setting table: 1 2 3 4 5 Library 引入库 Resource 引入资源文件 Variables 引入变</description><dc:creator>微信公众号</dc:creator><category>RobotFramework</category><category>Python</category><category>Testing</category><category>Automation</category><category>DevOps</category></item><item><title>Robot Framework Advanced (1)</title><link>https://www.chenshaowen.com/en/blog/senior-of-robot-framework-1.html</link><pubDate>Wed, 15 Aug 2018 00:00:00 +0000</pubDate><atom:modified>Wed, 15 Aug 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/senior-of-robot-framework-1.html</guid><description>pybot Command Run all test cases 1 pybot . Run a certain test suite 1 pybot testsuite.txt Run a test case in a certain test suite 1 pybot --test case_name testsuit.txt Output the test results to a fixed path 1 pybot --ouputdir your_ouput_dir testsuit.txt Run test cases that contain a</description><dc:creator>微信公众号</dc:creator><category>RobotFramework</category><category>Python</category><category>Testing</category><category>Automation</category><category>DevOps</category></item><item><title>How to Create GitLab Labels Automatically with python-gitlab</title><link>https://www.chenshaowen.com/en/blog/how-to-create-gitlab-label-using-python-gitlab.html</link><pubDate>Sun, 05 Aug 2018 10:00:00 +0000</pubDate><atom:modified>Sun, 05 Aug 2018 10:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-create-gitlab-label-using-python-gitlab.html</guid><description>Using GitLab issues for project management is a very Dev-friendly thing. Entering issues, opening Merge Requests, creating milestones — these all advance dynamically during development. But creating a pile of Labels for every new project is a headache. This article is mainly about solving that problem. 1. GitLab Label Before</description><dc:creator>微信公众号</dc:creator><category>GitLab</category><category>Python</category><category>Project Management</category><category>DevOps</category><category>R&amp;D</category></item><item><title>Jenkins Integrated Robot Framework Automated Testing</title><link>https://www.chenshaowen.com/en/blog/jenkins-integrated-robot-framework-testing.html</link><pubDate>Sun, 05 Aug 2018 00:00:00 +0000</pubDate><atom:modified>Sun, 05 Aug 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/jenkins-integrated-robot-framework-testing.html</guid><description>1. Installing a Headless Browser 1.1 Installing PhantomJS on CentOS Download and extract Visit Phantomjs, find the download link for Download phantomjs-2.1.1-linux-x86_64.tar.bz2, and copy it. Run the following commands on CentOS: 1 2 3 4 5 wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 # 如果没有安装 bzip2 可能会报</description><dc:creator>微信公众号</dc:creator><category>RobotFramework</category><category>Automation</category><category>Continuous Integration</category><category>Testing</category><category>DevOps</category><category>Jenkins</category><category>R&amp;D</category></item><item><title>Robot Framework Basics</title><link>https://www.chenshaowen.com/en/blog/basic-of-robot-framework.html</link><pubDate>Tue, 24 Jul 2018 00:00:00 +0000</pubDate><atom:modified>Tue, 24 Jul 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/basic-of-robot-framework.html</guid><description>This post mainly introduces some basic concepts of Robot Framework and how to write a test case. 1. Basic Elements 1.1 Keywords Robot Framework keywords are similar to functions. They are divided into system keywords and user-defined keywords. System keywords, imported by loading a Library User keywords, imported by loading</description><dc:creator>微信公众号</dc:creator><category>Python</category><category>Testing</category><category>RobotFramework</category><category>DevOps</category><category>Learning</category><category>Automated Testing</category><category>R&amp;D</category><category>CICD</category></item><item><title>Some Common CI Scripts</title><link>https://www.chenshaowen.com/en/blog/some-common-scripts-in-ci.html</link><pubDate>Tue, 17 Jul 2018 00:00:00 +0000</pubDate><atom:modified>Tue, 17 Jul 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/some-common-scripts-in-ci.html</guid><description>Because I am responsible for the team&amp;rsquo;s shared CI matters, I often need to configure CI pipelines or help others solve problems, so I put together the CI scripts I use most often for easy reference. 1. Structure of .gitlab-ci.yml Below is the structure of a GitLab CI configuration file.</description><dc:creator>微信公众号</dc:creator><category>GitLab</category><category>GitLab-CI</category><category>CI</category><category>DevOps</category><category>Continuous Integration</category><category>R&amp;D</category></item><item><title>Configuring the GitLab CI Runner</title><link>https://www.chenshaowen.com/en/blog/gitlab-ci-configuring-runner.html</link><pubDate>Tue, 08 May 2018 00:00:00 +0000</pubDate><atom:modified>Tue, 08 May 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/gitlab-ci-configuring-runner.html</guid><description>1. Downloading and Configuring the Runner 1.1 Downloading the Runner The GitLab CI Runner is a program package written in Go; you can download it from the official site to your local machine.
1 2 yum install -y wget wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 Add execute permission
1 chmod +x /usr/local/bin/gitlab-runner 1.</description><dc:creator>微信公众号</dc:creator><category>GitLab</category><category>GitLab-CI</category><category>CI</category><category>Runner</category><category>DevOps</category><category>Operations</category></item><item><title>Frontend Webpack Practice of GitLab CI</title><link>https://www.chenshaowen.com/en/blog/front-webpack-practice-of-gitlab-ci.html</link><pubDate>Wed, 08 Nov 2017 09:15:56 +0000</pubDate><atom:modified>Wed, 08 Nov 2017 09:15:56 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/front-webpack-practice-of-gitlab-ci.html</guid><description>Starting with GitLab 8.0, GitLab began integrating CI (Continuous Integration) functionality. You only need to add a Runner on the server and a .gitlab-ci.yml file in the project, and you can run CI. In GitLab Setup and Configuration I recorded the whole process of setting up a GitLab service from</description><dc:creator>微信公众号</dc:creator><category>Frontend</category><category>Continuous Integration</category><category>Tools</category><category>DevOps</category><category>GitLab</category><category>CICD</category></item><item><title>Jenkins Pipeline Usage and Debugging</title><link>https://www.chenshaowen.com/en/blog/jenkins-pipeline-usging-and-debug.html</link><pubDate>Mon, 14 Aug 2017 13:13:55 +0000</pubDate><atom:modified>Mon, 14 Aug 2017 13:13:55 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/jenkins-pipeline-usging-and-debug.html</guid><description>1. Basic Concepts master master is where Jenkins is installed and runs; it is responsible for parsing job scripts, handling tasks, and scheduling compute resources. agent agent is responsible for handling tasks dispatched from master; the actual operations are executed through an executor. executor An executor is the compute resource</description><dc:creator>微信公众号</dc:creator><category>Jenkins</category><category>Pipeline</category><category>Continuous Integration</category><category>DevOps</category><category>CICD</category><category>Debugging</category><category>R&amp;D</category></item><item><title>Setting Up and Configuring GitLab</title><link>https://www.chenshaowen.com/en/blog/build-and-configure-of-gitlab.html</link><pubDate>Sat, 12 Aug 2017 00:51:07 +0000</pubDate><atom:modified>Sat, 12 Aug 2017 00:51:07 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/build-and-configure-of-gitlab.html</guid><description>1. Introduction GitLab is an open-source application developed with Ruby on Rails. It implements self-hosted Git project repositories, and public or private projects can be accessed through a web interface. It has features similar to GitHub, and can browse source code, manage defects and comments. It can manage team access</description><dc:creator>微信公众号</dc:creator><category>Tools</category><category>Management</category><category>Continuous Integration</category><category>GitLab</category><category>DevOps</category><category>Operations</category></item><item><title>Docker Basics</title><link>https://www.chenshaowen.com/en/blog/basis-of-docker.html</link><pubDate>Fri, 28 Jul 2017 15:30:00 +0000</pubDate><atom:modified>Fri, 28 Jul 2017 15:30:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/basis-of-docker.html</guid><description>1. What Docker Is Docker was born in early 2013 as a side project inside dotCloud (the former name of Docker Inc.). Its source code is hosted on GitHub, it is written in Go, and it follows the Apache 2.0 open-source license.
The goal of the Docker project is to provide a lightweight operating system virtualization solution.</description><dc:creator>微信公众号</dc:creator><category>PaaS</category><category>DevOps</category><category>Docker</category><category>Containers</category><category>Learning</category></item><item><title>Jenkins Integrated GitHub Development</title><link>https://www.chenshaowen.com/en/blog/jenkins-integrated-github-development.html</link><pubDate>Tue, 18 Jul 2017 21:29:41 +0000</pubDate><atom:modified>Tue, 18 Jul 2017 21:29:41 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/jenkins-integrated-github-development.html</guid><description>1. Basic Concepts Continuous Integration Continuous integration emphasizes that once developers commit new code, a build and (unit) test run immediately. From the test results we can determine whether the new code and the existing code integrate correctly. Continuous Delivery Building on continuous integration, continuous delivery deploys the integrated code</description><dc:creator>微信公众号</dc:creator><category>Tools</category><category>Development</category><category>Jenkins</category><category>GitHub</category><category>CI</category><category>DevOps</category><category>R&amp;D</category></item></channel></rss>