<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>K8s Test Pipeline on Project Hummingbird</title>
    <link>https://hummingbird-project.io/docs/background/k8s-test-pipeline/</link>
    <description>Recent content in K8s Test Pipeline on Project Hummingbird</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://hummingbird-project.io/docs/background/k8s-test-pipeline/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Pipeline Design</title>
      <link>https://hummingbird-project.io/docs/background/k8s-test-pipeline/pipeline-design/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://hummingbird-project.io/docs/background/k8s-test-pipeline/pipeline-design/</guid>
      <description>&lt;h2 id=&#34;taskstep-overview&#34;&gt;Task/Step Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#taskstep-overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Task&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Steps&lt;/th&gt;&#xA;          &lt;th&gt;Results&lt;/th&gt;&#xA;          &lt;th&gt;Retries&lt;/th&gt;&#xA;          &lt;th&gt;Timeout&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;check-for-tests&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Inline &lt;code&gt;taskSpec&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;write-snapshot, resolve-component, fetch-source, check-for-tests, write-results&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;HAS_TESTS&lt;/code&gt;, &lt;code&gt;TEST_OUTPUT&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2&lt;/td&gt;&#xA;          &lt;td&gt;10m&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;provision-namespace&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;External bundle (&lt;code&gt;task-eaas-provision-space&lt;/code&gt;)&lt;/td&gt;&#xA;          &lt;td&gt;(managed by task)&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;secretRef&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2&lt;/td&gt;&#xA;          &lt;td&gt;10m&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;run-tests&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Inline &lt;code&gt;taskSpec&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;write-snapshot, resolve-component, fetch-source, run-tests, write-results&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;TEST_OUTPUT&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2&lt;/td&gt;&#xA;          &lt;td&gt;24h&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;fail-pipeline-on-test-failure&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Inline &lt;code&gt;taskSpec&lt;/code&gt; (finally)&lt;/td&gt;&#xA;          &lt;td&gt;check-results&lt;/td&gt;&#xA;          &lt;td&gt;—&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;10m&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Both &lt;code&gt;check-for-tests&lt;/code&gt; and &lt;code&gt;run-tests&lt;/code&gt; independently fetch source — each task&#xA;gets its own &lt;code&gt;emptyDir&lt;/code&gt; volume, so no state carries across tasks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test Format</title>
      <link>https://hummingbird-project.io/docs/background/k8s-test-pipeline/test-format/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://hummingbird-project.io/docs/background/k8s-test-pipeline/test-format/</guid>
      <description>&lt;h2 id=&#34;test-discovery&#34;&gt;Test Discovery&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#test-discovery&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The pipeline locates &lt;code&gt;tests-k8s.yml&lt;/code&gt; using &lt;code&gt;source.git.context&lt;/code&gt; from the&#xA;Konflux Snapshot. For example, if &lt;code&gt;source.git.context&lt;/code&gt; is &lt;code&gt;images/curl&lt;/code&gt;, the&#xA;pipeline looks for &lt;code&gt;images/curl/tests-k8s.yml&lt;/code&gt; in the source tree.&lt;/p&gt;&#xA;&lt;p&gt;When &lt;code&gt;source.git.context&lt;/code&gt; is not populated (currently the case for the&#xA;triggering component in PR-triggered pipelines, tracked as&#xA;&lt;a href=&#34;https://issues.redhat.com/browse/KONFLUX-12674&#34; target=&#34;_blank&#34;&gt;KONFLUX-12674&lt;/a&gt;), a heuristic&#xA;fallback derives the context from the component name: it tries &lt;code&gt;images/&amp;lt;base&amp;gt;&lt;/code&gt;&#xA;and then &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The actual &lt;code&gt;tests-k8s.yml&lt;/code&gt; format is opaque to the pipeline — it is passed&#xA;to the repository&amp;rsquo;s test runner script, which defines the structure and&#xA;semantics. See the respective repository documentation for the YAML format.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EaaS and Debugging</title>
      <link>https://hummingbird-project.io/docs/background/k8s-test-pipeline/eaas/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://hummingbird-project.io/docs/background/k8s-test-pipeline/eaas/</guid>
      <description>&lt;h2 id=&#34;environment-as-a-service-eaas&#34;&gt;Environment as a Service (EaaS)&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#environment-as-a-service-eaas&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;EaaS is a Konflux-managed service that provisions ephemeral OpenShift&#xA;namespaces on member clusters for integration testing.&lt;/p&gt;&#xA;&lt;h3 id=&#34;provisioning-flow&#34;&gt;Provisioning Flow&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#provisioning-flow&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The &lt;code&gt;provision-namespace&lt;/code&gt; task creates an&#xA;&lt;code&gt;eaas.konflux-ci.dev/v1alpha1 Namespace&lt;/code&gt; claim, owned by the PipelineRun.&lt;/li&gt;&#xA;&lt;li&gt;The EaaS controller allocates a namespace on a member cluster (currently&#xA;&lt;code&gt;kflux-prd-es01&lt;/code&gt;) and writes a scoped kubeconfig into a Kubernetes Secret.&lt;/li&gt;&#xA;&lt;li&gt;The &lt;code&gt;run-tests&lt;/code&gt; step reads the kubeconfig from the Secret to get cluster&#xA;access.&lt;/li&gt;&#xA;&lt;li&gt;When the PipelineRun is deleted, the owner reference triggers garbage&#xA;collection of the claim, namespace, and Secret.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The member cluster may change — it is dynamically assigned by the EaaS&#xA;controller.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
