Skip to content

Merge pull request #400 from zowe/1000TurquoisePogs-patch-1 #821

Merge pull request #400 from zowe/1000TurquoisePogs-patch-1

Merge pull request #400 from zowe/1000TurquoisePogs-patch-1 #821

Workflow file for this run

name: Build and Test Workflow
permissions:
id-token: write
issues: write
pull-requests: write
contents: write
on:
push:
branches:
- v2.x/master
pull_request:
types: [opened, synchronize]
workflow_dispatch:
inputs:
PERFORM_RELEASE:
description: 'Perform release?'
required: false
default: false
type: boolean
env:
IMAGE_BASE_DIR: container
jobs:
check-permission:
runs-on: ubuntu-latest
steps:
# this action will fail the whole workflow if permission check fails
- name: check permission
uses: zowe-actions/shared-actions/permission-check@main
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
validate-package-json:
needs: check-permission
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Validate package.json
uses: zowe-actions/shared-actions/validate-package-json@main
with:
excluded-packages: explorer-fvt-utilities
# integration-test:
# runs-on: ubuntu-latest
# needs: validate-package-json
# steps:
# - name: '[Prep 1] Checkout'
# uses: actions/checkout@v2
#
# - name: '[Prep 2] Cache node modules'
# uses: actions/cache@v3
# with:
# # npm cache files are stored in `~/.npm` on Linux/macOS
# path: |
# ~/.npm
# ~/.nvm/.cache
# ~/.nvm/versions
# key: ${{ runner.os }}-build-cache-node-modules-${{ hashFiles('**/package-lock.json') }}
# restore-keys: |
# ${{ runner.os }}-build-cache-node-modules-
- name: '[Prep 3] Prepare workflow'
uses: zowe-actions/shared-actions/prepare-workflow@main
- name: '[Prep 4] Setup Node'
uses: actions/setup-node@v2
with:
node-version: 16
- name: '[Setup] NodeJS project setup'
uses: zowe-actions/nodejs-actions/setup@main
with:
package-name: 'org.zowe.explorer-jes'
# - name: '[Test 1] Preparing integration test'
# run: |
# echo "Preparing server for integration test ..."
# ./bin/prepare-fvt.sh \
# "${CUSTOM_FVT_ZOSMF_HOST:-${{ env.DEFAULT_FVT_ZOSMF_HOST }}}" \
# "${CUSTOM_FVT_ZOSMF_PORT:-${{ env.DEFAULT_FVT_ZOSMF_PORT }}}"
# sleep 120
# - name: "[Test 2] Start integration test"
# run: |
# export ZOWE_USERNAME=${{ secrets.SSH_MARIST_USERNAMEP }}
# export ZOWE_PASSWORD=${{ secrets.SSH_MARIST_PASSWORDP }}
# ./bin/delete-fvt-jobs.sh
# echo "Starting integration test ..."
# export SERVER_HOST_NAME=${CUSTOM_FVT_SERVER_HOSTNAME:-${{ env.DEFAULT_FVT_SERVER_HOSTNAME }}}
# export SERVER_HTTPS_PORT=7554
# export TEST_BROWSER=firefox
# npm run test:fvt
# # Uncomment the env part to customize test parameters
# #env:
# # CUSTOM_FVT_ZOSMF_HOST:
# # CUSTOM_FVT_ZOSMF_PORT:
# # CUSTOM_FVT_SERVER_HOSTNAME:
# - name: "[Post Test 1] Print container service logs - discovery-service"
# if: always()
# run: |
# cd .fvt
# docker compose logs discovery-service
# - name: "[Post Test 2] Print container service logs - gateway-service"
# if: always()
# run: |
# cd .fvt
# docker compose logs gateway-service
# - name: "[Post Test 3] Print container service logs - explorer-jes"
# if: always()
# run: |
# cd .fvt
# docker compose logs explorer-jes
regular-build:
runs-on: ubuntu-latest
needs: validate-package-json
steps:
- name: '[Prep 1] Checkout'
uses: actions/checkout@v2
- name: '[Prep 2] Cache node modules'
uses: actions/cache@v3
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: |
~/.npm
~/.nvm/.cache
~/.nvm/versions
key: ${{ runner.os }}-build-cache-node-modules-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-cache-node-modules-
- name: '[Prep 3] Setup jFrog CLI'
uses: jfrog/setup-jfrog-cli@v2
env:
JF_ENV_1: ${{ secrets.JF_ARTIFACTORY_TOKEN }}
- name: '[Prep 4] Prepare workflow'
uses: zowe-actions/shared-actions/prepare-workflow@main
- name: '[Prep 5] Setup Node'
uses: actions/setup-node@v2
with:
node-version: 16
- name: '[Setup] NodeJS project setup'
uses: zowe-actions/nodejs-actions/setup@main
with:
package-name: 'org.zowe.explorer-jes'
- name: '[Build] Nodejs project build'
run: npm run prod
- name: '[Test] Nodejs project unit test'
run: npm run test
- name: '[Scan 1] Fix code coverage paths'
working-directory: ./coverage
run: sed -i 's#'$GITHUB_WORKSPACE'#/github/workspace/#g' lcov.info
- name: '[Scan 2] SonarCloud Scan'
uses: sonarsource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }}
sonar.projectVersion: ${{ env.P_VERSION }}
sonar.links.ci: 'https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}'
- name: '[Packaging] Make pax'
uses: zowe-actions/shared-actions/make-pax@main
with:
pax-name: 'explorer-jes'
pax-options: '-o saveext'
pax-ssh-username: ${{ secrets.SSH_MARIST_USERNAME }}
pax-ssh-password: ${{ secrets.SSH_MARIST_RACF_PASSWORD }}
- name: '[Publish] Publish'
uses: zowe-actions/shared-actions/publish@main
if: success()
with:
artifacts: .pax/explorer-jes.pax
perform-release: ${{ github.event.inputs.PERFORM_RELEASE }}
- name: 'Call build image workflow'
if: ${{ success() && github.event.inputs.PERFORM_RELEASE == 'true' && env.IS_RELEASE_BRANCH == 'true' }}
uses: zowe-actions/shared-actions/workflow-remote-call-wait@main
with:
github-token: ${{ secrets.ZOWE_ROBOT_TOKEN }}
owner: zowe
repo: explorer-jes
workflow-filename: explorer-jes-images.yml
branch-name: ${{ github.ref_name }}
poll-frequency: 1
inputs-json-string: '{"release":"true"}'
# env:
# DEBUG: 'workflow-remote-call-wait'
- name: '[Release 1] Release (if necessary)'
if: ${{ success() && github.event.inputs.PERFORM_RELEASE == 'true' && env.IS_RELEASE_BRANCH == 'true' }}
uses: zowe-actions/shared-actions/release@main
- name: '[Release 2] NPM bump version (if necessary)'
if: ${{ success() && github.event.inputs.PERFORM_RELEASE == 'true' && env.IS_RELEASE_BRANCH == 'true' && env.IS_FORMAL_RELEASE_BRANCH == 'true' && env.PRE_RELEASE_STRING == ''}}
uses: zowe-actions/nodejs-actions/bump-version@main
env:
GITHUB_TOKEN: ${{ secrets.ZOWE_ROBOT_TOKEN }}