<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:15:49 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-1775] SPIKE: establish acceptance criteria for devops tasks</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-1775</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;We don&apos;t have a good way to verify completeness and success of many devops tasks. Especially, changes in the CI/CD pipelines or build pipelines that execute as a result of an upstream (source) project change. It would be great if we could come up with a way to test and verify correctness for performed devops changes indpendently of the upstream projects and integration environments.&lt;/p&gt;


&lt;p&gt;1. We have decided that the starting point is for &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5f9abc1eb45b2e007453f423&quot; class=&quot;user-hover&quot; rel=&quot;5f9abc1eb45b2e007453f423&quot; data-account-id=&quot;5f9abc1eb45b2e007453f423&quot; accountid=&quot;5f9abc1eb45b2e007453f423&quot; rel=&quot;noreferrer&quot;&gt;John Malconian&lt;/a&gt; to describe the process for verifying Jenkins changes. This description should be published  on dev.folio.org.&lt;/p&gt;

&lt;p&gt;Some idea (&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5f9abc1eb45b2e007453f423&quot; class=&quot;user-hover&quot; rel=&quot;5f9abc1eb45b2e007453f423&quot; data-account-id=&quot;5f9abc1eb45b2e007453f423&quot; accountid=&quot;5f9abc1eb45b2e007453f423&quot; rel=&quot;noreferrer&quot;&gt;John Malconian&lt;/a&gt; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5c706fbb47a54a6728e59df2&quot; class=&quot;user-hover&quot; rel=&quot;5c706fbb47a54a6728e59df2&quot; data-account-id=&quot;5c706fbb47a54a6728e59df2&quot; accountid=&quot;5c706fbb47a54a6728e59df2&quot; rel=&quot;noreferrer&quot;&gt;Wayne Schneider&lt;/a&gt; please edit this section if you have better ideas about what should be done to test)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;find a way to test Jenkins pipelines (in isolation) &amp;#8211; are there any tools for that?&lt;/li&gt;
	&lt;li&gt;set up dummy (mock) project for UI and backend where we could trigger source changes on demand and test CI integration&lt;/li&gt;
	&lt;li&gt;set up an internal testing environment where we can test and verify CI changes before rolling them out to public environments&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="81097">FOLIO-1775</key>
            <summary>SPIKE: establish acceptance criteria for devops tasks</summary>
                <type id="10003" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium">Task</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="61cd0ca0bce5e00069e98be7">David Crossley</assignee>
                                                                <reporter accountid="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d">Jakub Skoczen</reporter>
                                    <labels>
                            <label>devdoc</label>
                            <label>platform-backlog</label>
                    </labels>
                <created>Mon, 4 Feb 2019 13:00:17 +0000</created>
                <updated>Wed, 3 Jun 2020 16:39:28 +0000</updated>
                            <resolved>Mon, 8 Apr 2019 09:53:36 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                <comments>
                                                            <comment id="195246" author="5f9abc1eb45b2e007453f423" created="Wed, 6 Feb 2019 20:27:26 +0000"  >&lt;p&gt;The following describes how two common FOLIO DevOps related scenarios are tested before they are &quot;rolled out&quot; into production.  &lt;/p&gt;

&lt;p&gt;1.  The first scenario involves changes or new Ansible-related features to folio-ansible or folio-infrastructure.   These two repos consist of playbooks and roles that automate the provisioning of various FOLIO instances and services.  They are used extensively in our development, test, and CI environments.    Common DevOps tasks could include adding new modules or wrangling sample data into a FOLIO build environment,  adding various options to existing roles to extend functionality,  and adding new roles to meet new requirements.   Work is typically performed in a development/feature branch of either folio-ansible or folio-infrastructure and manually tested by running the Ansible playbooks in this branch on a local development system or on the host, jenkins-aws.indexdata.com.   The latter allows us to test changes that involve use of the AWS infrastructure.    For example,  changes that would impact folio-snapshot are tested by performing a build of &quot;folio-snapshot-test&quot; which would build a folio-snapshot system from either a branch of folio-ansible or folio-infrastructure.    If the test build completes successfully,  further examination of the instance might be necessary depending on the nature of the changes.   If everything checks out,  the new code is merged to the master branches of folio-ansible/infrastructure.&lt;/p&gt;

&lt;p&gt;2.  The second scenario involves changes to Jenkins Pipelines shared libraries.    Jenkins pipelines consists of scripts that automate the build steps and quality gates for individual repo branch and PR builds.    Most of these functions are stored in a Jenkins &quot;shared library&quot; in the repository jenkins-pipeline-libs.     Typically,  changes are performed on a dev/feature branch of jenkins-pipeline-libs.   A common method to test changes in our development branch is to create a test branch in an existing module repository.   The Jenkinsfile in the module&apos;s test branch is updated to point to the branch of jenkins-pipeline-libs we are testing.    An example:&lt;/p&gt;

&lt;p&gt;We are testing a change to the pipeline that builds, tests, and deploys Node/NPM modules in a test branch of jenkins-pipeline-libs called &apos;FOLIO-1775&apos;.    Good candidate modules to test these changes might be stripes-components or ui-users.  Branches for each these modules are created called &apos;FOLIO-1775-test&apos;.    We add the following line to the top of the Jenkinsfile in each of these branches in order to test the changes that reside in our 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-1775&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1775&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;SPIKE: establish acceptance criteria for devops tasks&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-1775
        &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;
 branch of jenkins-pipeline-libs:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;@Library (&apos;folio_jenkins_shared_libs@FOLIO-1775&apos;) _
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We can then initiate a build of the branch FOLIO-1775-test via Jenkins to test our changes.    If our changes are related to actions taken only during Pull Requests,  we could open PRs in stripes-core and ui-users for our test branches in order to simulate these changes.   When finished with testing, the PRs are closed (and not merged).   There are limitations to this approach, however.   For example,  actions that occur only when building on a repository&apos;s master branch or when performing release builds for modules.  These are often more difficult to test since testing on a module&apos;s master branch might introduce problems into that branch.   &lt;/p&gt;</comment>
                                                            <comment id="195253" author="61cd0ca0bce5e00069e98be7" created="Fri, 8 Mar 2019 01:59:53 +0000"  >&lt;p&gt;The document with the above-mentioned content is at:&lt;br/&gt;
&lt;a href=&quot;https://dev.folio.org/guides/devops-verify-task-acceptance/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://dev.folio.org/guides/devops-verify-task-acceptance/&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="195256" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Mon, 8 Apr 2019 09:53:36 +0000"  >&lt;p&gt;I have added a link to acceptance criteria from the DevOps DoD page.&lt;/p&gt;</comment>
                    </comments>
                    <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|hzxlf3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1418">Core: Platform - Sprint 60</customfieldvalue>
    <customfieldvalue id="1148">Core: Platform - Sprint 58</customfieldvalue>
    <customfieldvalue id="1149">Core: Platform - Sprint 59</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10044" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 6 Feb 2019 20:27:26 +0000</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>