<?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>CICD on Shaowen Chen's Website</title><link>https://www.chenshaowen.com/en/tags/cicd/</link><description>Recent content in CICD 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, 17 Jan 2025 00:00:00 +0000</lastBuildDate><sy:updatePeriod>weekly</sy:updatePeriod><atom:link href="https://www.chenshaowen.com/en/tags/cicd/atom.xml" rel="self" type="application/rss+xml"/><item><title>Building Multi-Arch Images with Nerdctl</title><link>https://www.chenshaowen.com/en/blog/use-nerdctl-to-build-multi-architecture-images.html</link><pubDate>Fri, 17 Jan 2025 00:00:00 +0000</pubDate><atom:modified>Fri, 17 Jan 2025 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/use-nerdctl-to-build-multi-architecture-images.html</guid><description>1. Installing Nerdctl Install Opscli 1 curl -sfL https://raw.githubusercontent.com/shaowenchen/ops/main/getcli.sh |VERSION=latest sh - Install Nerdctl 1 opscli task -f install-nerdctl --arch amd64 2. BuildKit Download Buildkit 1 wget https://github.com/moby/buildkit/releases/download/v0.19.0-rc2/buildkit-v0.19.0-rc2.linux-amd64.tar.gz Install Buildkit 1 2 tar xvf buildkit-*.tar.gz mv bin/* /usr/local/bin/ Configure Buildkitd 1 mkdir -p /etc/buildkit /data/buildkit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cat &amp;gt; /etc/buildkit/buildkitd.</description><dc:creator>微信公众号</dc:creator><category>Multi-Arch</category><category>Images</category><category>CI</category><category>Nerdctl</category><category>Kubernetes</category><category>Operations</category><category>Learning</category><category>CICD</category><category>containerd</category><category>Build</category></item><item><title>Event-Driven Workflows with Argo Events</title><link>https://www.chenshaowen.com/en/blog/event-driven-workflow-using-argo-events.html</link><pubDate>Wed, 27 Mar 2024 00:00:00 +0000</pubDate><atom:modified>Wed, 27 Mar 2024 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/event-driven-workflow-using-argo-events.html</guid><description>1. How Argo Events Works The diagram above is from the official Argo Events website. An event processing system has three important parts:
Ingesting event sources, which corresponds to the Event Source Distributing events, which corresponds to the Event Sensor Consuming events, which corresponds to the Event Trigger The event messages are stored in the EventBus, which uses NATS by default.</description><dc:creator>微信公众号</dc:creator><category>Argo</category><category>Argo Events</category><category>Kubernetes</category><category>CICD</category><category>Event-Driven</category><category>Operations</category></item><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>Zero-Cost Service Availability Monitoring with Upptime</title><link>https://www.chenshaowen.com/en/blog/monitor-service-accessibility-with-upptime-for-free.html</link><pubDate>Sat, 12 Aug 2023 00:00:00 +0000</pubDate><atom:modified>Sat, 12 Aug 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/monitor-service-accessibility-with-upptime-for-free.html</guid><description>1. What Needs Dial Testing GPT was all the rage this year, and I deployed and developed several applications and mini programs to learn from. Of course, following the principle of helping vendors test their features, right now only the GPT 3.5 API costs a little every day — the</description><dc:creator>微信公众号</dc:creator><category>GitHub</category><category>Actions</category><category>Monitoring</category><category>Dial Testing</category><category>Operations</category><category>Learning</category><category>Availability</category><category>Free</category><category>CICD</category><category>Best Practices</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>Troubleshooting Slow IO When Building Images</title><link>https://www.chenshaowen.com/en/blog/troubleshoot-slow-io-when-building-dockerfile.html</link><pubDate>Thu, 02 Feb 2023 00:00:00 +0000</pubDate><atom:modified>Thu, 02 Feb 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/troubleshoot-slow-io-when-building-dockerfile.html</guid><description>1. The Problem Project details:
File size 5.6 GB File count 529352 Dockerfile
1 2 3 FROM golang:1.13 COPY ./ /go/src/code The build command and its output are as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 time DOCKER_BUILDKIT=1 docker build --no-cache -t test:v3 -f Dockerfile .</description><dc:creator>微信公众号</dc:creator><category>Docker</category><category>Images</category><category>CICD</category><category>Build</category><category>Troubleshooting</category><category>Operations</category></item><item><title>Run mv Is Slower Than cp in a Dockerfile</title><link>https://www.chenshaowen.com/en/blog/run-mv-is-slower-than-cp-in-dockerfile.html</link><pubDate>Mon, 30 Jan 2023 00:00:00 +0000</pubDate><atom:modified>Mon, 30 Jan 2023 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/run-mv-is-slower-than-cp-in-dockerfile.html</guid><description>Unlike on CentOS or Ubuntu, where we feel that mv is faster than cp, when you build an image with a Dockerfile, using Run cp is faster than Run mv. This post presents the test and verification data behind that.
1. Test Setup Machine environment Ubuntu 20.04.1 LTS
32C</description><dc:creator>微信公众号</dc:creator><category>Docker</category><category>Containers</category><category>CICD</category><category>Images</category><category>Operations</category></item><item><title>Tekton Stress Testing and Build Cluster Parameter Optimization</title><link>https://www.chenshaowen.com/en/blog/tekton-stress-test-and-optimize-k8s-cluster.html</link><pubDate>Thu, 10 Nov 2022 00:00:00 +0000</pubDate><atom:modified>Thu, 10 Nov 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/tekton-stress-test-and-optimize-k8s-cluster.html</guid><description>1. Purpose of the Test Tune the parameters of the build cluster Probe the upper limit on the number of concurrent Tekton pipelines Give the optimal concurrency limit for a single cluster 2. Related Components and Machine Configuration Kubernetes version v1.21.4
Tekton version v0.24.1, kept consistent with production
OpenEBS version localpv version 3.</description><dc:creator>微信公众号</dc:creator><category>Tekton</category><category>Kubernetes</category><category>Stress Testing</category><category>Large Clusters</category><category>Optimization</category><category>CICD</category><category>Operations</category></item><item><title>An Image Management and Distribution Scheme Based on Harbor and Registry</title><link>https://www.chenshaowen.com/en/blog/a-image-management-and-distribution-case-based-on-harbor-and-registry.html</link><pubDate>Sat, 16 Jul 2022 00:00:00 +0000</pubDate><atom:modified>Sat, 16 Jul 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/a-image-management-and-distribution-case-based-on-harbor-and-registry.html</guid><description>1. The Challenge of a Cross-Region Harbor If all you need is to store image data in a simple way, Registry is an excellent choice as an image repository. Registry not only supports multiple storage backends, but can also be configured with HTTPS certificates and access credentials. Worth noting: Harbor</description><dc:creator>微信公众号</dc:creator><category>Harbor</category><category>Registry</category><category>Images</category><category>Distribution</category><category>Kubernetes</category><category>Operations</category><category>Learning</category><category>Multi-Region</category><category>Acceleration</category><category>CICD</category></item><item><title>How to Inspect Tekton Pipeline Metrics</title><link>https://www.chenshaowen.com/en/blog/how-to-insight-the-pipeline-of-tekton.html</link><pubDate>Tue, 07 Jun 2022 00:00:00 +0000</pubDate><atom:modified>Tue, 07 Jun 2022 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-insight-the-pipeline-of-tekton.html</guid><description>1. Scraping Tekton Metrics Add a ConfigMap configuration file 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 cat &amp;lt;&amp;lt;EOF | kubectl apply -f - apiVersion: v1 kind: ConfigMap metadata: name: config-observability namespace: tekton-pipelines labels: app.kubernetes.io/instance: default app.kubernetes.io/part-of: tekton-pipelines data: metrics.backend-destination: prometheus metrics.taskrun.level: &amp;#34;task&amp;#34; metrics.</description><dc:creator>微信公众号</dc:creator><category>Kubernetes</category><category>Tekton</category><category>Monitoring</category><category>Metrics</category><category>CICD</category><category>Operations</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>Developing a WeChat Official Account Backend with Tencent Cloud Serverless</title><link>https://www.chenshaowen.com/en/blog/develop-a-wechat-backend-using-tencent-serverless.html</link><pubDate>Sat, 28 Aug 2021 00:00:00 +0000</pubDate><atom:modified>Sat, 28 Aug 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/develop-a-wechat-backend-using-tencent-serverless.html</guid><description>1. Where Serverless Fits If cloud computing is meant to make resources flow like tap water — turn it on and use it, turn it off and it stops — then Serverless is one of the future directions of cloud computing. Compared with runtimes such as IaaS and Kubernetes, Serverless</description><dc:creator>微信公众号</dc:creator><category>GitHub</category><category>CICD</category><category>Serverless</category><category>WeChat</category><category>R&amp;D</category><category>Operations</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>Tekton Pipelines Across Multiple Clusters</title><link>https://www.chenshaowen.com/en/blog/using-kubefed-to-distribute-tekton-resource-cross-cluster.html</link><pubDate>Sat, 26 Jun 2021 00:00:00 +0000</pubDate><atom:modified>Sat, 26 Jun 2021 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/using-kubefed-to-distribute-tekton-resource-cross-cluster.html</guid><description>1. The Advantages of Multi-Cluster Tekton Builds Thanks to Kubernetes, Tekton already has good elasticity and can support large-scale builds. At the same time, developing Tasks mainly uses Yaml and Shell, which widens the range of scenarios Tekton can adapt to.
The figure above is a sketch of Tekton across multiple clusters.</description><dc:creator>微信公众号</dc:creator><category>Tekton</category><category>KubeFed</category><category>Kubernetes</category><category>Multi-Cluster</category><category>CICD</category><category>Operations</category><category>Learning</category><category>Pipeline</category><category>Build</category><category>Distributed Systems</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>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>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>How to Use Docker in Docker</title><link>https://www.chenshaowen.com/en/blog/how-to-use-docker-in-docker.html</link><pubDate>Sat, 21 Nov 2020 00:00:00 +0000</pubDate><atom:modified>Sat, 21 Nov 2020 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-use-docker-in-docker.html</guid><description>1. Typical Use Cases In CI, there is usually a CI Engine responsible for parsing the pipeline and controlling the whole build process, while the actual build is delegated to an Agent. Jenkins and GitLab both work this way.
As shown below, there are many kinds of Agents that connect to the CI Engine.</description><dc:creator>微信公众号</dc:creator><category>Docker</category><category>Kubernetes</category><category>Containers</category><category>CI</category><category>CICD</category><category>Operations</category><category>Learning</category><category>DinD</category><category>Build</category><category>Jenkins</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>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>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>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 Package a Robot Framework Docker Image</title><link>https://www.chenshaowen.com/en/blog/how-to-package-a-docker-image-of-robot-framework.html</link><pubDate>Tue, 18 Sep 2018 00:00:00 +0000</pubDate><atom:modified>Tue, 18 Sep 2018 00:00:00 +0000</atom:modified><guid>https://www.chenshaowen.com/en/blog/how-to-package-a-docker-image-of-robot-framework.html</guid><description>To make it easier for CI to integrate UI automation tests, the Robot Framework runtime needs to be packaged as a Docker image. This post covers the configuration and scripts involved in the packaging process. 1. Packaging Directory Structure 1 2 3 4 5 6 tree . ├──</description><dc:creator>微信公众号</dc:creator><category>Docker</category><category>RobotFramework</category><category>Python</category><category>Testing</category><category>CICD</category><category>Operations</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>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></channel></rss>