Build and Test Workflow #181
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Test Workflow | |
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 | |
build-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@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@v4 | |
with: | |
node-version: 16 | |
- name: '[Setup] NodeJS project setup' | |
uses: zowe-actions/nodejs-actions/setup@main | |
with: | |
package-name: 'org.zowe.explorer-uss' | |
- 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-uss' | |
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-uss.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 }} | |
build-ubuntu-amd64: | |
runs-on: ubuntu-latest | |
needs: validate-package-json | |
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-uss | |
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 | |
build-ubuntu-s390x: | |
runs-on: ubuntu-latest | |
needs: validate-package-json | |
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-uss | |
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-uss | |
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: | |
runs-on: ubuntu-latest | |
needs: validate-package-json | |
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-uss | |
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: | |
runs-on: ubuntu-latest | |
needs: validate-package-json | |
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-uss | |
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-uss | |
linux-distro: ubi | |
- uses: zowe-actions/shared-actions/docker-manifest@main | |
with: | |
linux-distro: ubi | |
cpu-arch-list: "amd64 s390x" | |
timeout-minutes: 2 |