diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 00000000..c27c7885 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,62 @@ +name: '[docker image] - Staging' + +on: + push: + branches: + - staging + + # do not rebuild if... + paths-ignore: + # use_docs (use_docs are built on readthedocs any way) + - 'use_docs/*' + +jobs: + build-docker-img: + runs-on: ubuntu-latest + env: + DOCKERIMG: voluba:latest + + steps: + - uses: actions/checkout@v2 + - name: 'Setup tags' + run: | + DOCKER_IMGSTREAM=${{ secrets.EBRAINS_DOCKER_REG_VOLUBA_NSP }}/${{ env.DOCKERIMG }} + echo "Setting docker image stream to $DOCKER_IMGSTREAM" + echo "DOCKER_IMGSTREAM=$DOCKER_IMGSTREAM" >> $GITHUB_ENV + - name: 'Set matomo env var' + run: | + echo "Using github.ref: $GITHUB_REF" + echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV + + echo "MATOMO_URL=${{ secrets.MATOMO_URL_PROD }}" >> $GITHUB_ENV + echo "MATOMO_ID=${{ secrets.MATOMO_ID_PROD }}" >> $GITHUB_ENV + - name: 'Set version variable & expmt feature flag' + run: | + GIT_HASH=$(git rev-parse --short HEAD) + echo "Setting GIT_HASH: $GIT_HASH" + echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV + # VERSION=$(jq -r '.version' package.json) + # echo "Setting VERSION: $VERSION" + # echo "VERSION=$VERSION" >> $GITHUB_ENV + # VUE_APP_ENABLE_EXPERIMENTAL_FEATURES="{}" + - name: 'Build docker image' + run: | + + echo "Building $DOCKER_IMGSTREAM" + docker build \ + --build-arg MATOMO_URL=$MATOMO_URL \ + --build-arg MATOMO_ID=$MATOMO_ID \ + --build-arg VUE_APP_BACKEND_URL=${{ secrets.VUE_APP_BACKEND_URL }} \ + --build-arg VUE_APP_UPLOAD_URL=${{ secrets.VUE_APP_UPLOAD_URL }} \ + -t $DOCKER_IMGSTREAM \ + . + echo "Successfully built $DOCKER_IMGSTREAM" + - name: 'Push to docker registry' + run: | + echo "Login to docker registry" + docker login \ + -u '${{ secrets.EBRAINS_DOCKER_REG_USER }}' \ + -p '${{ secrets.EBRAINS_DOCKER_REG_TOKEN }}' \ + docker-registry.ebrains.eu + echo "Pushing $DOCKER_IMGSTREAM" + docker push $DOCKER_IMGSTREAM diff --git a/.github/workflows/dockerimg.yml b/.github/workflows/dockerimg.yml new file mode 100644 index 00000000..2869e5e1 --- /dev/null +++ b/.github/workflows/dockerimg.yml @@ -0,0 +1,69 @@ +name: '[docker image]' + +on: + push: + branches: + - master + + # do not rebuild if... + paths-ignore: + # use_docs (use_docs are built on readthedocs any way) + - 'use_docs/*' + +jobs: + build-docker-img: + runs-on: ubuntu-latest + env: + DOCKERIMG: voluba:latest + + steps: + - uses: actions/checkout@v2 + - name: 'Setup tags' + run: | + + DOCKER_IMGSTREAM=${{ secrets.EBRAINS_DOCKER_REG_VOLUBA_NSP }}/${{ env.DOCKERIMG }} + echo "Setting docker image stream to $DOCKER_IMGSTREAM" + echo "DOCKER_IMGSTREAM=$DOCKER_IMGSTREAM" >> $GITHUB_ENV + - name: 'Set matomo env var' + run: | + echo "Using github.ref: $GITHUB_REF" + + echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV + + echo "MATOMO_URL=${{ secrets.MATOMO_URL_PROD }}" >> $GITHUB_ENV + echo "MATOMO_ID=${{ secrets.MATOMO_ID_PROD }}" >> $GITHUB_ENV + + - name: 'Set version variable & expmt feature flag' + run: | + GIT_HASH=$(git rev-parse --short HEAD) + echo "Setting GIT_HASH: $GIT_HASH" + echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV + + # VERSION=$(jq -r '.version' package.json) + # echo "Setting VERSION: $VERSION" + # echo "VERSION=$VERSION" >> $GITHUB_ENV + + # VUE_APP_ENABLE_EXPERIMENTAL_FEATURES="{}" + + - name: 'Build docker image' + run: | + + echo "Building $DOCKER_IMGSTREAM" + docker build \ + --build-arg MATOMO_URL=$MATOMO_URL \ + --build-arg MATOMO_ID=$MATOMO_ID \ + --build-arg VUE_APP_BACKEND_URL=${{ secrets.VUE_APP_BACKEND_URL }} \ + --build-arg VUE_APP_UPLOAD_URL=${{ secrets.VUE_APP_UPLOAD_URL }} \ + -t $DOCKER_IMGSTREAM \ + . + echo "Successfully built $DOCKER_IMGSTREAM" + + - name: 'Push to docker registry' + run: | + echo "Login to docker registry" + docker login \ + -u '${{ secrets.EBRAINS_DOCKER_REG_USER }}' \ + -p '${{ secrets.EBRAINS_DOCKER_REG_TOKEN }}' \ + docker-registry.ebrains.eu + echo "Pushing $DOCKER_IMGSTREAM" + docker push $DOCKER_IMGSTREAM diff --git a/Dockerfile b/Dockerfile index 431e8055..6fa2a45e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,23 @@ FROM node:12 as builder -ARG HOSTNAME -ARG VUE_APP_ALLOW_UPLOAD -ARG IV_HOST +ARG VUE_APP_ALLOW_UPLOAD=true ARG VUE_APP_BACKEND_URL ARG VUE_APP_NONLINEAR_BACKEND ARG VUE_APP_UPLOAD_URL -ARG PORT -ARG VUE_APP_DEBUG +ARG VUE_APP_DEBUG=false ARG MATOMO_URL ARG MATOMO_ID ARG VUE_APP_ENABLE_EXPERIMENTAL_FEATURES -ARG VUE_APP_INC_VOL_IDS ENV MATOMO_URL=$MATOMO_URL ENV MATOMO_ID=$MATOMO_ID -ENV HOSTNAME=$HOSTNAME ENV VUE_APP_ALLOW_UPLOAD=$VUE_APP_ALLOW_UPLOAD -ENV IV_HOST=$IV_HOST + ENV VUE_APP_BACKEND_URL=$VUE_APP_BACKEND_URL ENV VUE_APP_NONLINEAR_BACKEND=$VUE_APP_NONLINEAR_BACKEND ENV VUE_APP_ENABLE_EXPERIMENTAL_FEATURES=$VUE_APP_ENABLE_EXPERIMENTAL_FEATURES ENV VUE_APP_UPLOAD_URL=$VUE_APP_UPLOAD_URL -ENV PORT=$PORT ENV VUE_APP_DEBUG=$VUE_APP_DEBUG -ENV VUE_APP_INC_VOL_IDS=$VUE_APP_INC_VOL_IDS COPY . /frontend WORKDIR /frontend/app @@ -32,17 +25,8 @@ RUN npm i RUN npm run build -# build doc -FROM python:3.7 as doc-builder - -COPY . /voluba -WORKDIR /voluba - -RUN pip install mkdocs mkdocs-material mdx_truly_sane_lists -RUN mkdocs build - # gzipping container -FROM ubuntu:20.10 as compressor +FROM ubuntu:22.04 as compressor RUN apt upgrade -y && apt update && apt install brotli RUN mkdir -p /frontend/app @@ -50,9 +34,6 @@ RUN mkdir -p /frontend/app # copy frontend COPY --from=builder /frontend/app/dist /frontend/app/dist -# copy docs to container -COPY --from=doc-builder /voluba/site /frontend/app/dist/doc - WORKDIR /frontend/app/dist RUN for f in $(find . -type f); do gzip < $f > $f.gz && brotli < $f > $f.br; done @@ -77,4 +58,7 @@ COPY --from=builder /frontend/deploy . RUN npm i +# DEPLOY ENV +# IV_HOST, HOSTNAME + ENTRYPOINT ["node", "server/server.js"] diff --git a/app/src/App.vue b/app/src/App.vue index 33aa370a..beddd54e 100644 --- a/app/src/App.vue +++ b/app/src/App.vue @@ -139,6 +139,52 @@ export default { if (DEBUG) { window.setProduction = (arg) => this.setProduction(arg) } + + /** + * get voluba temp volume, if running on http + */ + if (window.location.protocol === "http") { + + const { appendToIncomingVolumes } = this + + fetch(`http://ime178.ime.kfa-juelich.de/voluba/voluba.json`) + .then(res => res.json()) + .then(({ voluba_sources }) => { + return Promise.all( + voluba_sources.map(({ name, url }) => { + const pingUrl = url.replace(/^precomputed:\/\//, '') + '/info' + return fetch(pingUrl) + .then(res => res.json()) + .then(info => { + const { size, resolution } = info.scales[0] + const dim = [0, 1, 2].map(idx => size[idx] * resolution[idx]) // dimension in nm + return { + name, + url, + dim + } + }) + }) + ) + }) + .then(voluba_sources => { + appendToIncomingVolumes({ + volumes: voluba_sources.map(({ name, url, dim }, idx) => { + return { + name, + imageSource: url, + dim, + id: `voluba-custom-source-fzj-${name}-${idx}` + } + }) + }) + }) + .catch(e => { + console.error(`fetching http://ime178.ime.kfa-juelich.de/voluba/voluba.json error`) + }) + + } + this.initAppendNehuba(); this.$store.subscribeAction(({ type = '', payload = {} } = {}) => { switch (type) { @@ -226,6 +272,9 @@ export default { ...mapActions('nehubaStore', [ 'redrawNehuba' ]), + ...mapActions('dataSelectionStore', [ + 'appendToIncomingVolumes' + ]), startRegistration: function () { this.showSelectVolumesModal = false }, diff --git a/app/src/components/LandmarkControlBodyV2.vue b/app/src/components/LandmarkControlBodyV2.vue index 4200b707..a0d22a93 100644 --- a/app/src/components/LandmarkControlBodyV2.vue +++ b/app/src/components/LandmarkControlBodyV2.vue @@ -548,6 +548,9 @@ export default { .lm-wrapper { display:flex; + max-height:50vh; + overflow-y: scroll; + overflow-x: hidden; } .lm-wrapper > .ref-lm-wrapper diff --git a/app/src/components/Nehuba.vue b/app/src/components/Nehuba.vue index 75e43904..6de6e17b 100644 --- a/app/src/components/Nehuba.vue +++ b/app/src/components/Nehuba.vue @@ -61,6 +61,19 @@ class="statusCardWrapper">