diff --git a/.github/workflows/check-maps-precompmesh.yml b/.github/workflows/check-maps-precompmesh.yml new file mode 100644 index 000000000..84c3f96e1 --- /dev/null +++ b/.github/workflows/check-maps-precompmesh.yml @@ -0,0 +1,22 @@ +name: '[test] check maps precompmesh' + +on: + push: + paths: + - 'maps/**.json' + +jobs: + check_maps_precompmesh: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install requirements + run: | + pip install -U pip + pip install -r _ci/requirements.txt + - name: Check precomputed mesh + run: python _ci/check_precompmesh.py diff --git a/.github/workflows/check-schema.yml b/.github/workflows/check-schema.yml new file mode 100644 index 000000000..a2dfc9b71 --- /dev/null +++ b/.github/workflows/check-schema.yml @@ -0,0 +1,31 @@ +name: '[test] check schema' + +on: [push] +jobs: + check_schema: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: checkout siibra-python + uses: actions/checkout@v4 + with: + repository: FZJ-INM1-BDA/siibra-python + path: siibra-python-${{ github.run_id }}-${{ github.run_number }} + fetch-depth: 1 + clean: True + ref: 'main' + + - name: move siibra-python one up from workspace + run: mv siibra-python-${{ github.run_id }}-${{ github.run_number }} ../siibra-python + + - name: Install requirements + run: pip install -r ../siibra-python/config_schema/requirements.txt + + - name: check schema + run: python ../siibra-python/config_schema/check_schema.py ./ diff --git a/.github/workflows/check_connectivity_json.yml b/.github/workflows/check_connectivity_json.yml new file mode 100644 index 000000000..0bc73ba6a --- /dev/null +++ b/.github/workflows/check_connectivity_json.yml @@ -0,0 +1,38 @@ +name: '[test] check connectivity' + +on: + pull_request: + paths: + - 'features/connectivity/**/*.json' + +jobs: + check_connectivity_json: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: checkout siibra-python + uses: actions/checkout@v4 + with: + repository: FZJ-INM1-BDA/siibra-python + path: siibra-python-${{ github.run_id }}-${{ github.run_number }} + fetch-depth: 1 + clean: True + ref: 'main' + + - name: move siibra-python one up from workspace + run: mv siibra-python-${{ github.run_id }}-${{ github.run_number }} ../siibra-python + + - name: Install siibra-python testing requirements + run: | + pip install -r ../siibra-python/requirements-test.txt + pip install -r ../siibra-python/requirements.txt + + - name: connectivity e2e test + run: | + SIIBRA_USE_CONFIGURATION='./' + pytest ../siibra-python/e2e/features/connectivity/test_connectivity.py \ No newline at end of file diff --git a/.github/workflows/push-to-mirror.yml b/.github/workflows/push-to-mirror.yml new file mode 100644 index 000000000..63b018906 --- /dev/null +++ b/.github/workflows/push-to-mirror.yml @@ -0,0 +1,37 @@ +name: '[mirror] push to mirror' + +on: + push: + branches: ["master"] + tags: ["**"] + +env: + EBRAINS_GITLAB_HOST: ${{ vars.EBRAINS_GITLAB_HOST }} + EBRAINS_GITLAB_REPO: ri/tech-hub/apps/siibra/siibra-configurations-mirror.git + +jobs: + # n.b. we use access token, rather than https://github.com/valtech-sd/git-sync + # because it does not seem possible to add project wide ssh key + # and using personal key is not very flesible + push_to_mirror: + if: ${{ env.EBRAINS_GITLAB_HOST != '' }} + runs-on: ubuntu-latest + environment: gitlab_mirror + steps: + - name: before script + run: | + 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + eval $(ssh-agent -s) + git config --global user.email "inm1-bda@fz-juelich.de" + git config --global user.name "inm1 bda - gitlab bot" + mkdir -p ~/.ssh + ssh-keyscan ${{ env.GITLAB_MIRROR_HOST }} >> gitlab-known-hosts + cat gitlab-known-hosts >> ~/.ssh/known_hosts + + - name: script + run: | + git fetch --tags -f + git fetch origin master + if ! git ls-remote ebrains > /dev/null; then git remote add ebrains https://jugitpusher:${{ secrets.EBRAINS_GITLAB_PUSH_TOKEN }}@${{ env.GITLAB_MIRROR_HOST }}/${{ env.EBRAINS_GITLAB_REPO }}; fi + git push ebrains --tags -f + git push ebrains HEAD:master -f diff --git a/.github/workflows/release-checklist.yml b/.github/workflows/release-checklist.yml new file mode 100644 index 000000000..8323f0b0e --- /dev/null +++ b/.github/workflows/release-checklist.yml @@ -0,0 +1,125 @@ +name: '[ci] release-checklist' + +on: + push: + tags: ["**"] + +env: + RELEASE_CHECKLIST_TAG: release-checklist + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + ACTOR: ${{ github.actor }} + TAG_NAME: ${{ github.ref_name }} + +jobs: + + # workflow and siibra-python will likely break with tag including / + # workflow: see sed + # siibra-python: see reftag escaping + sanitiy-check: + runs-on: ubuntu-latest + steps: + - name: "checks tag does not contain slash" + run: | + echo ${{ env.TAG_NAME }} | grep -Fq "/" && exit 1 || exit 0 + + get-all-opened: + runs-on: ubuntu-latest + needs: + - sanitiy-check + if: success() + outputs: + OPEN_ISSUES: ${{ steps.get-all-issues.outputs.ALL_ISSUES }} + steps: + - name: 'Getting all opened issue matching ${{ env.RELEASE_CHECKLIST_TAG }} in ${{ env.REPO }}' + id: 'get-all-issues' + run: | + issue=$(gh issue list \ + --repo ${{ env.REPO }} \ + --label '${{ env.RELEASE_CHECKLIST_TAG }}' \ + --json 'id,body,number,url,title') + echo Found: + echo $issue + echo "ALL_ISSUES=$issue" >> $GITHUB_OUTPUT + + update-existing-body: + runs-on: ubuntu-latest + needs: + - get-all-opened + steps: + - run: | + OPEN_ISSUES=${{ needs.get-all-opened.outputs.OPEN_ISSUES }} + echo Found open issues: $OPEN_ISSUES + for issue in $(echo $OPEN_ISSUES | jq -c '.[]') + then + url=$(echo $issue | jq -r '.url') + + new_issue_body=$(echo $issue | jq -r '.body' | sed '1s/master/${{ env.TAG_NAME }}/') + new_title=$(echo $issue | jq -r '.title' | sed 's/v???/${{ env.TAG_NAME }}/') + + echo update issue $url + echo new_title=$new_title + echo new_issue_body: $new_issue_body + + echo -e $new_issue_body | gh issue edit "$url" -F - + fi + + add-comment-existing: + runs-on: ubuntu-latest + needs: + - get-all-opened + steps: + - run: | + OPEN_ISSUES=${{ needs.get-all-opened.outputs.OPEN_ISSUES }} + echo Found open issues: $OPEN_ISSUES + for issue in $(echo $OPEN_ISSUES | jq -c '.[]') + then + url=$(echo $issue | jq -r '.url') + + echo $issue | jq -r '.body' | grep -Fq "" + validated=$(echo $?) + + new_comment="Thank you ${{ env.ACTOR }} for the release." + if [[ "$validated" != "0" ]] + then + new_comment="$new_comment\\n\\nCan you double check you have validated the release?" + fi + + echo update issue $url + echo -e new_comment: \\n\\n bar $new_comment + echo -e $new_comment | gh issue comment $url -F - + fi + + close-existing: + runs-on: ubuntu-latest + needs: + - get-all-opened + steps: + - name: "Add comment to issue" + run: | + OPEN_ISSUES=${{ needs.get-all-opened.outputs.OPEN_ISSUES }} + echo Found open issues: $OPEN_ISSUES + for issue in $(echo $OPEN_ISSUES | jq -c '.[]') + then + id=$(echo $issue | jq -r '.id') + url=$(echo $issue | jq -r '.url') + + gh issue close $url -r completed + fi + + open-new: + runs-on: ubuntu-latest + needs: + - get-all-opened + steps: + - uses: actions/checkout@v4 + - run: | + new_issue=$(sed '1s/LATEST_TAG_PLACEHOLDER/${{ env.TAG_NAME }}/' release_checklist.md) + + echo -e new_issue: $new_issue + + echo -e new_issue | gh issue create \ + -R ${{ env.REPO }} \ + -l '${{ env.RELEASE_CHECKLIST_TAG }}' \ + -t '[release checklist] v???' \ + -F - \ No newline at end of file diff --git a/.github/workflows/test-configuration.yml b/.github/workflows/test-configuration.yml new file mode 100644 index 000000000..85baf3a80 --- /dev/null +++ b/.github/workflows/test-configuration.yml @@ -0,0 +1,79 @@ +name: '[test] test configuration' + +on: [push] +jobs: + check_jsons: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install requirements + run: | + pip install -U pip + pip install -r _ci/requirements.txt + - name: Verify json + run: python _ci/verify_json.py + + check_ebrains_id: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install requirements + run: | + pip install -U pip + pip install -r _ci/requirements.txt + - name: Verify EBRAINS IDs + run: python _ci/verify_ebrains_ids.py + + region_attr_compliance: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install requirements + run: | + pip install -U pip + pip install -r _ci/requirements.txt + - name: Region attribute compliance + run: python _ci/region_attr_compliance.py + + check_map_volume_idx: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install requirements + run: | + pip install -U pip + pip install -r _ci/requirements.txt + - name: Verify map volume indices + run: python _ci/verify_volume_idx.py + + check_maps: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install requirements + run: | + pip install -U pip + pip install -r _ci/requirements.txt + - name: Verify maps + run: python _ci/verify_maps.py + diff --git a/.gitlab-ci.release-checklist.yml b/.gitlab-ci.release-checklist.yml deleted file mode 100644 index 2f0969b51..000000000 --- a/.gitlab-ci.release-checklist.yml +++ /dev/null @@ -1,91 +0,0 @@ -image: python:3.8 - -variables: - RELEASE_CHECKLIST_TAG: release-checklist - RELEASE_TAG_ENV: '.latest-tag.env' - OPENED_IID_ENV: '.all-opened.env' - -stages: -- collection -- update -- createnew - -.install-dep: - before_script: | - apt-get update -y && apt-get install -y jq - pip install requests - -get-latest-tag: - extends: .install-dep - rules: - - if: $CI_PIPELINE_SOURCE == "parent_pipeline" - stage: collection - artifacts: - paths: - - $RELEASE_TAG_ENV - script: | - url="$CI_API_V4_URL/projects/$CI_PROJECT_ID/repository/tags" - echo "url: $url" - newest_tag=$(curl -s $url | jq -r ".[0].name") - echo "newest_tag $newest_tag" - echo "export NEWEST_TAG=$newest_tag" >> $RELEASE_TAG_ENV - -get-all-opened: - rules: - - if: $CI_PIPELINE_SOURCE == "parent_pipeline" - stage: collection - extends: .install-dep - artifacts: - paths: - - $OPENED_IID_ENV - script: | - url="$CI_API_V4_URL/projects/$CI_PROJECT_ID/issues?labels=${RELEASE_CHECKLIST_TAG}&state=opened" - echo "url: $url" - all_issues_id=$(curl -s $url | jq -r ".[].iid") - echo "all_issues_id $all_issues_id" - echo "ALL_IID=$all_issues_id" >> $OPENED_IID_ENV - -close-existing-issues: - stage: update - extends: .install-dep - dependencies: - - get-all-opened - - get-latest-tag - rules: - - if: $CI_PIPELINE_SOURCE == "parent_pipeline" - script: | - if [[ -z "$RELEASE_CHECKLIST_CI_TOKEN" ]] - then - echo "RELEASE_CHECKLIST_CI_TOKEN not set, terminating!" - exit 1 - fi - cat $RELEASE_TAG_ENV - cat $OPENED_IID_ENV - - source $OPENED_IID_ENV - echo ALL_IID: $ALL_IID - - for iid in $ALL_IID - do - url="$CI_API_V4_URL/projects/$CI_PROJECT_ID/issues/$iid" - echo Closing issue id: $iid with url: $url - curl -v -XPUT -H "PRIVATE-TOKEN: $RELEASE_CHECKLIST_CI_TOKEN" ${url}?state_event=close - done - -open-new-issue: - stage: createnew - extends: .install-dep - dependencies: - - get-latest-tag - rules: - - if: $CI_PIPELINE_SOURCE == "parent_pipeline" - script: | - if [[ -z "$RELEASE_CHECKLIST_CI_TOKEN" ]] - then - echo "RELEASE_CHECKLIST_CI_TOKEN not set, terminating!" - exit 1 - fi - cat $RELEASE_TAG_ENV - source $RELEASE_TAG_ENV - python ./_ci/create_new_issue.py - \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index f18567810..000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,210 +0,0 @@ -image: python:3.8 -stages: - - test - - git-robot - -.checkout_siibra: - variables: - SIIBRA_PYTHON_PATH: $CI_BUILDS_DIR/$CI_CONCURRENT_ID/siibra-python - SIIBRA_PYTHON_BRANCH: main - GIT_DEPTH: 1 - before_script: | - echo "[DEVELOP BUILD] Using $SIIBRA_PYTHON_BRANCH branch. In prod, use main branch instead." - rm -rf $SIIBRA_PYTHON_PATH - git clone -v -b $SIIBRA_PYTHON_BRANCH \ - https://github.com/FZJ-INM1-BDA/siibra-python.git \ - $SIIBRA_PYTHON_PATH - git -C $SIIBRA_PYTHON_PATH log -n 1 - - -.install_requirement: - before_script: | - pip install -U pip - pip install -r _ci/requirements.txt - -ci:checklist:generate-update: - only: - - tags - trigger: - include: - - local: .gitlab-ci.release-checklist.yml - strategy: depend - -ci:test:check_connectivity_json: - # only check connectivity json if connectivity json files are changed - # pipeline source needs to be set to merge request event, or else it will trigger everytime - rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" - changes: - - features/connectivity/**/*.json - extends: .checkout_siibra - stage: test - script: | - pip install -r $SIIBRA_PYTHON_PATH/requirements-test.txt - pip install -r $SIIBRA_PYTHON_PATH/requirements.txt - SIIBRA_USE_CONFIGURATION=$PWD pytest $SIIBRA_PYTHON_PATH/e2e/features/connectivity/test_connectivity.py - -ci:test:check_schema: - extends: .checkout_siibra - stage: test - script: | - pip install -r $SIIBRA_PYTHON_PATH/config_schema/requirements.txt - echo python $SIIBRA_PYTHON_PATH/config_schema/check_schema.py $PWD - git -C $PWD log -n 1 - python $SIIBRA_PYTHON_PATH/config_schema/check_schema.py $PWD - -ci:test:check_jsons: - stage: test - script: python _ci/verify_json.py - -ci:test:check_ebrains_id: - stage: test - extends: .install_requirement - script: python _ci/verify_ebrains_ids.py - -ci:test:check_map_volume_idx: - stage: test - script: | - python _ci/verify_volume_idx.py - -ci:test:region_attr_compliance: - stage: test - script: - - python ./_ci/region_attr_compliance.py - -ci:test:check_maps: - stage: test - script: python _ci/verify_maps.py - -ci:test:check_maps_precompmesh: - stage: test - rules: - - if: $CI_PIPELINE_SOURCE == "push" - changes: - - maps/*.json - script: | - pip install -U pip - pip install -r _ci/requirements.txt - python _ci/check_precompmesh.py - -mirror:push_to_mirror: - stage: git-robot - only: - - master - - tags - before_script: - - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' - - eval $(ssh-agent -s) - - git config --global user.email "inm1-bda@fz-juelich.de" - - git config --global user.name "inm1 bda - gitlab bot" - - mkdir -p ~/.ssh - - # add $GITLAB_MIRROR_HOST to known hosts - - ssh-keyscan $GITLAB_MIRROR_HOST >> gitlab-known-hosts - - cat gitlab-known-hosts >> ~/.ssh/known_hosts - script: - # fetch all tags (potentially overwriting local tags to avoid clobbering) - - git fetch --tags -f - - git fetch origin master - - # add remote mirror - - if ! git ls-remote ebrains > /dev/null; then git remote add ebrains https://jugitpusher:${GITLAB_MIRROR_TOKEN}@${GITLAB_MIRROR_HOST}/${GITLAB_MIRROR_REPO_PATH}; fi - - # push all tags and master to remote mirror - - git push ebrains --tags -f - - git push ebrains HEAD:master -f # https://forum.gitlab.com/t/src-refspec-master-does-not-match-any/24691/16 - - -.okd-pre: - stage: git-robot - rules: - - if: $OKD_JSC_ENDPOINT == null || $OKD_JSC_TOKEN == null - when: never - - if: $CI_COMMIT_REF_NAME == "master" - changes: - - "**/*.json" - before_script: - - apt-get update && apt-get install -y jq - - wget https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - - tar xzf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - - "export PATH=$PATH:$PWD/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit" - - oc login https://okd.jsc.hbp.eu:443 --token $OKD_JSC_TOKEN - - oc project siibra-api - -deploy:okd:sync_to_okd: - extends: .okd-pre - script: - - echo "Get one of the worker pod" - - WORKING_POD=$(oc get pods -l app_role=worker,flavor=rc --output json | jq -r '.items[0].metadata.name') - - echo "Got $WORKING_POD" - - echo "Fetch and merge with ff only" - - oc exec $WORKING_POD -- git -C /siibra-api-volume/brainscapes-configurations/ fetch - - oc exec $WORKING_POD -- git -C /siibra-api-volume/brainscapes-configurations/ merge --ff-only - -deploy:okd:restart_server_pod: - extends: .okd-pre - needs: - - deploy:okd:sync_to_okd - script: | - oc rollout latest dc/siibra-api-server-rc - -deploy:okd:get_api_queues: - extends: .okd-pre # does not actually need to extend, but easier to manage stage etc... - variables: - SIIBRA_API_PATH: $CI_BUILDS_DIR/$CI_CONCURRENT_ID/siibra-api - SIIBRA_API_BRANCH: master - GIT_DEPTH: 1 - before_script: | - echo "[DEVELOP BUILD] Using $SIIBRA_API_BRANCH branch. In prod, use main branch instead." - rm -rf $SIIBRA_API_PATH - git clone -v -b $SIIBRA_API_BRANCH \ - https://github.com/FZJ-INM1-BDA/siibra-api.git \ - $SIIBRA_API_PATH - git -C $SIIBRA_API_PATH log -n 1 - script: | - queues=$(cd $SIIBRA_API_PATH && python -c 'import api.siibra_api_config as cfg; print(" ".join([f"{q}" for q in cfg._queues]))') - echo Extracted queues: $queues - echo "QUEUES=$queues" >> build.env - - artifacts: - reports: - dotenv: build.env - -deploy:okd:start_new_worker_pods: - extends: .okd-pre - needs: - - job: deploy:okd:sync_to_okd - - job: deploy:okd:get_api_queues - artifacts: true - script: | - SHORT_REV=$(git rev-parse --short=6 HEAD) - API_VERSION=c.$SHORT_REV - echo Inherited queues: $QUEUES - for queue in $QUEUES - do - echo "Processing $queue" - existing=$(oc get dc -l app_role=worker,queue_name=$queue,siibraapi_version=$API_VERSION --output json | jq '.items | length') - echo "Found $existing existing dc..." - if [[ "$existing" == "0" ]] - then - echo "No DC found... deploying new app..." - - oc new-app --template=siibra-api-v5-worker-template \ - --param SIIBRA_API_VERSION=$API_VERSION \ - --param FLAVOR=rc \ - --param QUEUE_NAME=$queue \ - --param SIIBRA_API_WORKER_IMAGE=docker-registry.ebrains.eu/siibra/siibra-api:rc-worker - - echo "Setting env var to dc" - oc get dc -l "siibraapi_version=$API_VERSION,queue_name=$queue" - oc set env dc -l "siibraapi_version=$API_VERSION,queue_name=$queue" SIIBRA_USE_CONFIGURATION=/siibra-api-volume/brainscapes-configurations - else - echo "$existing DC found, skipping..." - fi - done - - echo "Printing all overdue resources..." - oc get dc -l app_role=worker,flavor=rc,siibraapi_version!=$API_VERSION - echo "Deleting all overdue resources..." - oc delete dc -l app_role=worker,flavor=rc,siibraapi_version!=$API_VERSION --wait=false - diff --git a/_ci/create_new_issue.py b/_ci/create_new_issue.py deleted file mode 100644 index 3de02c317..000000000 --- a/_ci/create_new_issue.py +++ /dev/null @@ -1,36 +0,0 @@ -import requests -import os - -TITLE = "[release checklist] v???" -LABELS = ["release-checklist"] -BODY_TMPL = """see diff: https://jugit.fz-juelich.de/t.dickscheid/brainscapes-configurations/-/compare/{latest_tag}...master?from_project_id=3484&straight=false - -see viewer link: https://siibra-explorer-rc.apps.jsc.hbp.eu/ - -Generated checklist - -| name | validator | validation | -| --- | --- | --- | -| | | | -""" - -def main(): - token = os.getenv("RELEASE_CHECKLIST_CI_TOKEN") - latest_tag = os.getenv("NEWEST_TAG") - print("NEWEST_TAG:", latest_tag) - - v4_api = os.getenv("CI_API_V4_URL") - ci_project_id = os.getenv("CI_PROJECT_ID") - - url = f"{v4_api}/projects/{ci_project_id}/issues" - print("url: {url!r}") - requests.post(url, headers={ - "PRIVATE-TOKEN": token - }, params={ - "title": TITLE, - "labels": ",".join(LABELS), - "description": BODY_TMPL.format(latest_tag=latest_tag) - }) - -if __name__ == "__main__": - main() diff --git a/features/connectivity/regional/tracing/37258979-8b9f-4817-9d83-f009019a6c38_rat_tracing_connectivity.json b/features/connectivity/regional/tracing/37258979-8b9f-4817-9d83-f009019a6c38_rat_tracing_connectivity.json index 56a26b8a7..e720bcb61 100644 --- a/features/connectivity/regional/tracing/37258979-8b9f-4817-9d83-f009019a6c38_rat_tracing_connectivity.json +++ b/features/connectivity/regional/tracing/37258979-8b9f-4817-9d83-f009019a6c38_rat_tracing_connectivity.json @@ -226,4 +226,4 @@ "Inferior olive" ], "files_indexed_by": "subject" -} \ No newline at end of file +} diff --git a/release_checklist.md b/release_checklist.md index 74e945e6d..e70d480be 100644 --- a/release_checklist.md +++ b/release_checklist.md @@ -1,8 +1,4 @@ - - -See [diff](https://jugit.fz-juelich.de/t.dickscheid/brainscapes-configurations/-/compare/LATEST_TAG_PH...master?from_project_id=3484&straight=false) - -See [viewer link](https://siibra-explorer-rc.apps.jsc.hbp.eu/) +See [diff](https://github.com/FZJ-INM1-BDA/siibra-configurations/compare/LATEST_TAG_PLACEHOLDER...master) Please document all deltas and validation: