<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:24:11 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-2913] SPIKE: Evaluate Github Actions</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-2913</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;Evaluate feasibility of using GitHub Actions as a CI pipeline for individual front-end and backend module repos.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Deliverables&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;pipeline/template for Java/Maven based modules&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;pipeline/template for Node-based module&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;a PoC for using GH action templates instead of individual pipelines for each module&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="81915">FOLIO-2913</key>
            <summary>SPIKE: Evaluate Github Actions</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="712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30">Ankita Sen</assignee>
                                                                <reporter accountid="5f9abc1eb45b2e007453f423">John Malconian</reporter>
                                    <labels>
                            <label>devops-backlog</label>
                    </labels>
                <created>Fri, 11 Dec 2020 18:21:03 +0000</created>
                <updated>Thu, 11 Mar 2021 14:48:34 +0000</updated>
                            <resolved>Thu, 11 Mar 2021 14:48:34 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                <comments>
                                                            <comment id="198509" author="5f9abc1eb45b2e007453f423" created="Tue, 15 Dec 2020 17:20:59 +0000"  >&lt;p&gt;There are primarily two Jenkins pipelines that are used for about 90% of all folio-org modules repos.&lt;/p&gt;

&lt;p&gt;For Stripes and ui-* Nodejs-based modules:  &lt;a href=&quot;https://github.com/folio-org/jenkins-pipeline-libs/blob/master/vars/buildNPM.groovy&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/jenkins-pipeline-libs/blob/master/vars/buildNPM.groovy&lt;/a&gt;&lt;br/&gt;
For Maven/Java-based backend modules:  &lt;a href=&quot;https://github.com/folio-org/jenkins-pipeline-libs/blob/master/vars/buildMvn.groovy&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/jenkins-pipeline-libs/blob/master/vars/buildMvn.groovy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea for this spike is to develop a POC GitHub Actions workflow for each based on the corresponding Jenkins shared pipelines above.&lt;/p&gt;

&lt;p&gt;The high-level workflow for each pipeline essentially consists of the following steps (non-release builds)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Check out source&lt;/li&gt;
	&lt;li&gt;Lint code (NPM-based modules only)&lt;/li&gt;
	&lt;li&gt;Lint RAML (Maven-based only)&lt;/li&gt;
	&lt;li&gt;Build module from source (either via &apos;yarn&apos; or &apos;maven&apos;)&lt;/li&gt;
	&lt;li&gt;Run unit tests&lt;/li&gt;
	&lt;li&gt;Run Sonarqube scan and publish to Sonarcloud&lt;/li&gt;
	&lt;li&gt;Build Docker image (if applicable)&lt;/li&gt;
	&lt;li&gt;Test Docker image (optional)&lt;/li&gt;
	&lt;li&gt;Publish Docker image (master branch only)&lt;/li&gt;
	&lt;li&gt;Publish Maven jar files (master branch only)&lt;/li&gt;
	&lt;li&gt;Generate module descriptor (if applicable)&lt;/li&gt;
	&lt;li&gt;Publish module descriptor to folio-registry ( master branch only)&lt;/li&gt;
	&lt;li&gt;Publish API documentation (master branch only)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Docker images are published to Docker Hub - &apos;folioci&apos; (snapshots) and &apos;folioorg&apos; (releases)&lt;br/&gt;
