Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

testing a slider mechanism for limiting get_roots #624

Open
wants to merge 24 commits into
base: spelunker
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
34356c9
added appspot and state share config
chrisj Jan 6, 2023
b92dd98
specific app config for cave-explorer
chrisj May 5, 2023
7ac51b3
specific app config for spelunker
chrisj May 15, 2023
cc0c00e
trying to reduce flicker
chrisj May 16, 2023
c07a868
added graphene find path tool
chrisj Dec 6, 2022
623bfc8
added custom error handler support for credentials provider so middle…
chrisj Jan 12, 2024
a9f0406
feat(segmentation_user_layer): add individual segment color picker tool
chrisj Feb 22, 2024
369c8ee
feat(tools): custom keybinds and layer independent tool keybinds
chrisj Feb 22, 2024
5695f19
added custom bindings config
chrisj May 15, 2023
9d273bd
added ctrl+shift+x hide segments (same as seung lab neuroglancer)
chrisj Mar 13, 2024
7556893
temp fix for our placeholder precomputed scales
chrisj Apr 22, 2024
821b679
feat(datasource/graphene) bumped bulk merge limit to 20
chrisj May 21, 2024
7b39d9b
add registerLayerEvent/dispatchLayerEvent
chrisj Sep 30, 2024
367d735
add keybinds (alt+up arrow, alt+down arrow) to iterate through the cu…
chrisj Oct 1, 2024
642b7af
added annotation tagging feature
chrisj Oct 1, 2024
48be95a
displaying annotation tags in annotation list
chrisj Oct 2, 2024
53db90b
rebinding brackets [] to select-prev/select-next
chrisj Sep 19, 2024
17a27ee
quick fix for tags breaking precomputed annotations
chrisj Oct 2, 2024
a346877
feat(datasource/graphene) added timestamp tool to graphene, timestamp…
chrisj Oct 22, 2024
9b19f0b
added ability to upgrade state in UrlHashBinding.updateFromUrlHash fo…
chrisj Oct 22, 2024
6befb5e
fix(datasource/graphene) disabling hide segment zero when activating …
chrisj Nov 4, 2024
1cc9426
wip
fcollman Mar 1, 2024
d32add4
fixing getRoots
fcollman Dec 5, 2024
afff5de
remove unused time
fcollman Dec 5, 2024
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
319 changes: 52 additions & 267 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,21 @@ name: Build
on:
push:
branches:
- master
- spelunker
tags:
- v**
pull_request:

jobs:
client:
build-and-deploy:
permissions:
contents: "read"
id-token: "write"
deployments: "write"
strategy:
matrix:
os:
- "ubuntu-latest"
- "windows-latest"
- "macos-latest"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
Expand All @@ -29,273 +31,56 @@ jobs:
cache-dependency-path: |
package-lock.json
examples/**/package-lock.json
fetch-depth: 0
- run: npm install
- run: npm run format:fix
- name: Check for dirty working directory
run: git diff --exit-code
- run: npm run lint:check
- name: Typecheck with TypeScript
run: npm run typecheck
- name: Build client bundles
run: |
build_info="{'tag':'$(git describe --always --tags)', 'url':'https://github.com/google/neuroglancer/commit/$(git rev-parse HEAD)', 'timestamp':'$(date)'}"
npm run build -- --no-typecheck --no-lint --define NEUROGLANCER_BUILD_INFO="${build_info}"
echo $build_info > ./dist/client/version.json
- name: Get branch name (merge)
if: github.event_name != 'pull_request'
shell: bash
- name: Build Python client bundles
run: npm run build-python -- --no-typecheck --no-lint
- run: npm run build-package
- run: npm publish --dry-run
working-directory: dist/package
- uses: ./.github/actions/setup-firefox
- name: Run JavaScript tests (including WebGL)
run: npm test
if: ${{ runner.os != 'macOS' }}
- name: Run JavaScript tests (excluding WebGL)
run: npm test -- --project node
if: ${{ runner.os == 'macOS' }}
- name: Run JavaScript benchmarks
run: npm run benchmark
- name: Upload NPM package as artifact
uses: actions/upload-artifact@v4
with:
name: npm-package
path: dist/package
if: ${{ runner.os == 'Linux' }}
- name: Upload client as artifact
uses: actions/upload-artifact@v4
with:
name: client
path: dist/client
if: ${{ runner.os == 'Linux' }}

