<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:08:58 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-874] Update folio-testing-platform</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-874</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;There may be a use for this project as a reference yarn platform to make it easier for stripes developers to catch cross-repo dependency mixups.&lt;/p&gt;</description>
                <environment></environment>
        <key id="80390">FOLIO-874</key>
            <summary>Update folio-testing-platform</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="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="5c706fbb47a54a6728e59df2">Wayne Schneider</assignee>
                                                                <reporter accountid="5c706fbb47a54a6728e59df2">Wayne Schneider</reporter>
                                    <labels>
                            <label>ci</label>
                            <label>sprint23</label>
                    </labels>
                <created>Tue, 3 Oct 2017 14:57:49 +0000</created>
                <updated>Mon, 12 Nov 2018 14:23:47 +0000</updated>
                            <resolved>Fri, 6 Oct 2017 12:46:26 +0000</resolved>
                                                                    <component>Continuous Integration</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                    <timespent seconds="24300">6 hours, 45 minutes</timespent>
                                <comments>
                                                            <comment id="190414" author="557058:624212b9-5938-4e3b-84c6-8c8a8db84996" created="Wed, 4 Oct 2017 16:32:06 +0000"  >&lt;p&gt;I agree that maintaining a folio-testing-platform which CI uses, rather than one generated on the fly, will make it easier for developers to catch such errors.  It will also help developers troubleshoot existing failures reported by CI more quickly.&lt;/p&gt;

&lt;p&gt;There are a few other things we might consider, so I&apos;m going to include my notes about the recent build failures in general. I&apos;m hoping to identify areas for discussion and improvement, not point blame in any way.  These can be move to another ticket if more appropriate.
&lt;br class=&quot;atl-forced-newline&quot; /&gt;
&lt;br class=&quot;atl-forced-newline&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Unintentional breaking changes&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Configuration settings were shuffled around across core packages last week.  This unintentionally created a breaking change at build time.  While the latest version of stripes-core worked with the latest version of its dependencies, the latest version of stripes-core did not work when pointing to prior release of those dependencies as defined in the package.json.&lt;/li&gt;
	&lt;li&gt;Many developer&apos;s environments would appear to work, while others (and CI) did not. This was due to the next issue...&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Locally linking packages in a development environment&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Linking is often needed to develop, but can easily hide things.  First, by developing with a locally linked dependencies, one is always pointing to the latest changes locally or on master. As described above, this may make one&apos;s cross-package changes appear to be non-breaking when in fact they are.&lt;/li&gt;
	&lt;li&gt;Second, locally linked packages are also independently installed.  This means such a package will have both their NPM dependencies and devDependencies available.  This is not the case when the same package is installed as standard, non-linked, dependency of another. At least two recent build failures were hidden in development environments by this.&lt;/li&gt;
	&lt;li&gt;To properly validate newly a added or modified devDependency, one would have to unlink the package (if they can - it may have code they need), point to a commit hash, or reinstall the linked packages&apos;s own dependencies with `--production` option to exclude the devDependencies. Not terribly friendly.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Use of interim snapshot or hash between releases&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;When relying on non-breaking changes between releases, one can point to the CI build&apos;s &quot;snapshot&quot;.  When breaking changes between releases are necessary, the current method is to target the commit hash of the dependency in question.  The specific commit hash works well for those using to npm-folio or npm-folioci repos.  However, in order to pull in latest available snapshot, one must be using the npm-folioci repo.&lt;/li&gt;
	&lt;li&gt;This alone may not have caused a build failure, but did create some confusion among developers. Switching locally between npm-folio and npm-folioci adds some complexity to the workflow. Should developers only be using npm-folioci?&lt;/li&gt;
	&lt;li&gt;For reference, the hash approach didn&apos;t work for stripes-loader last week as it relies on a prepublish script must have a release or interim snapshot with a bumped version. The loader has since been deprecated, but could&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Webpack builds not reporting failures to CI&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;In perhaps the biggest cover-up, stripes.js build commands have been suppressing webpack compilation errors making it impossible for CI to detect any build failure reported by webpack.  Recent changes helped to surface these errors to developers by adding console output, but a proper exit code was still missing for CI.  This was probably a main source for most hidden build failures not found until runtime.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;b&gt;Difficulty in reproducing testing build&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Finally, it is hard for a developer to reproduce the CI build locally, either when trying to troubleshoot an existing build failure, or checking that their new code won&apos;t cause a failure.  Maintaining a folio-testing-platform will help with this, as one can easily attempt to build the CI configuration at any time.&lt;/li&gt;
	&lt;li&gt;This still requires using npm-folioci and remembering when to unlink when necessary.  Perhaps we can include an `.npmrc` within the testing platform repo to always point to npm-folioci if developers aren&apos;t already doing so.&lt;/li&gt;