NPM and Maven artifacts are published to a Nexus repository (&lt;a href=&quot;https://repository.folio.org&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://repository.folio.org&lt;/a&gt;)&lt;br/&gt;
Module Descriptors are published to FOLIO module registry (&lt;a href=&quot;http://folio-registry.aws.indexdata.com&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;http://folio-registry.aws.indexdata.com&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;There are also test results and code coverage report artifacts that are published in each pipeline.  &lt;/p&gt;

&lt;p&gt;Additionally,  we should demonstrate that these Github Actions workflows can be maintained centrally and be used by individual repos.  &lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/sharing-workflows-with-your-organization&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/sharing-workflows-with-your-organization&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The best way to test Github Actions workflows would be to run them in parallel with Jenkins CI pipelines for a particular Nodejs and Maven-based repo.     Start by working on a non-master branch.   Care must be taken to not publish duplicate artifacts when running on master branch.  &lt;/p&gt;

&lt;p&gt;Github Actions documentation:  &lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions&lt;/a&gt;&lt;br/&gt;
Starter Actions workflows:  &lt;a href=&quot;https://github.com/actions/starter-workflows/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/actions/starter-workflows/&lt;/a&gt;&lt;br/&gt;
Nodejs-based workflows:  &lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-nodejs&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-nodejs&lt;/a&gt;&lt;br/&gt;
Maven-based workflows:  &lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-java-with-maven&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-java-with-maven&lt;/a&gt;&lt;/p&gt;


</comment>
                                                            <comment id="198510" author="712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30" created="Tue, 5 Jan 2021 16:43:10 +0000"  >&lt;p&gt;Added a github actions node.js CI to repository Stripes, branch 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2913&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2913&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;SPIKE: Evaluate Github Actions&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-2913
        &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;
. The buildNPM.yml file contents are as follows:&lt;/p&gt;

&lt;p&gt;&lt;font color=&quot;#205081&quot;&gt;name: Nodejs CI&lt;br/&gt;
&lt;br/&gt;
on:&lt;br/&gt;
  push:&lt;br/&gt;
    branches: [ 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2913&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2913&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;SPIKE: Evaluate Github Actions&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-2913
        &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;
  pull_request:&lt;br/&gt;
    branches: [ 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2913&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2913&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;SPIKE: Evaluate Github Actions&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-2913
        &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;
&lt;br/&gt;
jobs:&lt;br/&gt;
  build:&lt;br/&gt;
&lt;br/&gt;
    runs-on: ubuntu-latest&lt;br/&gt;
    steps:&lt;br/&gt;
    - uses: actions/checkout@v2&lt;br/&gt;
    - name: Use Node.js&lt;br/&gt;
      uses: actions/setup-node@v1&lt;br/&gt;
    - run: npm ci&lt;br/&gt;
    - run: yarn lint&lt;br/&gt;
    - run: yarn test&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;TODO[ 07.01.2021 ]:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;File yet to be tested for errors, vary basic pipleine, needs further development.&lt;/li&gt;
	&lt;li&gt;Adding SonarQube and publishModDescriptor stages.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                                                            <comment id="198511" author="712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30" created="Mon, 11 Jan 2021 09:09:47 +0000"  >&lt;p&gt;The test CI job works and runs sucessfully. The yarn lint job however throws an error, which after research I couldn&apos;t find a viable solution to. The error reads as follows:&lt;/p&gt;

&lt;p&gt;&lt;font color=&quot;#d04437&quot;&gt;/bin/sh: 1: eslint: not found&lt;br/&gt;
error Command failed with exit code 127.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The current CI yaml config file contents are as follows:&lt;br/&gt;
&lt;font color=&quot;#8eb021&quot;&gt;name: buildNPM stripes CI&lt;br/&gt;
&lt;br/&gt;
on:&lt;br/&gt;
  push:&lt;br/&gt;
    branches: 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2913&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2913&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;SPIKE: Evaluate Github Actions&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-2913
        &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;
&lt;br/&gt;
jobs:&lt;br/&gt;
  build:&lt;br/&gt;
    runs-on: ubuntu-latest&lt;br/&gt;
    steps:&lt;br/&gt;
      - uses: folio-org/checkout@v2&lt;br/&gt;
        with:&lt;br/&gt;
          ref: 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2913&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2913&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;SPIKE: Evaluate Github Actions&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-2913
        &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;
      - run: echo &quot;Running CI...&quot;&lt;br/&gt;
      - run: mkdir -p ci&lt;br/&gt;
      - run: echo &quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;pre&amp;gt;&quot; ci/lint.html&lt;br/&gt;
      - run: yarn lint 2&amp;gt;&amp;amp;1 &amp;gt;&amp;gt;  ci/lint.html&lt;br/&gt;
      - run: echo &quot;&amp;lt;/pre&amp;gt;&amp;lt;body&amp;gt;&amp;lt;/html&amp;gt;&quot; &amp;gt;&amp;gt; ci/lint.html&lt;br/&gt;
      - run: rm -rf ci&lt;br/&gt;
  test:&lt;br/&gt;
    runs-on: ubuntu-latest&lt;br/&gt;
    steps:&lt;br/&gt;
      - uses: folio-org/checkout@v2&lt;br/&gt;
        with:&lt;br/&gt;
          ref: 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2913&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2913&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;SPIKE: Evaluate Github Actions&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-2913
        &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;
      - run: xvfb-run --server-args=&quot;-screen 0 1024x768x24&quot; yarn test&lt;/font&gt;&lt;/p&gt;</comment>
                                                            <comment id="198512" author="712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30" created="Tue, 12 Jan 2021 12:52:35 +0000"  >&lt;p&gt;NPM pipeline update: &lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;eslint error solved.&lt;/li&gt;
	&lt;li&gt;new error while setting folio registry : &lt;font color=&quot;#d04437&quot;&gt;error Couldn&apos;t find any versions for &quot;@folio/stripes-components&quot; that matches &quot;~9.0.0&quot;&lt;/font&gt; (Need Help with this!!!)&lt;/li&gt;
	&lt;li&gt;sonarqube and publishmoddescriptor not implemented yet&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Maven pipeline update:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;added pipeline buildMaven.yml&lt;/li&gt;
	&lt;li&gt;currently contain lint job + deploy job&lt;/li&gt;
	&lt;li&gt;both are failing. Investigating about the errors.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                                                            <comment id="198513" author="5f9abc1eb45b2e007453f423" created="Tue, 12 Jan 2021 19:35:56 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=712020%3A66ff5e1e-556d-4407-89fd-6ed1fe9b6b30&quot; class=&quot;user-hover&quot; rel=&quot;712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30&quot; data-account-id=&quot;712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30&quot; accountid=&quot;712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30&quot; rel=&quot;noreferrer&quot;&gt;Ankita Sen&lt;/a&gt; -  Some feedback:&lt;/p&gt;

&lt;p&gt;1) FOLIO_REGISTRY (folio-registry.aws.indexdata.com) hosts  FOLIO module descriptors.  It is not an NPM repository which is what you are really looking for in this step (you will need this, however, when you implement publishing the module descriptor step).  &lt;/p&gt;

&lt;p&gt;2) The FOLIO project uses Nexus for hosting FOLIO NPM packages and Maven artifacts.   There are multiple repositories hosted on this Nexus server.  You can view them at &lt;a href=&quot;https://repository.folio.org&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://repository.folio.org&lt;/a&gt;.    Non-master/main branch builds do not publish artifacts,  but you do need to configure these repositories in the build pipeline in order to satisfy dependencies.    For Nodejs and Maven-based FOLIO artifacts there are two types of repositories for each - snapshot artifacts and release artifacts.   Snapshot artifacts are generated in CI on the master branch only.   Release artifacts are generated when a module is officially tagged in Git and released.    Branch builds require dependencies from the snapshot repositories.   &lt;/p&gt;

&lt;p&gt;The FOLIO snapshot repositories are at: &lt;br/&gt;
NPM:   &lt;a href=&quot;https://repository.folio.org/repository/npm-folioci/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://repository.folio.org/repository/npm-folioci/&lt;/a&gt;&lt;br/&gt;
Maven:  &lt;a href=&quot;https://repository.folio.org/repository/maven-snapshots/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://repository.folio.org/repository/maven-snapshots/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The FOLIO release repositories are at: &lt;br/&gt;
NPM: &lt;a href=&quot;https://repository.folio.org/repository/npm-folio/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://repository.folio.org/repository/npm-folio/&lt;/a&gt;&lt;br/&gt;
Maven: &lt;a href=&quot;https://repository.folio.org/repository/maven-releases/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://repository.folio.org/repository/maven-releases/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For now,  you&apos;ll want to set NPM_SNAPSHOT_REGISTRY=&lt;a href=&quot;https://repository.folio.org/repository/npm-folioci/&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://repository.folio.org/repository/npm-folioci/&lt;/a&gt;.   Later,  when we experiment with publishing artifacts to these repositories,  we&apos;ll need credentials.  &lt;/p&gt;

&lt;p&gt;3) I&apos;m not sure that the &apos;stripes&apos; and &apos;raml-module-builder&apos; repositories are representative of most other module repositories, and, therefore, may not be ideal candidates for this POC.   The &apos;stripes&apos; repository is a really a meta package and &apos;raml-module-builder&apos; is a runtime library - not a module.   There are no module descriptors to post for either git repository and the latter repo does not create Docker artifacts.   &lt;/p&gt;</comment>
                                                            <comment id="198514" author="712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30" created="Thu, 21 Jan 2021 13:14:14 +0000"  >&lt;p&gt;NPM pipeline update:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Setup, lint, test, publishModDescriptor(only for master branch) and SonarQube checks done.&lt;/li&gt;
	&lt;li&gt;Pipeline runs without errors.&lt;/li&gt;
	&lt;li&gt;Issue: in the SonarQube action, env variables are not read so currently the projectName is hardcoded to the current repo(ui-orders). Workaround in progress&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Maven pipeline update:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Setup JDK 11 done&lt;/li&gt;
	&lt;li&gt;RAML linter in progress&lt;/li&gt;
&lt;/ul&gt;
</comment>
                                                            <comment id="198515" author="5f9abc1eb45b2e007453f423" created="Tue, 26 Jan 2021 16:56:04 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=712020%3A66ff5e1e-556d-4407-89fd-6ed1fe9b6b30&quot; class=&quot;user-hover&quot; rel=&quot;712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30&quot; data-account-id=&quot;712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30&quot; accountid=&quot;712020:66ff5e1e-556d-4407-89fd-6ed1fe9b6b30&quot; rel=&quot;noreferrer&quot;&gt;Ankita Sen&lt;/a&gt; - I think we can combine some of the &apos;jobs&apos; so that we are not replicating steps like checkout and &apos;yarn install&apos;,  for example.  I propose renaming the &apos;setup&apos; job to something like &apos;Build&apos;.    The &apos;Build&apos; job can then be used to execute the build,  linting, and unit tests.   Sonarqube doesn&apos;t require a build, so that can be a standalone job.    Publishing the module descriptor is a bit more complicated.   The UI repos can generate a module descriptor without requiring &apos;yarn install&apos;,  but the Maven-based projects require a build to generate the module-descriptor.    Furthermore,  even though a build is not necessary to generate a UI module descriptor, you would still need to set the snapshot version of the artifact.   And to complicate things a little more,  a module descriptor should never be published before a docker image or npm package.  &lt;/p&gt;</comment>
                                                            <comment id="198516" author="5f9abc1eb45b2e007453f423" created="Tue, 26 Jan 2021 17:02:20 +0000"  >&lt;p&gt;There must be some way (hopefully) of temporarily saving artifacts in between &apos;jobs&apos; in Github Actions.   So, for example, creating an artifact in one &apos;job&apos; and then using that artifact in a subsequent &apos;job&apos;.   This might help in some cases.  &lt;a href=&quot;https://docs.github.com/en/actions/guides/storing-workflow-data-as-artifacts&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://docs.github.com/en/actions/guides/storing-workflow-data-as-artifacts&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="198517" author="5f9abc1eb45b2e007453f423" created="Tue, 9 Feb 2021 14:10:54 +0000"  >&lt;p&gt;Next POC demo,  Tuesday, March 2, 2021 - DevOps meeting. &lt;/p&gt;</comment>
                                                            <comment id="198518" author="61cd0ca0bce5e00069e98be7" created="Wed, 3 Mar 2021 14:14:11 +0000"  >&lt;p&gt;A useful tool for developing workflows is &lt;a href=&quot;https://github.com/kislyuk/yq&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/kislyuk/yq&lt;/a&gt;&lt;br/&gt;
 Often i have been confused by simple YAML syntax errors.&lt;br/&gt;
 Great when i remember to use it.&lt;/p&gt;</comment>
                                                            <comment id="198519" author="5f9abc1eb45b2e007453f423" created="Thu, 4 Mar 2021 14:52:21 +0000"  >&lt;p&gt;I started going through the buildNPM Github Actions workflow one line at a time to verify that things are working as expected.  I have a branch of ui-users where I&apos;m testing and refining some parts of the workflow - FOLIO-2913-malc.   &lt;/p&gt;

&lt;p&gt;Some notes: &lt;/p&gt;

&lt;p&gt;1.  Updates to translations in UI repos do not require a full workflow check.   I&apos;m experimenting with implementing this feature by specifying something like:&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;on: 
  push:
    paths-ignore:
      - &apos;translations/**&apos;
  pull_request:
     paths-ignore:
      - &apos;translations/**&apos;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;2. I&apos;m defining some vars at job.&amp;lt;jobid&amp;gt;.env so they are easier to find. &lt;/p&gt;

&lt;p&gt;3.  I&apos;ve added the setup-node@v2 action so that we can control the version(s) of nodejs that is used to build and test. &lt;/p&gt;

&lt;p&gt;4. For &quot;snapshot&quot; builds,  the &apos;folioci_npmver.sh&apos; was not setting the correct version.  A job number needs to be appended to the version.   I&apos;ve done that like this: &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;      - name: Set FOLIO NPM snapshot version
        run: |
          git clone https://github.com/folio-org/folio-tools.git
          npm --no-git-tag-version version `folio-tools/github-actions-scripts/folioci_npmver.sh`
          rm -rf folio-tools
        env:
          JOB_ID: ${{ github.run_number }}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If possible I&apos;d like to explore the possibility of just including that whole shell script in the workflow to save a &apos;git clone&apos; step. &lt;/p&gt;

&lt;p&gt;5. I don&apos;t think we need to publish a Lint output artifact.  Devs can just look at the build log for Lint output. &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;      - name: Yarn lint
        run: yarn lint
        continue-on-error: true
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;6.  I think we need to publish junit test results for the &apos;yarn test&apos; step whether it passes or fails.   There seems to be an action that can do this here:   &lt;a href=&quot;https://github.com/marketplace/actions/publish-unit-test-results&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/marketplace/actions/publish-unit-test-results&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7.  publish the yarn.lock only if build fails.  &lt;/p&gt;

&lt;p&gt;8.  The Sonarqube job requires the code coverage report generated by &apos;yarn test&apos;.   Therefore,  the sonarqube job &apos;needs&apos; the build job and the coverage report generated from &apos;yarn test&apos; - specifically the Jest coverage report.   I guess we can do an artifact upload/download to accomplish this.  &lt;/p&gt;

&lt;p&gt;9.  We should publish code coverage reports for both BigTest and Jest which are in html format.  I&apos;m not sure what&apos;s the best way to accomplish this.   I&apos;m not sure if there is an &quot;html publisher github action&quot; available similar to Jenkins HTML Publisher plugin.  &lt;/p&gt;


&lt;p&gt;Also some tasks I need to do so that we can test master branch builds and publishing artifacts:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Set up test Nexus snapshot repository&lt;/li&gt;
	&lt;li&gt;Set up test Okapi registry&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I&apos;d like to focus now on the workflows for UI/Stripes repositories this point.    When we roll this out,  we will role it out to these repos first.   One thing we need to be careful of is snapshot versioning.  The GA workflows will probably have lower versions that existing artifacts generated by Jenkins.  Therefore, we will need to address this,  maybe by padding the version genersated by foliociver.sh with some extra &apos;0&apos;s.    &lt;/p&gt;

</comment>
                                                            <comment id="198520" author="5f9abc1eb45b2e007453f423" created="Thu, 4 Mar 2021 21:56:03 +0000"  >&lt;p&gt;I have a working &apos;build&apos; job workflow here  with some of the junit and artifacts. &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/folio-org/ui-orders/blob/FOLIO-2913-malc/.github/workflows/buildNPM.yml&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/ui-orders/blob/FOLIO-2913-malc/.github/workflows/buildNPM.yml&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="198521" author="61cd0ca0bce5e00069e98be7" created="Tue, 9 Mar 2021 04:45:33 +0000"  >&lt;p&gt;Sometimes one workflow will require the successful outcome of another workflow.&lt;/p&gt;

&lt;p&gt;For example, a back-end module will do the &quot;api-lint&quot; task on all branches. The &quot;api-doc&quot; task will only happen on merge to mainline, and on release. Also the &quot;api-doc&quot; task would not run if there are errors reported by &quot;api-lint&quot; (which would distort the generated API documentation).&lt;/p&gt;

&lt;p&gt;There is a demonstration in &quot;mod-notes&quot; of &lt;a href=&quot;https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_run&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;workflow_run&lt;/a&gt; (and a supporting community &lt;a href=&quot;https://github.community/t/workflow-run-completed-event-triggered-by-failed-workflow/128001/2&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;answer&lt;/a&gt;):&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/folio-org/mod-notes/tree/folio-2913-depend-workflow/.github/workflows&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/mod-notes/tree/folio-2913-depend-workflow/.github/workflows&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="198522" author="5f9abc1eb45b2e007453f423" created="Tue, 9 Mar 2021 13:33:07 +0000"  >&lt;p&gt;Oh that&apos;s cool,  &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=61cd0ca0bce5e00069e98be7&quot; class=&quot;user-hover&quot; rel=&quot;61cd0ca0bce5e00069e98be7&quot; data-account-id=&quot;61cd0ca0bce5e00069e98be7&quot; accountid=&quot;61cd0ca0bce5e00069e98be7&quot; rel=&quot;noreferrer&quot;&gt;David Crossley&lt;/a&gt;.  Can you think of a scenario or use case in our CI environment where it makes more sense to use workflow_run rather than just combining jobs into a single workflow?  &lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="82084">FOLIO-3067</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="10155"><![CDATA[FOLIO DevOps]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzx6m9:zmzx8w</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1990">DevOps: Sprint 105</customfieldvalue>
    <customfieldvalue id="1991">DevOps Sprint 109</customfieldvalue>
    <customfieldvalue id="1880">DevOps Sprint 107</customfieldvalue>
    <customfieldvalue id="1881">DevOps Sprint 108</customfieldvalue>
    <customfieldvalue id="1884">DevOps: Sprint 104</customfieldvalue>
    <customfieldvalue id="1980">DevOps Sprint 106</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 5 Jan 2021 16:43:10 +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>