diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index a992a8a..3b479d2 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -12,170 +12,12 @@ on: tags: - '*' pull_request: -jobs: - build: - name: Build, Test and Upload Artifacts - runs-on: ubuntu-22.04 - steps: - ## Setup variables for build info - - name: Set Variables - id: set_vars - run: | - ## PUSH - if [ "${{ github.event_name }}" == "push" ]; then - BUILD_NAME=$(sed -E 's/refs\/(heads|tags)\///; s/\//__/g;' <<< $GITHUB_REF) - BRANCH_NAME=$(sed -E 's/refs\/(heads|tags)\///;' <<< $GITHUB_REF) - COMMIT_HASH=$(echo "${GITHUB_SHA}") - ## PULL_REQUEST - elif [ "${{ github.event_name }}" == "pull_request" ]; then - BUILD_NAME=$(echo "pr-${{ github.event.pull_request.number }}") - BRANCH_NAME=$(echo "pr-${{ github.event.pull_request.number }}") - COMMIT_HASH=$(echo "${{ github.event.pull_request.head.sha }}") - else - ## ERROR - exit 1 - fi - - ## For step checks and artifact deployment path. - ## Same for push and PR - export REPO_FULL=${{ github.repository }} - export REPO_RE='([^/]+)/(.*)' - [[ "$REPO_FULL" =~ $REPO_RE ]] - REPO_OWNER=$(echo "${BASH_REMATCH[1]}") - REPO_NAME=$(echo "${BASH_REMATCH[2]}") - - ## Set step outputs for later use - echo "build_name=${BUILD_NAME}" >> $GITHUB_OUTPUT - echo "branch_name=${BRANCH_NAME}" >> $GITHUB_OUTPUT - echo "commit_hash=${COMMIT_HASH}" >> $GITHUB_OUTPUT - echo "repo_owner=${REPO_OWNER}" >> $GITHUB_OUTPUT - echo "repo_name=${REPO_NAME}" >> $GITHUB_OUTPUT - - name: Add Comment on Where to Test - uses: actions/github-script@v6 - if: startsWith(github.repository, 'NCIOCPL') && github.event_name == 'pull_request' && github.event.action == 'opened' - env: - BUILD_NAME: ${{steps.set_vars.outputs.build_name}} - REPO_NAME: ${{steps.set_vars.outputs.repo_name}} - with: - github-token: ${{secrets.GITHUB_TOKEN}} - ## NOTE: The script below is JavaScript - script: | - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: ` - ## Viewing Information - * [The testing site](https://static-dev.cancer.gov/launchables/${ process.env.REPO_NAME }/${ process.env.BUILD_NAME }/index.html) - ` - }) - ## This clones and checks out. - - name: Checkout branch - uses: actions/checkout@v4 - ## Setup node and npm caching. - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version-file: '.nvmrc' - cache: 'npm' - registry-url: https://npm.pkg.github.com - scope: '@nciocpl' - cache-dependency-path: '**/package-lock.json' - ## Install using CI - - name: Install Dependencies - run: npm ci - env: - CI: true - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - ## Lint the code - #- name: Run Lint - # run: yarn lint - # env: - # CI: true - ## Now test the code - #- name: Run Tests - # run: yarn test - # env: - # CI: true - ## Build the app in prep for publishing - - name: Build App - run: npm run build - env: - CI: true - ## Set public Base path for branch - PUBLIC_PATH: ${{ format('/launchables/{0}/{1}', steps.set_vars.outputs.repo_name, steps.set_vars.outputs.build_name) }} - ## Generate build-info.json to house information about this specific build. - ## Used for product test deployment - - name: Create Build Information - env: - BUILD_INFO: ${{ toJson(steps.set_vars.outputs) }} - run: | - echo $BUILD_INFO - echo $BUILD_INFO > ./dist/build-info.json - - name: Archive production artifacts - uses: actions/upload-artifact@v4 - with: - name: build-artifact - path: dist/ - deploy-test: - name: Deploy built artifacts to test server - ## Only do this if the repo is NCIOCPL - if: startsWith(github.repository, 'NCIOCPL') - ## This job depends on build completing - needs: build - runs-on: ubuntu-latest - steps: - - name: Download built app - uses: actions/download-artifact@v4 - with: - name: build-artifact - path: build-artifact - ## Setup vars from Build Info from build job - - name: Setup Job env - run: | - ls -l - ## Set Vars - BUILD_NAME=$(jq -r '.build_name' < ./build-artifact/build-info.json) - BRANCH_NAME=$(jq -r '.branch_name' < ./build-artifact/build-info.json) - COMMIT_HASH=$(jq -r '.commit_hash' < ./build-artifact/build-info.json) - REPO_OWNER=$(jq -r '.repo_owner' < ./build-artifact/build-info.json) - REPO_NAME=$(jq -r '.repo_name' < ./build-artifact/build-info.json) - ## Set Action Env - echo "BUILD_NAME=${BUILD_NAME}" >> $GITHUB_ENV - echo "BRANCH_NAME=${BRANCH_NAME}" >> $GITHUB_ENV - echo "COMMIT_HASH=${COMMIT_HASH}" >> $GITHUB_ENV - echo "REPO_OWNER=${REPO_OWNER}" >> $GITHUB_ENV - echo "REPO_NAME=${REPO_NAME}" >> $GITHUB_ENV - - ######## ERROR IF PR FROM FORK - if [ "$REPO_OWNER" != "NCIOCPL" ]; then - echo "YOU SHOULD NOT SEND PR FROM FORK!!!" - exit 1 - fi - ## We need to create the zip for netstorage - - name: Zip Build Artifact - run: | - pushd build-artifact - zip -r ../${BUILD_NAME}.zip * - popd - - name: Upload artifact to netstorage - uses: nciocpl/netstorage-upload-action@v1.0.0 - with: - hostname: ${{ secrets.launchables_ns_hostname }} - cp-code: ${{ secrets.launchables_ns_cpcode }} - key-name: ${{ secrets.launchables_ns_keyname }} - key: ${{ secrets.launchables_ns_key }} - index-zip: true - local-path: ${{ format('{0}.zip', env.BUILD_NAME) }} - ## Note this action automatically prepends the cpcode to the path. - destination-path: ${{ format('/{0}/{1}.zip', env.REPO_NAME, env.BUILD_NAME) }} - - name: Clear Site Cache - uses: nciocpl/akamai-purge-action@v1.0.2 - with: - hostname: ${{ secrets.launchables_eg_hostname }} - client-token: ${{ secrets.launchables_eg_client_token }} - client-secret: ${{ secrets.launchables_eg_client_secret }} - access-token: ${{ secrets.launchables_eg_access_token }} - type: 'cpcodes' - ref: ${{ format('{0},{1}', secrets.launchables_ns_cpcode, secrets.launchables_prop_cpcode) }} +jobs: + ci_remote: + uses: nciocpl/launchables/.github/workflows/workflow.yml@workflow/v1 + permissions: + contents: read + packages: read # For npm install from GH Packages + pull-requests: write # For adding comments to PRs + secrets: inherit