<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Fri Feb 09 00:20:50 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[UXPROD-2066] CI architecture and process to allow deployment of feature branches</title>
                <link>https://folio-org.atlassian.net/browse/UXPROD-2066</link>
                <project id="10000" key="UXPROD">UX Product</project>
                    <description>&lt;p&gt;The architecture for feature branch deployment is being captured in the following document:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://docs.google.com/document/d/1tM6cLUMO9O_85moCYk2ICjqNEQxsaHm9R0oGXzu6YAg/edit?ts=5d5fe77a&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://docs.google.com/document/d/1tM6cLUMO9O_85moCYk2ICjqNEQxsaHm9R0oGXzu6YAg/edit?ts=5d5fe77a&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Components of the solution:&lt;/b&gt;:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;the K8s cluster will include a new namespace for deployment of containers based on PR/fb artefacts (called &lt;tt&gt;preview&lt;/tt&gt;, running next to the standard &lt;tt&gt;main&lt;/tt&gt; namespace used for deployment of release and snapshot (master) artefacts)&lt;/li&gt;
	&lt;li&gt;the &lt;tt&gt;preview&lt;/tt&gt; namespace will run a dedicated Okapi, that will include ModuleDescriptors for release, snapshot and PR/fb artefacts. (Okapi in the &lt;tt&gt;main&lt;/tt&gt; namespace only includes MDs for release and snapshots). MDs for PR/fb artefact will be cleaned up periodically.&lt;/li&gt;
	&lt;li&gt;actual Docker containers resulting from PR/fb builds will be published to a private Docker registry available to the CI (unlike release and snapshot -based containers that are published to public DockerHub)&lt;/li&gt;
	&lt;li&gt;NPM PR/fb builds (front-end) will be published to a separate namespace in FOLIO Nexus, a virtual namespace will be configured for the CI that includes release/snapshot artefacts and PR/fb ones.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Summary of the development process:&lt;/b&gt;:&lt;/p&gt;

&lt;p&gt;Developer working on a feature branch opens a PR which triggers CI build and deployment process:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;for backend modules (mod-): Docker container is build and published to the private Docker registry. MD is generated and uploaded to the &lt;tt&gt;preview&lt;/tt&gt; namespace Okapi and the container is deployed in the CI&apos;s K8s &lt;tt&gt;preview&lt;/tt&gt; namespace.&lt;/li&gt;
	&lt;li&gt;for front-end modules (ui- or library like stripes): NPM is build and uploaded to the &lt;tt&gt;preview&lt;/tt&gt; namespace in Nexus&lt;/li&gt;
	&lt;li&gt;for &quot;platform-&quot; (platform-core, platform-complete, others) repo: bundle is created and deployed to S3, tenant is created in the K8s &lt;tt&gt;preview&lt;/tt&gt; namespace, UI integration tests are executed and the PR preview environment link is reported by Jenkins in the PR comments section. If the PR is issued against the &quot;master&quot; (which in platform- repos represents the &quot;release&quot; branch) the CI performs an additional &quot;dependency check&quot; when the PR is &lt;tt&gt;closed&lt;/tt&gt; &amp;#8211; this check verifies that all PR/fb dependencies present when the PR was open have been removed by the developer. In practice, this means that developers are required to release all dependencies (front-end and backend) where they had outstanding PRs first. &lt;span class=&quot;error&quot;&gt;&amp;#91;TODO: relax this requirement through snapshot dependencies&amp;#93;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;b&gt;Snapshot dependencies:&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;As mentioned above, when a platform- PR is closed the CI dependency check ensures that all PR/fb dependencies are resolved to releases. What this means in practice is that developers must not only merge all PR/fb dependencies to master branches in individual repos but also perform formal releases of those dependencies. We would like to relax the formal release requirement by allowing &quot;snapshot&quot; dependencies on the appropriate branch of the platform- repo. This way the PR would be issues not againt the platform- &quot;master&quot; (release) branch but against the &quot;snapshot-&quot;. To do thins in a reliable way, however, we need to be able to &quot;order&quot; snapshots by their &quot;version numbers&quot; and developers must know them in advance. &lt;/p&gt;

&lt;p&gt;The snapshot artefacts will use a standard preRelease versioning: &lt;tt&gt;1.2.3-alpha.1&lt;/tt&gt;, &lt;tt&gt;1.2.3-alpha.2&lt;/tt&gt;, ...&lt;/p&gt;</description>
                <environment></environment>
        <key id="11293">UXPROD-2066</key>
            <summary>CI architecture and process to allow deployment of feature branches</summary>
                <type id="10002" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium">New Feature</type>
                            <parent id="11697">UXPROD-1814</parent>
                                    <priority id="10001" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p2.svg">P2</priority>
                        <status id="6" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10003">Done</resolution>
                                                        <assignee accountid="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d">Jakub Skoczen</assignee>
                                                                <reporter accountid="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d">Jakub Skoczen</reporter>
                                    <labels>
                            <label>cap-mvp</label>
                            <label>platform-backlog</label>
                            <label>po-mvp</label>
                    </labels>
                <created>Mon, 26 Aug 2019 11:54:54 +0000</created>
                <updated>Mon, 10 Aug 2020 13:20:23 +0000</updated>
                            <resolved>Mon, 13 Jan 2020 12:13:47 +0000</resolved>
                                                    <fixVersion>Q4 2019</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                    <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="11211">UXPROD-2118</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="81400">FOLIO-2265</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81404">FOLIO-2267</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81406">FOLIO-2268</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81430">FOLIO-2275</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="10721">UXPROD-1827</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81402">FOLIO-2266</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="10980">UXPROD-1817</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="10721">UXPROD-1827</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="11211">UXPROD-2118</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="81233">FOLIO-2011</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81349">FOLIO-2131</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="79824">FOLIO-2092</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10053" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Back End Estimate</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10124"><![CDATA[XXL < 30 days]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10144"><![CDATA[Core: Platform]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10014" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue key="$xmlutils.escape($text)">Platform, DevOps and Release Management</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzx3og:zzzzzzzzzzzzzzzzzzx</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="11">DevOps: Sprint 95</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10025" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>[CHART] Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>