<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Maintainer Guide for JayeX on JayeX - Cloud Native CI/CD Built On Kubernetes</title>
		<link>https://jx-docs-jx-jayex-io-jx-docs-pr-19.infra.jenkins-x.rocks/community/maintainer_guide/</link>
		<description>Recent content in Maintainer Guide for JayeX on JayeX - Cloud Native CI/CD Built On Kubernetes</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<atom:link href="https://jx-docs-jx-jayex-io-jx-docs-pr-19.infra.jenkins-x.rocks/community/maintainer_guide/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Golang upgrades</title>
				<link>https://jx-docs-jx-jayex-io-jx-docs-pr-19.infra.jenkins-x.rocks/community/maintainer_guide/go-upgrades/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://jx-docs-jx-jayex-io-jx-docs-pr-19.infra.jenkins-x.rocks/community/maintainer_guide/go-upgrades/</guid>
				<description>&lt;p&gt;JayeX codebase uses Golang/Go.&#xA;New versions of golang comes every 6 months, and golang supports only &lt;a href=&#34;https://endoflife.date/go&#34;&gt;2 versions&lt;/a&gt;.&#xA;It is highly desireable to use the latest and greatest version of golang for JayeX as newer versions have performance improvements and get regular security updates.&lt;/p&gt;&#xA;&lt;p&gt;To update golang version in JayeX follow these steps&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Open an issue in jx repository announcing the upgrade.&lt;/li&gt;&#xA;&lt;li&gt;Upgrade the goreleaser image - &lt;a href=&#34;https://github.com/jenkins-x/jx-goreleaser-image&#34;&gt;https://github.com/jenkins-x/jx-goreleaser-image&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Change the go version in the pipeline catalog repository.&#xA;See this &lt;a href=&#34;https://github.com/jenkins-x/jx3-pipeline-catalog/pull/1162&#34;&gt;PR&lt;/a&gt; for which files to change.&lt;/li&gt;&#xA;&lt;li&gt;Update the catalog version in the version stream&#xA;See this &lt;a href=&#34;https://github.com/jenkins-x/jx3-versions/pull/3240&#34;&gt;PR&lt;/a&gt; for which files to change.&lt;/li&gt;&#xA;&lt;li&gt;Update the library packages first (please follow this order)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/jenkins-x/jx-kube-client&#34;&gt;jx-kube-client&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/jenkins-x/go-scm&#34;&gt;go-scm&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/jenkins-x/logrus-stackdriver-formatter&#34;&gt;logrus-stackdriver-formatter&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/jenkins-x/jx-logging&#34;&gt;jx-logging&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/jenkins-x/jx-api&#34;&gt;jx-api&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/jenkins-x/jx-helpers&#34;&gt;jx-helpers&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/jenkins-x-plugins/secretfacade&#34;&gt;secretfacade&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Once these packages are upgraded, start the upgrade for the plugins and main jx repository&lt;/li&gt;&#xA;&lt;li&gt;Follow these steps to upgrade the version&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Change the version in go.mod file&lt;/li&gt;&#xA;&lt;li&gt;Upgrade any direct dependencies to other JayeX packages that you see in go.mod: If you for example find the line &lt;code&gt;github.com/jenkins-x/jx-logging/v3 v3.0.7&lt;/code&gt; you run go get -u github.com/jenkins-x/jx-logging/v3&lt;/li&gt;&#xA;&lt;li&gt;Run &lt;code&gt;go mod tidy&lt;/code&gt; and ensure that it does not error out&lt;/li&gt;&#xA;&lt;li&gt;Change &lt;code&gt;GO_VERSION&lt;/code&gt; in makefile to the version you are upgrading to.&lt;/li&gt;&#xA;&lt;li&gt;Check if there are any references to an older version and replace those.&lt;/li&gt;&#xA;&lt;li&gt;Verify that&#xA;&lt;ul&gt;&#xA;&lt;li&gt;the build works by running &lt;code&gt;make build&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;tests are working, by running &lt;code&gt;make test&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;linting checks are working by running &lt;code&gt;golangci-lint run&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use the same version that is used by JayeX. At the time of writing that is 1.58; you can see what &lt;a href=&#34;https://github.com/jenkins-x/jx3-pipeline-catalog/blob/master/tasks/go/pullrequest.yaml&#34;&gt;image version is referenced in the pipeline&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;If there is a configuration file for golangci-lint in the repository (&lt;code&gt;.golangci.yaml&lt;/code&gt;) it likely needs to be updated. See for example &lt;a href=&#34;https://github.com/jenkins-x/jx-kube-client/blob/main/.golangci.yml&#34;&gt;https://github.com/jenkins-x/jx-kube-client/blob/main/.golangci.yml&lt;/a&gt; for reference.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>JayeX infrastructure</title>
				<link>https://jx-docs-jx-jayex-io-jx-docs-pr-19.infra.jenkins-x.rocks/community/maintainer_guide/infrastructure/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://jx-docs-jx-jayex-io-jx-docs-pr-19.infra.jenkins-x.rocks/community/maintainer_guide/infrastructure/</guid>
				<description>&lt;p&gt;JayeX runs it&amp;rsquo;s infrastructure in Google Cloud Platform (GCP).&#xA;We have 2 GCP projects&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;jenkinsxio&lt;/li&gt;&#xA;&lt;li&gt;jenkins-x-bdd&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;jenkinsxio&#34;&gt;jenkinsxio&lt;/h3&gt;&#xA;&lt;p&gt;This is where the main infrastructure runs (the jobs triggered when a pull request is opened in any repository).&#xA;Some details about the infrastructure are shown below&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;GKE kubernetes version 1.21&lt;/li&gt;&#xA;&lt;li&gt;Spot instances to keep costs low&#xA;&lt;ul&gt;&#xA;&lt;li&gt;n1-standard-2 with boot size 100 GB&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Cluster autoscaler scales the nodes between 1 and 5.&lt;/li&gt;&#xA;&lt;li&gt;We use terraform, an infrastructure as Code tool to manage the cluster using the &lt;a href=&#34;https://github.com/jenkins-x/terraform-google-jx&#34;&gt;google-jx&lt;/a&gt; module.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;jenkins-x-bdd&#34;&gt;jenkins-x-bdd&lt;/h3&gt;&#xA;&lt;p&gt;This project is only used for bdd testing.&#xA;Test clusters are created here when a pull request is opened in the &lt;a href=&#34;https://github.com/jenkins-x/jx3-versions&#34;&gt;jx3-versions&lt;/a&gt; repository.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Add sbom generation step to release pipelines</title>
				<link>https://jx-docs-jx-jayex-io-jx-docs-pr-19.infra.jenkins-x.rocks/community/maintainer_guide/supply-chain-security/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://jx-docs-jx-jayex-io-jx-docs-pr-19.infra.jenkins-x.rocks/community/maintainer_guide/supply-chain-security/</guid>
				<description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;JayeX started to support supply chain security through different steps.&#xA;Till now we support:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;SBOM generation&lt;/li&gt;&#xA;&lt;li&gt;Uploading SBOMs to the release page and to our &lt;a href=&#34;https://github.com/orgs/jenkins-x/packages&#34;&gt;container-registry&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;how-we-do-it&#34;&gt;How we do it?&lt;/h2&gt;&#xA;&lt;p&gt;There are two types of artifacts we deal with:&lt;/p&gt;&#xA;&lt;h3 id=&#34;zipped-binaries&#34;&gt;Zipped binaries&lt;/h3&gt;&#xA;&lt;p&gt;For &lt;code&gt;.tar.gz&lt;/code&gt; artifacts, we use &lt;code&gt;goreleaser&lt;/code&gt; to generate the artifacts themselves and to generate SBOMs for them. (Both get released on the release page on github of the repository). See Assets at the &lt;a href=&#34;https://github.com/jenkins-x/jx/releases&#34;&gt;release-page&lt;/a&gt; for example.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