# Builds Python package and runs Python tests
#
# On ubuntu-latest, this also runs browser-based tests. On Mac OS and
# Windows, this only runs tests that do not require a browser, since a working
# headless WebGL2 implementation is not available on Github actions.
python-tests:
strategy:
matrix:
python-version:
- "3.9"
- "3.12"
os:
- "ubuntu-latest"
- "windows-latest"
- "macos-latest"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
# Need full history to determine version number.
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
# Uncomment the action below for an interactive shell
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3
- name: Install Python packaging/test tools
run: pip install tox nox wheel numpy -r python/requirements-test.txt
- uses: ./.github/actions/setup-firefox
- run: nox -s lint format mypy
- name: Check for dirty working directory
run: git diff --exit-code
- name: Test with tox
run: tox -e ${{ fromJSON('["skip-browser-tests","firefox-xvfb"]')[runner.os == 'Linux'] }}
# Verify that editable install works
- name: Install in editable form
run: pip install -e . --config-settings editable_mode=strict
- name: Run Python tests against editable install (excluding WebGL)
working-directory: python/tests
run: pytest -vv --skip-browser-tests

python-build-package:
strategy:
matrix:
include:
- os: "ubuntu-latest"
cibw_build: "*"
wheel_identifier: "linux"
- os: "windows-latest"
cibw_build: "*"
wheel_identifier: "windows"
- os: "macos-14"
cibw_build: "*_x86_64"
wheel_identifier: "macos_x86_64"
- os: "macos-14"
cibw_build: "*_arm64"
wheel_identifier: "macos_arm64"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
# Need full history to determine version number.
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 20.x
cache: "npm"
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Get pip cache dir
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> "$GITHUB_OUTPUT"
- run: npm install
- run: |
build_info="{'tag':'$(git describe --always --tags)', 'url':'https://github.com/google/neuroglancer/commit/$(git rev-parse HEAD)', 'timestamp':'$(date)'}"
npm run build-python -- --no-typecheck --no-lint --define NEUROGLANCER_BUILD_INFO="${build_info}"
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/} | tr / -)" >> $GITHUB_ENV
- name: Get branch name (pull request)
if: github.event_name == 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_HEAD_REF} | tr / -)" >> $GITHUB_ENV
- run: echo "BRANCH_NAME_URL=$(echo ${{ env.BRANCH_NAME }} | tr / - | tr _ -)" >> $GITHUB_ENV
- name: Get build info
run: echo "BUILD_INFO={\"tag\":\"$(git describe --always --tags)\", \"url\":\"https://github.com/${{github.repository}}/commit/$(git rev-parse HEAD)\", \"timestamp\":\"$(date)\", \"branch\":\"${{github.repository}}/${{env.BRANCH_NAME}}\"}" >> $GITHUB_ENV
shell: bash
- name: Check for dirty working directory
run: git diff --exit-code
- name: Install setuptools
run: pip install setuptools
- name: Build Python source distribution (sdist)
run: python setup.py sdist --format gztar
if: ${{ runner.os == 'Linux' }}
- name: Install cibuildwheel
run: pip install cibuildwheel
- name: Build Python wheels
run: bash -xve ./python/build_tools/cibuildwheel.sh
env:
# On Linux, share pip cache with manylinux docker containers
CIBW_ENVIRONMENT_LINUX: PIP_CACHE_DIR=/host${{ steps.pip-cache.outputs.dir }}
CIBW_BEFORE_ALL_LINUX: /project/python/build_tools/cibuildwheel_linux_cache_setup.sh /host${{ steps.pip-cache.outputs.dir }}
CIBW_BUILD: ${{ matrix.cibw_build }}
- name: Upload wheels as artifacts
uses: actions/upload-artifact@v4
with:
name: python-wheels-${{ matrix.wheel_identifier }}
path: |
dist/*.whl
dist/*.tar.gz

docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Setup Graphviz
uses: ts-graphviz/setup-graphviz@b1de5da23ed0a6d14e0aeee8ed52fdd87af2363c # v2.0.2
with:
macos-skip-brew-update: "true"
- name: Install nox
run: pip install nox
- name: Build docs
run: nox -s docs
- name: Upload docs as artifact
uses: actions/upload-artifact@v4
with:
name: docs
path: |
dist/docs

publish-package:
# Only publish package on push to tag or default branch.
if: ${{ github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/master') }}
runs-on: ubuntu-latest
needs:
- "client"
- "python-build-package"
- "docs"
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
registry-url: "https://registry.npmjs.org"
- uses: actions/download-artifact@v4
with:
pattern: python-wheels-*
path: dist
merge-multiple: true
- uses: actions/download-artifact@v4
with:
name: npm-package
path: npm-package
# - name: Publish to PyPI (test server)
# uses: pypa/gh-action-pypi-publish@54b39fb9371c0b3a6f9f14bb8a67394defc7a806 # 2020-09-25
# with:
# user: __token__
# password: ${{ secrets.pypi_test_token }}
- name: Publish to PyPI (main server)
uses: pypa/gh-action-pypi-publish@54b39fb9371c0b3a6f9f14bb8a67394defc7a806 # 2020-09-25
with:
user: __token__
password: ${{ secrets.pypi_token }}
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
- name: Publish to NPM registry
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
run: npm publish
working-directory: npm-package
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
# Download dist/client after publishing to PyPI, because PyPI publish
# action fails if dist/client directory is present.
- uses: actions/download-artifact@v4
with:
name: client
path: dist/client
- name: Publish client to Firebase hosting
uses: FirebaseExtended/action-hosting-deploy@v0
with:
firebaseServiceAccount: "${{ secrets.FIREBASE_HOSTING_SERVICE_ACCOUNT_KEY }}"
projectId: neuroglancer-demo
channelId: live
target: app
# Download dist/docs after publishing to PyPI, because PyPI publish
# action fails if dist/docs directory is present.
- uses: actions/download-artifact@v4
with:
name: docs
path: dist/docs
- name: Publish docs to Firebase hosting
uses: FirebaseExtended/action-hosting-deploy@v0
with:
firebaseServiceAccount: "${{ secrets.FIREBASE_HOSTING_SERVICE_ACCOUNT_KEY }}"
projectId: neuroglancer-demo
channelId: live
target: docs

ngauth:
strategy:
matrix:
os:
- ubuntu-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Setup go
uses: actions/setup-go@v5
with:
go-version-file: ngauth_server/go.mod
cache-dependency-path: ngauth_server/go.sum
- run: go build .
working-directory: ngauth_server
wasm:
# Ensures that .wasm files are reproducible.
strategy:
matrix:
os:
- ubuntu-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- run: ./src/mesh/draco/build.sh
- run: ./src/sliceview/compresso/build.sh
- run: ./src/sliceview/png/build.sh
- run: ./src/sliceview/jxl/build.sh
# Check that there are no differences.
- run: git diff --exit-code
- name: Build client bundles
run: npm run build -- --no-typecheck --no-lint --define STATE_SERVERS=$(cat config/state_servers.json | tr -d " \t\n\r") --define NEUROGLANCER_BUILD_INFO='${{ env.BUILD_INFO }}' --define CUSTOM_BINDINGS=$(cat config/custom-keybinds.json | tr -d " \t\n\r")
- name: Write build info
run: echo $BUILD_INFO > ./dist/client/version.json
shell: bash
- run: cp -r ./dist/client appengine/frontend/static/
- name: start deployment
uses: bobheadxi/deployments@v1
id: deployment
with:
step: start
token: ${{ secrets.GITHUB_TOKEN }}
env: ${{ env.BRANCH_NAME }}
desc: Setting up staging deployment for ${{ env.BRANCH_NAME }}
- id: "auth"
uses: "google-github-actions/auth@v1"
with:
workload_identity_provider: "projects/483670036293/locations/global/workloadIdentityPools/neuroglancer-github/providers/github"
service_account: "[email protected]"
- id: deploy
uses: google-github-actions/deploy-appengine@main
with:
version: ${{ env.GITHUB_SHA }}
deliverables: appengine/frontend/app.yaml
promote: true
- name: update deployment status
uses: bobheadxi/deployments@v1
if: always()
with:
step: finish
token: ${{ secrets.GITHUB_TOKEN }}
env: ${{ steps.deployment.outputs.env }}
env_url: ${{ steps.deploy.outputs.url }}
status: ${{ job.status }}
deployment_id: ${{ steps.deployment.outputs.deployment_id }}
29 changes: 0 additions & 29 deletions .github/workflows/build_preview.yml

This file was deleted.

5 changes: 5 additions & 0 deletions appengine/frontend/.gcloudignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.gcloudignore
.envrc
.git
.gitignore
node_modules/
Loading
Loading