<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:18:20 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>[FOLIO-2118] CI-integrated continuous deployment (Q2, cluster setup)</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-2118</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;(this issue has been split from 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;UXPROD-1827&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/UXPROD-1827&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;CI-integrated continuous deployment (Q3, FOLIO setup)&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            UXPROD-1827
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
 to indicate the cluster-setup work completed in Q2 2019)&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;Problemstatement&quot;&gt;&lt;/a&gt;Problem statement&lt;/h4&gt;

&lt;p&gt;Current FOLIO CI infrastructure and reference environments have several limitations that make it hard to scale them the point where a fully continuos and isolated deployment of development builds (e.g from PRs and feature branches, for both UI and backend modules) is possible. Those limitations include:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;the reference envs (e.g snapshot) are recreated in full nightly, in a top-down approach (starting from a platform and resolving its dependencies which are deployed one by one).&lt;/li&gt;
	&lt;li&gt;the reference envs are primarily single-tenant (the so-called &apos;diku&apos; demo tenant)&lt;/li&gt;
	&lt;li&gt;the reference envs are constructed from artefacts based on shared branches (master) only and all those artefacts are shared at runtime by the single demo tenant&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This is makes it impossible to implement certain development process capabilities (like the PR previews, see 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-1993&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1993&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;add Dockerfile to platform-complete&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-1993
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
) without a list of fairly severe limitations (see description of the PR preview PoC for a comprehensive list of those limitations at &lt;a href=&quot;https://dev.folio.org/guides/branch-preview/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://dev.folio.org/guides/branch-preview/&lt;/a&gt;)&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;Proposedapproach&quot;&gt;&lt;/a&gt;Proposed approach&lt;/h4&gt;

&lt;p&gt;We would like to revamp the deployment and orchestration infrastructure, create a new, clustered and multi-tenant, reference environment for development and integration purposes, and update the CI processes (Jenkins, Ansible, etc) to allow for a more continuos and isolated deployment of development artefacts.&lt;/p&gt;

&lt;h5&gt;&lt;a name=&quot;Orchestration&quot;&gt;&lt;/a&gt;Orchestration&lt;/h5&gt;

&lt;p&gt;Based on the prior work from from Jason Root (TAMU) and Mark Stacy (Core: platform/Colorado, see 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-1408&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1408&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;deploy FOLIO on Kubernetes and document the procedure&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-1408
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
) who have experimented with various orchestration tools and we have concluded that Kubernetes (K8s) has become the defacto standard for container orchestration and it is the orchestration tool of choice across major cloud vendors. It seems very likely that many organisations will use K8s for production-ready FOLIO deployments. K8s also brings many benefits for development deployments: a rich ecosystem of tools that ease provisioning of dependencies (e.g Helm) and widely accepted practices and processes for deployment of multiple development builds.&lt;/p&gt;

&lt;p&gt;The Core: platform has undertaken a focused effort to ease K8s integration across FOLIO platform. This effort is tracked on 
    &lt;span class=&quot;jira-issue-macro&quot; data-jira-key=&quot;UXPROD-1823&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/UXPROD-1823&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Kubernetes integration (Q3, Okapi features)&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            UXPROD-1823
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-complete jira-macro-single-issue-export-pdf&quot;&gt;Draft&lt;/span&gt;
            &lt;/span&gt;
.&lt;/p&gt;

&lt;h5&gt;&lt;a name=&quot;Clusteredreferenceenvironment&quot;&gt;&lt;/a&gt;Clustered reference environment&lt;/h5&gt;

&lt;p&gt;This work is being done outside of the Platform team, see 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2053&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2053&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;add AWS K8s deployment configuration and documention to &amp;#39;folio-install&amp;#39;&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-2053
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
&lt;/p&gt;

&lt;h5&gt;&lt;a name=&quot;CIprocess&quot;&gt;&lt;/a&gt;CI process&lt;/h5&gt;

&lt;p&gt;We would like to extend the CI process in a way which allows to:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;deploy a backend container immediately after a successful automatic build (Jenkins/CI) on the clustered reference environment. This would include both &lt;em&gt;snapshot&lt;/em&gt; and &lt;em&gt;release&lt;/em&gt; builds and could be scaled up to allow for a deployment of  &lt;em&gt;feature branch&lt;/em&gt; builds (at specific points in the PR lifecycle). The deployed container should be registered with Okapi running on the clustered reference environment in order to allow for it being used as a dependency in appropriate tenant configurations.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;create an independent tenant, on the clustered reference environment, for each platform- and ui- module build (of all kinds, including release, snapshot, and feature branch) to allow for running the particular build in isolation (including sample data set isolation). In the case of ui- modules, which are not self-contained units, the build process must be able to embed the module in an appropriate &lt;em&gt;platform&lt;/em&gt; to form a complete Stripes bundle. Such bundle should be exposed to users after a succesful build. Okapi remains responsible for providing backend service dependencies in the created tenant.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;See 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2054&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2054&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Stand up cluster for CI using AWS K8s procedure and documenation&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-2054
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
, 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2055&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2055&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;create an Ansible role for backend-module that deploys the container to K8s cluster&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-2055
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
 and 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2056&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2056&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;create a pipeline for a front-end module that builds and deploys to K8s cluster&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-2056
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Further read&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;PR previews: 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;UXPROD-1817&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/UXPROD-1817&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Preview capability for PRs (Q3, initial rollout)&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            UXPROD-1817
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
&lt;br/&gt;
Kubernetes integration: 
    &lt;span class=&quot;jira-issue-macro&quot; data-jira-key=&quot;UXPROD-1823&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/UXPROD-1823&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Kubernetes integration (Q3, Okapi features)&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            UXPROD-1823
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-complete jira-macro-single-issue-export-pdf&quot;&gt;Draft&lt;/span&gt;
            &lt;/span&gt;
&lt;br/&gt;
FOLIO RM and CI concepts: &lt;a href=&quot;https://docs.google.com/document/d/1au2hG4gPekyZ_HxAU7s6sc4NOvRaVovUcBnMLa1iR7E/edit?usp=sharing&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://docs.google.com/document/d/1au2hG4gPekyZ_HxAU7s6sc4NOvRaVovUcBnMLa1iR7E/edit?usp=sharing&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="81341">FOLIO-2118</key>
            <summary>CI-integrated continuous deployment (Q2, cluster setup)</summary>
                <type id="10006" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10307?size=medium">Umbrella</type>
                                            <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</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="5c706fbb47a54a6728e59df2">Wayne Schneider</reporter>
                                    <labels>
                            <label>ci</label>
                            <label>platform-backlog</label>
                            <label>q2-2019</label>
                            <label>sprint49</label>
                            <label>sprint50</label>
                            <label>sprint51</label>
                            <label>sprint52</label>
                            <label>sprint53</label>
                            <label>sprint54</label>
                    </labels>
                <created>Wed, 26 Jun 2019 11:20:57 +0000</created>
                <updated>Wed, 3 Jun 2020 16:39:57 +0000</updated>
                            <resolved>Tue, 2 Jul 2019 11:48:36 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>13</watches>
                                                                    <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="81342">FOLIO-2119</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="10980">UXPROD-1817</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="11211">UXPROD-2118</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81233">FOLIO-2011</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="80776">FOLIO-1519</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81265">FOLIO-2053</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81360">FOLIO-2086</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81363">FOLIO-2090</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="80863">FOLIO-1408</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="80889">FOLIO-1596</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81266">FOLIO-2054</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81340">FOLIO-2117</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10001">
                    <name>Cloners</name>
                                            <outwardlinks description="clones">
                                        <issuelink>
            <issuekey id="10721">UXPROD-1827</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="52846">OKAPI-728</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="80776">FOLIO-1519</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="80886">FOLIO-1548</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="80963">FOLIO-1597</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81207">FOLIO-2036</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81269">FOLIO-2057</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="52840">OKAPI-670</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="80949">FOLIO-1576</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <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_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzzunj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </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>