&lt;/ul&gt;


</comment>
                                                            <comment id="190420" author="5c706fbb47a54a6728e59df2" created="Wed, 4 Oct 2017 16:37:55 +0000"  >&lt;p&gt;&lt;a href=&quot;https://github.com/folio-org/folio-testing-platform&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/folio-testing-platform&lt;/a&gt; has been updated to be current. I committed a yarn.lock to the repo, as well.&lt;/p&gt;

&lt;p&gt;My thought is to commit a new yarn.lock every time one is generated by the regularly scheduled stripes-testing CI job. Does this make sense, or is it too aggressive? It will certainly lead to lots of commits, which is a lot of noise.&lt;/p&gt;</comment>
                                                            <comment id="190422" author="5c706fbb47a54a6728e59df2" created="Wed, 4 Oct 2017 16:42:42 +0000"  >&lt;p&gt;A couple of comments on Matt&apos;s useful summary:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;I did include an &lt;tt&gt;.npmrc&lt;/tt&gt;&lt;/li&gt;
	&lt;li&gt;I had some success with using yalc (&lt;a href=&quot;https://www.npmjs.com/package/yalc&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://www.npmjs.com/package/yalc&lt;/a&gt;) instead of yarn linking to better emulate the build environment locally. Any thoughts on this tool?&lt;/li&gt;
&lt;/ul&gt;
</comment>
                                                            <comment id="190424" author="557058:624212b9-5938-4e3b-84c6-8c8a8db84996" created="Wed, 4 Oct 2017 18:01:58 +0000"  >&lt;p&gt;Re: yarn.lock, I&apos;m not too concerned about the added noise.  However, it seems updating it every time is not much different than excluding it from the repo.  Well, okay I do see having it there would help a developer to recreate locally exactly what is happening in CI at any given moment.  This will be helpful in troubleshooting.  The next CI build would then omit yarn.lock to get the latest available changes anyway, correct?&lt;/p&gt;</comment>
                                                            <comment id="190426" author="557058:624212b9-5938-4e3b-84c6-8c8a8db84996" created="Wed, 4 Oct 2017 18:22:10 +0000"  >&lt;p&gt;I have not used yalc. The description sounds like it might be helpful though.  Some other thoughts that come to mind for improvements:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Update CI to attempt to build folio-testing-platform before a PR is merged into selected repos (such as: core, connect, components, etc.)  This will help catch many of the errors we&apos;ve seen recently that are hard to surface locally.  Even when running a local folio-testing-platform, there are some cases that could slip through the cracks.&lt;/li&gt;
	&lt;li&gt;Include commands and tests in stripes-core/CLI to simplify environment setup and validate that changes in core are non-breaking.  This would be one part of a larger CLI effort to streamline development.&lt;/li&gt;
	&lt;li&gt;Further refine or better communicate process for handling breaking changes between releases.&lt;/li&gt;
&lt;/ul&gt;


</comment>
                                                            <comment id="190428" author="5c706fbb47a54a6728e59df2" created="Wed, 4 Oct 2017 21:41:24 +0000"  >&lt;p&gt;I updated folio-ansible to use folio-testing-platform, but it caused unexpected side effects on folio-testing.aws.indexdata.com, so I rolled back part of the change.&lt;/p&gt;</comment>
                                                            <comment id="190430" author="5c706fbb47a54a6728e59df2" created="Wed, 4 Oct 2017 21:59:33 +0000"  >&lt;p&gt;OK, &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; found the problem, so folio-ansible (and folio-testing) are now being build from the folio-testing-platform repo.&lt;/p&gt;</comment>
                                                            <comment id="190432" author="5c706fbb47a54a6728e59df2" created="Wed, 4 Oct 2017 23:19:45 +0000"  >&lt;p&gt;&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; &amp;#8211; I think if we are to update the yarn.lock file through CI, it will have to be part of the Ansible plays in the folio-infrastructure project.&lt;/p&gt;</comment>
                                                            <comment id="190433" author="5c706fbb47a54a6728e59df2" created="Fri, 6 Oct 2017 12:46:26 +0000"  >&lt;p&gt;The folio-testing-platform is working fine in CI. I&apos;ll open another issue about updating the &lt;tt&gt;yarn.lock&lt;/tt&gt; file from a CI build.&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_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzy0ev:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 4 Oct 2017 16:32:06 +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>