Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
root = true

[*]
indent_style = tab
tab_width = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf
max_line_length = off

[*.yml]
indent_style = space
indent_size = 2
14 changes: 14 additions & 0 deletions .github/workflows/ocpl_cm_standards_check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: OCPL Configuration Management Standards Check

on:
pull_request:
types: [opened, reopened, synchronize, ready_for_review]

permissions:
contents: read

jobs:
commitlint_remote:
uses: nciocpl/.github/.github/workflows/ocpl_cm_standards_check.yml@workflow/v4
with:
config_ref: workflow/v4
181 changes: 181 additions & 0 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
name: Workflow
on:
workflow_call:

permissions:
contents: read

jobs:
build:
permissions:
contents: read
packages: read # For npm install from GH Packages
pull-requests: write # For adding comments to PRs
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@v8
# Only comment on PRs, and only when first updated.
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@v6
## Setup node and npm caching.
- name: Setup Node
uses: actions/setup-node@v6
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@v5
with:
name: build-artifact
path: dist/


deploy-test:
name: Deploy built artifacts to test server
## Only do this if the repo is in 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@v6
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) }}
24 changes: 24 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?