Skip to content

Merge pull request #269 from zowe/deps/v1/react-router #314

Merge pull request #269 from zowe/deps/v1/react-router

Merge pull request #269 from zowe/deps/v1/react-router #314

Workflow file for this run

name: Build and Test Workflow
on:
push:
branches:
- v1.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
build-ubuntu-amd64:
needs: validate-package-json
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: zowe-actions/shared-actions/prepare-workflow@main
- uses: zowe-actions/shared-actions/docker-prepare@main
with:
registry-user: ${{ secrets.ARTIFACTORY_X_USERNAME }}
registry-password: ${{ secrets.ARTIFACTORY_X_PASSWORD }}
release: ${{ github.event.inputs.PERFORM_RELEASE }}
base-directory: ${{ env.IMAGE_BASE_DIR }}
image-name: explorer-mvs
linux-distro: ubuntu
cpu-arch: amd64
- uses: zowe-actions/shared-actions/docker-build-local@main
with:
build-arg-list: ZOWE_BASE_IMAGE=latest-ubuntu
timeout-minutes: 5
outputs:
IMAGE_NAME_FULL_REMOTE: ${{ env.IMAGE_NAME_FULL_REMOTE }}
build-ubuntu-s390x:
needs: validate-package-json
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: zowe-actions/shared-actions/prepare-workflow@main
- uses: zowe-actions/shared-actions/docker-prepare@main
with:
registry-user: ${{ secrets.ARTIFACTORY_X_USERNAME }}
registry-password: ${{ secrets.ARTIFACTORY_X_PASSWORD }}
release: ${{ github.event.inputs.PERFORM_RELEASE }}
base-directory: ${{ env.IMAGE_BASE_DIR }}
image-name: explorer-mvs
linux-distro: ubuntu
cpu-arch: s390x
- uses: zowe-actions/shared-actions/docker-build-zlinux@main
with:
zlinux-host: ${{ secrets.ZLINUX_HOST }}
zlinux-ssh-user: ${{ secrets.ZLINUX_SSH_USER }}
zlinux-ssh-key: ${{ secrets.ZLINUX_SSH_KEY }}
zlinux-ssh-passphrase: ${{ secrets.ZLINUX_SSH_PASSPHRASE }}
build-arg-list: ZOWE_BASE_IMAGE=latest-ubuntu
timeout-minutes: 10
define-ubuntu-manifest:
needs:
- build-ubuntu-amd64
- build-ubuntu-s390x
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: zowe-actions/shared-actions/prepare-workflow@main
- uses: zowe-actions/shared-actions/docker-prepare@main
with:
registry-user: ${{ secrets.ARTIFACTORY_X_USERNAME }}
registry-password: ${{ secrets.ARTIFACTORY_X_PASSWORD }}
release: ${{ github.event.inputs.PERFORM_RELEASE }}
base-directory: ${{ env.IMAGE_BASE_DIR }}
image-name: explorer-mvs
linux-distro: ubuntu
- uses: zowe-actions/shared-actions/docker-manifest@main
with:
linux-distro: ubuntu
cpu-arch-list: "amd64 s390x"
timeout-minutes: 2
build-ubi-amd64:
needs: validate-package-json
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: zowe-actions/shared-actions/prepare-workflow@main
- uses: zowe-actions/shared-actions/docker-prepare@main
with:
registry-user: ${{ secrets.ARTIFACTORY_X_USERNAME }}
registry-password: ${{ secrets.ARTIFACTORY_X_PASSWORD }}
release: ${{ github.event.inputs.PERFORM_RELEASE }}
base-directory: ${{ env.IMAGE_BASE_DIR }}
image-name: explorer-mvs
linux-distro: ubi
cpu-arch: amd64
redhat-registry: ${{ env.DEFAULT_REDHAT_DOCKER_REGISTRY }}
redhat-registry-user: ${{ secrets.REDHAT_DEVELOPER_USER }}
redhat-registry-password: ${{ secrets.REDHAT_DEVELOPER_PASSWORD }}
- uses: zowe-actions/shared-actions/docker-build-local@main
with:
build-arg-list: ZOWE_BASE_IMAGE=latest-ubi
timeout-minutes: 5
build-ubi-s390x:
needs: validate-package-json
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: zowe-actions/shared-actions/prepare-workflow@main
- uses: zowe-actions/shared-actions/docker-prepare@main
with:
registry-user: ${{ secrets.ARTIFACTORY_X_USERNAME }}
registry-password: ${{ secrets.ARTIFACTORY_X_PASSWORD }}
release: ${{ github.event.inputs.PERFORM_RELEASE }}
base-directory: ${{ env.IMAGE_BASE_DIR }}
image-name: explorer-mvs
linux-distro: ubi
cpu-arch: s390x
- uses: zowe-actions/shared-actions/docker-build-zlinux@main
with:
zlinux-host: ${{ secrets.ZLINUX_HOST }}
zlinux-ssh-user: ${{ secrets.ZLINUX_SSH_USER }}
zlinux-ssh-key: ${{ secrets.ZLINUX_SSH_KEY }}
zlinux-ssh-passphrase: ${{ secrets.ZLINUX_SSH_PASSPHRASE }}
redhat-registry: ${{ env.DEFAULT_REDHAT_DOCKER_REGISTRY }}
redhat-registry-user: ${{ secrets.REDHAT_DEVELOPER_USER }}
redhat-registry-password: ${{ secrets.REDHAT_DEVELOPER_PASSWORD }}
build-arg-list: ZOWE_BASE_IMAGE=latest-ubi
timeout-minutes: 10
define-ubi-manifest:
needs:
- build-ubi-amd64
- build-ubi-s390x
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: zowe-actions/shared-actions/prepare-workflow@main
- uses: zowe-actions/shared-actions/docker-prepare@main
with:
registry-user: ${{ secrets.ARTIFACTORY_X_USERNAME }}
registry-password: ${{ secrets.ARTIFACTORY_X_PASSWORD }}
release: ${{ github.event.inputs.PERFORM_RELEASE }}
base-directory: ${{ env.IMAGE_BASE_DIR }}
image-name: explorer-mvs
linux-distro: ubi
- uses: zowe-actions/shared-actions/docker-manifest@main
with:
linux-distro: ubi
cpu-arch-list: "amd64 s390x"
timeout-minutes: 2
# test on explorer-mvs image
integration-test:
runs-on: ubuntu-latest
needs: build-ubuntu-amd64
steps:
- name: '[Prep 1] Checkout'
uses: actions/checkout@v2
- name: '[Prep 2] Cache node modules'
uses: actions/cache@v2
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: 10.18.1
# - name: '[Prep extra] explorer-mvs exclusive - upgrade npm to v7'
# run: |
# npm install -g npm
# npm -v
- name: '[Setup] NodeJS project setup'
uses: zowe-actions/nodejs-actions/setup@main
with:
package-name: 'org.zowe.explorer-mvs'
- 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 }}}" \
"${{ needs.build-ubuntu-amd64.outputs.IMAGE_NAME_FULL_REMOTE }}"
sleep 120
- name: "[Test 2] Start integration test"
run: |
export ZOWE_USERNAME=${{ secrets.SSH_MARIST_USERNAMEP }}
export ZOWE_PASSWORD=${{ secrets.SSH_MARIST_PASSWORDP }}
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-mvs"
if: always()
run: |
cd .fvt
docker compose logs explorer-mvs
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@v2
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: 10.18.1
# - name: '[Prep extra] explorer-mvs exclusive - upgrade npm to v7'
# run: |
# npm install -g npm
# npm -v
- name: '[Setup] NodeJS project setup'
uses: zowe-actions/nodejs-actions/setup@main
with:
package-name: 'org.zowe.explorer-mvs'
- 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-mvs'
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-mvs.pax
perform-release: ${{ github.event.inputs.PERFORM_RELEASE }}
- 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 }}