<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>批量 on Foam 的博客</title>
    <link>https://blog.foamzou.com/tags/%E6%89%B9%E9%87%8F/</link>
    <description>Recent content in 批量 on Foam 的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 04 Sep 2022 23:24:31 +0800</lastBuildDate>
    <atom:link href="https://blog.foamzou.com/tags/%E6%89%B9%E9%87%8F/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>自动化批量修改 Github 的 repo</title>
      <link>https://blog.foamzou.com/posts/batch-modify-github-repo/</link>
      <pubDate>Sun, 04 Sep 2022 23:24:31 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/batch-modify-github-repo/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;好久没有写博客了，今年才写了 2 篇，但并不是说我在创作方面懒惰了，反而今年写了一个还算不错的开源项目(后面会写一系列文章记录我在做这个开源项目遇到的技术问题和一些人文)。可能空闲时间的精力倾斜到开源项目，导致博客投入不多吧。Anyway，本文也是我先发在公司 notion 的，先抄自己一篇，不那么费神。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;背景&#34;&gt;背景&lt;/h2&gt;
&lt;p&gt;One day，公司要求所有的 repo 都要在 Jenkins 打开 sonar 的配置，这需要我们给 repo 的 Jenkins 文件添加多一个配置，然后提 PR。天呐，我们 team 有 7-80 个 repo ，简直是噩梦。所以，我们需要自动化。automizely！&lt;/p&gt;
&lt;h2 id=&#34;flow&#34;&gt;Flow&lt;/h2&gt;
&lt;p&gt;先来看看我司的 git flow，就是标准的 github flow。下图所示的 1 - 4 步骤的自动化都比较好实现，不涉及到复杂的逻辑。比较复杂的在于 clone 到本地后，需要自己写代码来批量修改每个 repo 的文件。对于后者，每次的逻辑都不太一样，自行实现即可。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/batch-modify-github-repo/batch-modify-github-repo.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;步骤&#34;&gt;步骤&lt;/h2&gt;
&lt;h3 id=&#34;1-准备-repo-list-文件&#34;&gt;1. 准备 repo list 文件&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;我们将需要处理的 repo 放到一个文件里，例如 &lt;code&gt;all-repo.txt&lt;/code&gt; ，每行是一个 repo 名。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;repo-name1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;repo-name2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;repo-name3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2. 将 &lt;code&gt;all-repo.txt&lt;/code&gt; 复制一份为 &lt;code&gt;all-repo-cur.txt&lt;/code&gt; , 等会我们的脚本就用这份 &lt;code&gt;cur&lt;/code&gt; ，目的是等会处理过程中可能会因为中间有个 repo 意外失败，需要重新跑，我们就可以把已经成功的 repo 从 &lt;code&gt;cur&lt;/code&gt; 文件中移除。注意 &lt;code&gt;cur&lt;/code&gt; 文件最后一行必须是空行，避免 shell 命令读取不到最后一行的 repo&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
