syntax fixes #1585
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
# Main workflow for VFB Geppetto Application | |
name: CI | |
####################### | |
# Workflow Triggers | |
####################### | |
on: | |
push: | |
branches: '**' | |
tags: 'v*' | |
pull_request: | |
branches: '**' | |
workflow_dispatch: | |
workflow_run: | |
workflows: [Build] | |
types: [completed] | |
####################### | |
# Jobs Configuration | |
####################### | |
jobs: | |
deploy-test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 590 | |
steps: | |
####################### | |
# Initial Setup | |
####################### | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
####################### | |
# Branch Configuration | |
####################### | |
- name: Pass branch | |
id: branch | |
run: | | |
echo "::set-output name=value::$(echo ${GITHUB_REF} | sed 's@refs/heads/@@g' | sed 's@refs/tags/@@g' )" | |
echo "::set-output name=clean::$(echo ${GITHUB_REF} | sed 's@refs/heads/@@g' | sed 's@refs/tags/@@g' | sed 's@[/\\]@-@g')" | |
####################### | |
# Server Configuration | |
####################### | |
- name: Setup local servers | |
id: local-servers | |
shell: bash | |
run: | | |
if [ "${GITHUB_REF#refs/heads/}" == master ] || [[ "${GITHUB_REF#refs/heads/}" == v* ]]; then | |
echo "::debug::Set to master setup" | |
echo "::set-output name=VFB_PDB_SERVER::http://pdb:7474" | |
echo "::set-output name=VFB_OWL_SERVER::http://owl:8080/kbs/vfb/" | |
echo "::set-output name=VFB_R_SERVER::http://ocpu:80/ocpu/library/vfbr/R/vfb_nblast" | |
echo "::set-output name=VFB_TREE_PDB_SERVER::https://pdb.v4.virtualflybrain.org" | |
echo "::set-output name=SOLR_SERVER::https://solr.virtualflybrain.org/solr/ontology/select" | |
echo "::set-output name=BUILD_TYPE::release" | |
elif [ "${GITHUB_REF#refs/heads/}" == debug ] || [ "${GITHUB_REF#refs/heads/}" == pipeline2 ] || [ "${GITHUB_REF#refs/heads/}" == vfb_geppetto_application ] || [ "${GITHUB_REF#refs/heads/}" == development ] || [[ "${GITHUB_REF#refs/heads/}" == f* ]]; then | |
echo "::debug::Set to dev setup" | |
echo "::set-output name=VFB_PDB_SERVER::http://pdb:7474" | |
echo "::set-output name=VFB_OWL_SERVER::http://owl:8080/kbs/vfb/" | |
echo "::set-output name=VFB_R_SERVER::http://ocpu:80/ocpu/library/vfbr/R/vfb_nblast" | |
echo "::set-output name=VFB_TREE_PDB_SERVER::https://pdb-dev.virtualflybrain.org" | |
echo "::set-output name=SOLR_SERVER::https://solr-dev.virtualflybrain.org/solr/ontology/select" | |
echo "::set-output name=BUILD_TYPE::development" | |
elif [ "${GITHUB_REF#refs/heads/}" == alpha ] ; then | |
echo "::debug::Set to alpha setup" | |
echo "::set-output name=VFB_PDB_SERVER::http://pdb:7474" | |
echo "::set-output name=VFB_OWL_SERVER::http://owl:8080/kbs/vfb/" | |
echo "::set-output name=VFB_R_SERVER::http://ocpu:80/ocpu/library/vfbr/R/vfb_nblast" | |
echo "::set-output name=VFB_TREE_PDB_SERVER::https://pdb-alpha.virtualflybrain.org" | |
echo "::set-output name=SOLR_SERVER::https://solr-alpha.virtualflybrain.org/solr/ontology/select" | |
echo "::set-output name=BUILD_TYPE::staging" | |
else | |
echo "::debug::Set to default setup" | |
echo "::set-output name=VFB_PDB_SERVER::http://pdb:7474" | |
echo "::set-output name=VFB_OWL_SERVER::http://owl:8080/kbs/vfb/" | |
echo "::set-output name=VFB_R_SERVER::http://ocpu:80/ocpu/library/vfbr/R/vfb_nblast" | |
echo "::set-output name=VFB_TREE_PDB_SERVER::https://pdb.v4.virtualflybrain.org" | |
echo "::set-output name=SOLR_SERVER::https://solr.virtualflybrain.org/solr/ontology/select" | |
echo "::set-output name=BUILD_TYPE::release" | |
fi | |
- name: Setup remote servers | |
id: remote-servers | |
shell: bash | |
run: | | |
if [ "${GITHUB_REF#refs/heads/}" == master ] || [[ "${GITHUB_REF#refs/heads/}" == v* ]]; then | |
echo "::debug::Set to master setup" | |
echo "::set-output name=VFB_PDB_SERVER::http://pdb.v4.virtualflybrain.org" | |
echo "::set-output name=VFB_TREE_PDB_SERVER::https://pdb.v4.virtualflybrain.org" | |
echo "::set-output name=VFB_OWL_SERVER::http://owl.virtualflybrain.org/kbs/vfb/" | |
echo "::set-output name=VFB_R_SERVER::http://r.virtualflybrain.org/ocpu/library/vfbr/R/vfb_nblast" | |
echo "::set-output name=SOLR_SERVER::https://solr.virtualflybrain.org/solr/ontology/select" | |
echo "::set-output name=BUILD_TYPE::release" | |
elif [ "${GITHUB_REF#refs/heads/}" == debug ] || [ "${GITHUB_REF#refs/heads/}" == pipeline2 ] || [ "${GITHUB_REF#refs/heads/}" == vfb_geppetto_application ] || [ "${GITHUB_REF#refs/heads/}" == development ] || [[ "${GITHUB_REF#refs/heads/}" == f* ]]; then | |
echo "::debug::Set to dev setup" | |
echo "::set-output name=VFB_PDB_SERVER::http://pdb-dev.virtualflybrain.org" | |
echo "::set-output name=VFB_OWL_SERVER::http://owl-dev.virtualflybrain.org/kbs/vfb/" | |
echo "::set-output name=VFB_R_SERVER::http://r.virtualflybrain.org/ocpu/library/vfbr/R/vfb_nblast" | |
echo "::set-output name=VFB_TREE_PDB_SERVER::https://pdb-dev.virtualflybrain.org" | |
echo "::set-output name=SOLR_SERVER::https://solr-dev.virtualflybrain.org/solr/ontology/select" | |
echo "::set-output name=BUILD_TYPE::release" | |
elif [ "${GITHUB_REF#refs/heads/}" == alpha ] ; then | |
echo "::debug::Set to alpha setup" | |
echo "::set-output name=VFB_PDB_SERVER::http://pdb-alpha.virtualflybrain.org" | |
echo "::set-output name=VFB_OWL_SERVER::http://owl-alpha.virtualflybrain.org/kbs/vfb/" | |
echo "::set-output name=VFB_R_SERVER::http://r.virtualflybrain.org/ocpu/library/vfbr/R/vfb_nblast" | |
echo "::set-output name=VFB_TREE_PDB_SERVER::https://pdb-alpha.virtualflybrain.org" | |
echo "::set-output name=SOLR_SERVER::https://solr-alpha.virtualflybrain.org/solr/ontology/select" | |
echo "::set-output name=BUILD_TYPE::release" | |
else | |
echo "::debug::Set to default setup" | |
echo "::set-output name=VFB_PDB_SERVER::http://pdb.v4.virtualflybrain.org" | |
echo "::set-output name=VFB_OWL_SERVER::http://owl.virtualflybrain.org/kbs/vfb/" | |
echo "::set-output name=VFB_R_SERVER::http://r.virtualflybrain.org/ocpu/library/vfbr/R/vfb_nblast" | |
echo "::set-output name=VFB_TREE_PDB_SERVER::https://pdb.v4.virtualflybrain.org" | |
echo "::set-output name=SOLR_SERVER::https://solr.virtualflybrain.org/solr/ontology/select" | |
echo "::set-output name=BUILD_TYPE::release" | |
fi | |
- name: Used remote servers | |
run: | | |
echo PDB:${{ steps.remote-servers.outputs.VFB_PDB_SERVER }} | |
echo OWL:${{ steps.remote-servers.outputs.VFB_OWL_SERVER }} | |
echo SOLR:${{ steps.remote-servers.outputs.SOLR_SERVER }} | |
echo TREE_PDB:${{ steps.remote-servers.outputs.VFB_TREE_PDB_SERVER }} | |
echo R:${{ steps.remote-servers.outputs.VFB_R_SERVER }} | |
####################### | |
# Docker Setup | |
####################### | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Login to DockerHub | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
####################### | |
# Docker Build & Push | |
####################### | |
- name: Build and push local wss | |
id: docker_build_local | |
timeout-minutes: 290 | |
uses: docker/build-push-action@v2 | |
with: | |
push: true | |
tags: "virtualflybrain/geppetto-vfb:${{ steps.branch.outputs.clean }}-local.wss" | |
build-args: | | |
VFB_TREE_PDB_SERVER_ARG=${{ steps.local-servers.outputs.VFB_TREE_PDB_SERVER }} | |
SOLR_SERVER_ARG=${{ steps.local-servers.outputs.SOLR_SERVER }} | |
VFB_R_SERVER_ARG=${{ steps.local-servers.outputs.VFB_R_SERVER }} | |
VFB_OWL_SERVER_ARG=${{ steps.local-servers.outputs.VFB_OWL_SERVER }} | |
VFB_PDB_SERVER_ARG=${{ steps.local-servers.outputs.VFB_PDB_SERVER }} | |
build_type=${{ steps.local-servers.outputs.BUILD_TYPE }} | |
targetBranch=${{ steps.branch.outputs.value }} | |
originBranch=${{ steps.branch.outputs.value }} | |
defaultBranch=development | |
finalBuild=true | |
- name: Build and push remote | |
id: docker_build_remote | |
timeout-minutes: 290 | |
uses: docker/build-push-action@v2 | |
with: | |
push: true | |
tags: "virtualflybrain/geppetto-vfb:${{ steps.branch.outputs.clean }}-remote" | |
build-args: | | |
VFB_TREE_PDB_SERVER_ARG=${{ steps.remote-servers.outputs.VFB_TREE_PDB_SERVER }} | |
SOLR_SERVER_ARG=${{ steps.remote-servers.outputs.SOLR_SERVER }} | |
VFB_R_SERVER_ARG=${{ steps.remote-servers.outputs.VFB_R_SERVER }} | |
VFB_OWL_SERVER_ARG=${{ steps.remote-servers.outputs.VFB_OWL_SERVER }} | |
VFB_PDB_SERVER_ARG=${{ steps.remote-servers.outputs.VFB_PDB_SERVER }} | |
build_type=${{ steps.remote-servers.outputs.BUILD_TYPE }} | |
targetBranch=${{ steps.branch.outputs.value }} | |
originBranch=${{ steps.branch.outputs.value }} | |
defaultBranch=development | |
finalBuild=false | |
- name: Image digest | |
run: | | |
echo "local:${{ steps.docker_build_local.outputs.digest }}" | |
echo "remote:${{ steps.docker_build_remote.outputs.digest }}" | |
####################### | |
# Testing Environment Setup | |
####################### | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '16' | |
- name: Cache npm dependencies | |
uses: actions/cache@v3 | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Setup package.json and install dependencies | |
run: | | |
# Create package.json if it doesn't exist | |
if [ ! -f package.json ]; then | |
echo '{ | |
"name": "vfb-testing", | |
"version": "1.0.0", | |
"private": true, | |
"resolutions": { | |
"three": "0.115.0" | |
}, | |
"overrides": { | |
"three": "0.115.0" | |
} | |
}' > package.json | |
else | |
# Add resolutions to existing package.json | |
npm pkg set resolutions.three="0.115.0" | |
npm pkg set overrides.three="0.115.0" | |
fi | |
- name: Install Chrome dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
wget \ | |
libxss1 \ | |
libxtst6 \ | |
libxkbcommon0 \ | |
libgtk-3-0 \ | |
libasound2 \ | |
libatk-bridge2.0-0 \ | |
libgbm1 | |
- name: Install Puppeteer and test dependencies | |
run: | | |
npm install --save-exact \ | |
[email protected] \ | |
[email protected] \ | |
[email protected] \ | |
[email protected] \ | |
@babel/[email protected] \ | |
[email protected] | |
- name: Start VFB server | |
run: docker run -t -dit --name=testServer -p 8080:8080 "virtualflybrain/geppetto-vfb:${{ steps.branch.outputs.clean}}-remote"; | |
sleep 100; | |
docker logs testServer; | |
if [ $(docker logs testServer | grep "fixable with the " | wc -l) -gt 0 ]; then echo "Lint Error!"; exit 1; fi; | |
- name: Wait for VFB server to spin up | |
timeout-minutes: 290 | |
run: | | |
export LANDING_PAGE="http://localhost:8080/org.geppetto.frontend/geppetto" | |
Test () { export http_status=$(curl -s -i $LANDING_PAGE | grep HTTP/1.1 | awk {'print $2'}); echo "Returned status \"$http_status\""; if [ "$http_status" != "200" ]; then echo "Waiting for docker to finish building..."; iterations=$((iterations+1)); if [ "$iterations" != "100" ]; then sleep 1; Test; fi; else echo "$(date) - connected successfully"; fi; } | |
Test; | |
- name: Test batch 1 | |
run: npm test -- --verbose --colors --forceExit --testPathPattern='geppetto-vfb/tests/jest/vfb/batch1/.*js' | |
- name: Test batch 2 | |
run: npm test -- --verbose --colors --forceExit --testPathPattern='geppetto-vfb/tests/jest/vfb/batch2/.*js' | |
- name: Test batch 3 | |
run: npm test -- --verbose --colors --forceExit --testPathPattern='geppetto-vfb/tests/jest/vfb/batch3/.*js' | |
- name: Test under review | |
continue-on-error: true | |
run: | | |
if [ "${GITHUB_REF#refs/heads/}" == debug ] || [ "${GITHUB_REF#refs/heads/}" == pipeline2 ] || [ "${GITHUB_REF#refs/heads/}" == vfb_geppetto_application ] || [ "${GITHUB_REF#refs/heads/}" == development ] || [[ "${GITHUB_REF#refs/heads/}" =~ ^(fix|feature).* ]] ; then | |
npm test -- --verbose --colors --forceExit --testPathPattern='geppetto-vfb/tests/jest/vfb/review/.*js'; | |
fi | |
- name: Stop VFB server | |
run: docker stop testServer | |
- uses: actions/upload-artifact@v4 | |
if: ${{ failure() }} | |
with: | |
name: test_fails | |
path: | | |
tests/jest/vfb/snapshots/*/*/__diff_output__/*.png | |
tests/jest/vfb/snapshots/*/*/*.png | |
retention-days: 5 |