<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CLI Tools on Prow</title>
    <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/</link>
    <description>Recent content in CLI Tools on Prow</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>checkconfig</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/checkconfig/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/checkconfig/</guid>
      <description>&lt;p&gt;&lt;code&gt;checkconfig&lt;/code&gt; loads the Prow configuration given with &lt;code&gt;--config-path&lt;/code&gt;,&#xA;&lt;code&gt;--job-config-path&lt;/code&gt; and &lt;code&gt;--plugin-config&lt;/code&gt; in order to validate it.&#xA;Use &lt;code&gt;checkconfig&lt;/code&gt; as a pre-submit for any repository holding Prow&#xA;configuration to ensure that check-ins do not break anything.&lt;/p&gt;</description>
    </item>
    <item>
      <title>config-bootstrapper</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/config-bootstrapper/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/config-bootstrapper/</guid>
      <description>&lt;p&gt;&lt;code&gt;config-bootstrapper&lt;/code&gt; is used to bootstrap a configuration that would be incrementally updated by the&#xA;config-updater Prow plugin.&lt;/p&gt;&#xA;&lt;p&gt;When a set of configurations do not exist (for example, on a clean redeployment or in a disaster&#xA;recovery situation), the config-updater plugin is not useful as it can only upload incremental&#xA;updates. This tool is meant to be used in those situations to set up the config to the correct&#xA;base state and hand off ownership to the plugin for updates.&lt;/p&gt;</description>
    </item>
    <item>
      <title>generic-autobumper</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/generic-autobumper/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/generic-autobumper/</guid>
      <description>&lt;p&gt;This tool automates the version upgrading of images such as the &lt;a href=&#34;https://prow.k8s.io&#34;&gt;prow.k8s.io&lt;/a&gt; Prow deployment.&#xA;Its workflow is:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Given a local git repo containing the manifests of Prow component deployment,&#xA;e.g., &lt;a href=&#34;https://github.com/kubernetes-sigs/prow/tree/main/config/prow/cluster&#34;&gt;/config/prow/cluster&lt;/a&gt; folder in this repo.&lt;/li&gt;&#xA;&lt;li&gt;Find out the most recent tags of given prefixes in &lt;code&gt;gcr.io&lt;/code&gt; registry&#xA;and modify the yaml files with them.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;git-commit&lt;/code&gt; the change, push it to the remote repo, and create/update a PR,&#xA;e.g., &lt;a href=&#34;https://github.com/kubernetes/test-infra/pull/14249&#34;&gt;test-infra/pull/14249&lt;/a&gt;, for the change.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The cluster admins can upgrade the version of images by approving the PR.&lt;/p&gt;</description>
    </item>
    <item>
      <title>invitations-accepter</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/invitations-accepter/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/invitations-accepter/</guid>
      <description>&lt;p&gt;The &lt;code&gt;invitations-accepter&lt;/code&gt; tool approves all pending repository invitations.&lt;/p&gt;&#xA;&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;example&lt;/em&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;invitations-accepter --dry-run&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;false&lt;/span&gt; --github-token-path&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;/etc/github/oauth&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;using with GitHub Apps&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;invitations-accepter --dry-run&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;false&lt;/span&gt; --github-app-id&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;12345&lt;/span&gt; --github-app-private-key-path&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;/etc/github/cert&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>mkpj</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/mkpj/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/mkpj/</guid>
      <description>&lt;p&gt;This is a placeholder page. Some contents needs to be filled.&lt;/p&gt;</description>
    </item>
    <item>
      <title>mkpod</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/mkpod/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/mkpod/</guid>
      <description>&lt;p&gt;This is a placeholder page. Some contents needs to be filled.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Peribolos</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/peribolos/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/peribolos/</guid>
      <description>&lt;p&gt;Peribolos allows the org settings, teams and memberships to be declared in a yaml file. GitHub is then updated to match the declared configuration.&lt;/p&gt;&#xA;&lt;p&gt;See the &lt;a href=&#34;https://github.com/kubernetes/org&#34;&gt;kubernetes/org&lt;/a&gt; repo, in particular the &lt;a href=&#34;https://github.com/kubernetes/org/tree/master/cmd/merge&#34;&gt;merge&lt;/a&gt; and &lt;a href=&#34;https://github.com/kubernetes/org/blob/master/admin/update.sh&#34;&gt;&lt;code&gt;update.sh&lt;/code&gt;&lt;/a&gt; parts of that repo for this tool in action.&lt;/p&gt;&#xA;&lt;p&gt;Peribolos was the subject of a KubeCon talk: &lt;a href=&#34;https://www.youtube.com/watch?v=te3Xj2zr1Co&#34;&gt;How Kubernetes Uses GitOps to Manage GitHub Communities at Scale&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;etymology&#34;&gt;Etymology&lt;/h3&gt;&#xA;&lt;p&gt;A &lt;a href=&#34;https://en.wikipedia.org/wiki/Peribolos&#34;&gt;peribolos&lt;/a&gt; is a wall that encloses a court in Greek/Roman architecture.&lt;/p&gt;&#xA;&lt;h2 id=&#34;org-configuration&#34;&gt;Org configuration&lt;/h2&gt;&#xA;&lt;p&gt;Extend the primary prow &lt;a href=&#34;https://github.com/kubernetes/test-infra/blob/master/config/prow/config.yaml&#34;&gt;&lt;code&gt;config.yaml&lt;/code&gt;&lt;/a&gt; document to include a top-level &lt;code&gt;orgs&lt;/code&gt; key that looks like the following:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Phony</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/phony/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/cli-tools/phony/</guid>
      <description>&lt;p&gt;&lt;code&gt;phony&lt;/code&gt; sends fake GitHub webhooks.&lt;/p&gt;&#xA;&lt;h2 id=&#34;running-a-github-event-manager&#34;&gt;Running a GitHub event manager&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;phony&lt;/code&gt; is most commonly used for testing &lt;a href=&#34;https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/hook/&#34;&gt;&lt;code&gt;hook&lt;/code&gt;&lt;/a&gt; and its &lt;a href=&#34;https://deploy-preview-674--k8s-prow.netlify.app/docs/components/plugins/&#34;&gt;plugins&lt;/a&gt;, but can be used for testing any externally exposed service configured to receive GitHub events (external plugins).&lt;/p&gt;&#xA;&lt;p&gt;To get an idea of &lt;code&gt;phony&lt;/code&gt;&amp;rsquo;s behavior, start a local instance of &lt;code&gt;hook&lt;/code&gt; with&#xA;this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;go run cmd/hook/main.go \&#xA; --config-path=config/prow/config.yaml \&#xA; --plugin-config=config/prow/plugins.yaml \&#xA; --hmac-secret-file=path/to/hmac \&#xA; --github-token-path=path/to/github-token&#xA;&#xA;# Note:&#xA;# --hmac-secret-file is required for running locally, use the same hmac token for phony below&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;&#xA;&lt;p&gt;Once you have a running server that manages github webhook events, generate an&#xA;&lt;code&gt;hmac&lt;/code&gt; token (same process as in &lt;a href=&#34;https://deploy-preview-674--k8s-prow.netlify.app/docs/overview/&#34;&gt;prow&lt;/a&gt;), and point a &lt;code&gt;phony&lt;/code&gt; pull&#xA;request event at it with the following:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
