Skip to content

syntax fixes

syntax fixes #1585

Workflow file for this run

# 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