<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tide on Prow</title>
    <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/</link>
    <description>Recent content in Tide on Prow</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Configuring Tide</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/config/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/config/</guid>
      <description>&lt;p&gt;Configuration of Tide is located under the &lt;a href=&#34;https://github.com/kubernetes/test-infra/blob/master/config/prow/config.yaml&#34;&gt;config/prow/config.yaml&lt;/a&gt; file. All configuration for merge behavior and criteria belongs in the &lt;code&gt;tide&lt;/code&gt; yaml struct, but it may be necessary to also configure presubmits for Tide to run against PRs (see &lt;a href=&#34;https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/config/#configuring-presubmit-jobs&#34;&gt;&amp;lsquo;Configuring Presubmit Jobs&amp;rsquo;&lt;/a&gt; below).&lt;/p&gt;&#xA;&lt;p&gt;This document will describe the fields of the &lt;code&gt;tide&lt;/code&gt; configuration and how to populate them, but you can also check out the &lt;a href=&#34;https://godoc.org/github.com/kubernetes/test-infra/prow/config#Tide&#34;&gt;GoDocs&lt;/a&gt; for the most up to date configuration specification.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Maintainer&#39;s Guide to Tide</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/maintainers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/maintainers/</guid>
      <description>&lt;h2 id=&#34;best-practices&#34;&gt;Best practices&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Don&amp;rsquo;t let humans (or other bots) merge especially if tests have a long duration. Every merge invalidates currently running tests for that pool.&lt;/li&gt;&#xA;&lt;li&gt;Try to limit the total number of queries that you configure. Individual queries can cover many repos and include many criteria without using additional API tokens, but separate queries each require additional API tokens.&lt;/li&gt;&#xA;&lt;li&gt;Ensure that merge requirements configured in GitHub match the merge requirements configured for Tide. If the requirements differ, Tide may try to merge a PR that GitHub considers unmergeable.&lt;/li&gt;&#xA;&lt;li&gt;If you are using the &lt;code&gt;lgtm&lt;/code&gt; plugin and requiring the &lt;code&gt;lgtm&lt;/code&gt; label for merge, don&amp;rsquo;t make queries exclude the &lt;code&gt;needs-ok-to-test&lt;/code&gt; label. The &lt;code&gt;lgtm&lt;/code&gt; plugin triggers one round of testing when applied to an untrusted PR and removes the &lt;code&gt;lgtm&lt;/code&gt; label if the PR changes so it indicates to Tide that the current version of the PR is considered trusted and can be retested safely.&lt;/li&gt;&#xA;&lt;li&gt;Do not enable the &amp;ldquo;Require branches to be up to date before merging&amp;rdquo; GitHub setting for repos managed by Tide. This requires all PRs to be rebased before merge so that PRs are always simple fast-forwards. This is a simplistic way to ensure that PRs are tested against the most recent base branch commit, but Tide already provides this guarantee through a more sophisticated mechanism that does not force PR authors to rebase their PR whenever another PR merges first. Enabling this GH setting may cause unexpected Tide behavior, provides absolutely no benefit over Tide&amp;rsquo;s natural behavior, and forces PR author&amp;rsquo;s to needlessly rebase their PRs. Don&amp;rsquo;t use it on Tide managed repos.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;expected-behavior-that-might-seem-strange&#34;&gt;Expected behavior that might seem strange&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Any merge to a pool kicks all other PRs in the pool back into &lt;code&gt;Queued for retest&lt;/code&gt;. This is because Tide requires PRs to be tested against the most recent base branch commit in order to be merged. When a merge occurs, the base branch updates so any existing or in-progress tests can no longer be used to qualify PRs for merge. All remaining PRs in the pool must be retested.&lt;/li&gt;&#xA;&lt;li&gt;Waiting to merge a successful PR because a batch is pending. This is because Tide prioritizes batches over individual PRs and the previous point tells us that merging the individual PR would invalidate the pending batch. In this case Tide will wait for the batch to complete and will merge the individual PR only if the batch fails. If the batch succeeds, the batch is merged.&lt;/li&gt;&#xA;&lt;li&gt;If the merge requirements for a pool change it may be necessary to &amp;ldquo;poke&amp;rdquo; or &amp;ldquo;bump&amp;rdquo; PRs to trigger an update on the PRs so that Tide will resync the status context. Alternatively, Tide can be restarted to resync all statuses.&lt;/li&gt;&#xA;&lt;li&gt;Tide may merge a PR without retesting if the existing test results are already against the latest base branch commit.&lt;/li&gt;&#xA;&lt;li&gt;It is possible for &lt;code&gt;tide&lt;/code&gt; status contexts on PRs to temporarily differ from the Tide dashboard or Tide&amp;rsquo;s behavior. This is because status contexts are updated asynchronously from the main Tide sync loop and have a separate rate limit and loop period.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;If Prow&amp;rsquo;s PR dashboard indicates that a PR is ready to merge and it appears to meet all merge requirements, but the PR is being ignored by Tide, you may have encountered a rare bug with GitHub&amp;rsquo;s search indexing. &lt;strong&gt;TLDR: If this is the problem, then any update to the PR (e.g. adding a comment) will make the PR visible to Tide again after a short delay.&lt;/strong&gt;&#xA;The longer explanation is that when GitHub&amp;rsquo;s background jobs for search indexing PRs fail, the search index becomes corrupted and the search API will have some incorrect belief about the affected PR, e.g. that it is missing a required label or still has a forbidden one. This causes the search query Tide uses to identify the mergeable PRs to incorrectly omit the PR. Since the same search engine is used by both the API and GitHub&amp;rsquo;s front end, you can confirm that the affected PR is not included in the query for mergeable PRs by using the appropriate &amp;ldquo;GitHub search link&amp;rdquo; from the expandable &amp;ldquo;Merge Requirements&amp;rdquo; section on the Tide status page. You can actually determine which particular index is corrupted by incrementally tweaking the query to remove requirements until the PR is included.&#xA;Any update to the PR causes GitHub to kick off a new search indexing job in the background. Once it completes, the corrupted index should be fixed and Tide will be able to see the PR again in query results, allowing Tide to resume processing the PR. It appears any update to the PR is sufficient to trigger reindexing so we typically just leave a comment. &lt;a href=&#34;https://kubernetes.slack.com/archives/C7J9RP96G/p1671494352250439&#34;&gt;Slack thread&lt;/a&gt; about an example of this.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;other-resources&#34;&gt;Other resources&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/config/&#34;&gt;Configuring Tide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>PR Author&#39;s Guide to Tide</title>
      <link>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/pr-authors/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/pr-authors/</guid>
      <description>&lt;p&gt;If you just want to figure out how to get your PR to merge this is the document for you!&lt;/p&gt;&#xA;&lt;h2 id=&#34;sources-of-information&#34;&gt;Sources of Information&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The &lt;code&gt;tide&lt;/code&gt; status context at the bottom of your PR.&#xA;The status either indicates that your PR is in the merge pool or explains why it is not in the merge pool. The &amp;lsquo;Details&amp;rsquo; link will take you to either the Tide or PR dashboard.&#xA;&lt;img src=&#34;https://deploy-preview-674--k8s-prow.netlify.app/docs/components/core/tide/status-context.png&#34; alt=&#34;Tide Status Context&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;The PR dashboard at &amp;ldquo;&lt;code&gt;&amp;lt;deck-url&amp;gt;&lt;/code&gt;/pr&amp;rdquo; where &lt;code&gt;&amp;lt;deck-url&amp;gt;&lt;/code&gt; is something like &amp;ldquo;&lt;a href=&#34;https://prow.k8s.io&#34;&gt;https://prow.k8s.io&lt;/a&gt;&amp;rdquo;.&#xA;This dashboard shows a card for each of your PRs. Each card shows the current test results for the PR and the difference between the PR state and the merge criteria. &lt;a href=&#34;https://prow.k8s.io/pr&#34;&gt;K8s PR dashboard&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;The Tide dashboard at &amp;ldquo;&lt;code&gt;&amp;lt;deck-url&amp;gt;&lt;/code&gt;/tide&amp;rdquo;.&#xA;This dashboard shows the state of every merge pool so that you can see what Tide is currently doing and what position your PR has in the retest queue. &lt;a href=&#34;https://prow.k8s.io/tide&#34;&gt;K8s Tide dashboard&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;get-your-pr-merged-by-asking-these-questions&#34;&gt;Get your PR merged by asking these questions&lt;/h2&gt;&#xA;&lt;h4 id=&#34;is-my-pr-in-the-merge-pool&#34;&gt;&amp;ldquo;Is my PR in the merge pool?&amp;rdquo;&lt;/h4&gt;&#xA;&lt;p&gt;If the &lt;code&gt;tide&lt;/code&gt; status at the bottom of your PR is successful (green) it is in the merge pool. If it is pending (yellow) it is &lt;em&gt;not&lt;/em&gt; in the merge pool.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
