diff --git a/.github/workflows/root.yml b/.github/workflows/root.yml index 9cd48a4..b457d59 100644 --- a/.github/workflows/root.yml +++ b/.github/workflows/root.yml @@ -1,28 +1,58 @@ name: Execute ROOT macros on: push: - branches: 'main' + branches: + - 'main' + - 'self-hosted-ci' pull_request: + workflow_dispatch: + # schedule: + # - cron: '0 2 * * *' # daily at 2am + # timezone: 'Europe/Berlin' jobs: root-v636: name: ROOT 6.36 - runs-on: ubuntu-latest - container: rootproject/root:6.36.00-ubuntu25.04 + runs-on: + group: CPU + labels: [self-hosted] + + container: + image: gitlab-registry.cern.ch/sft/docker/alma9-core:latest + options: --security-opt label=disable --rm + volumes: + - /cvmfs/sft.cern.ch:/cvmfs/sft.cern.ch:ro + steps: - name: Check out repository uses: actions/checkout@v5 - - name: Execute ROOT macros - run: make + + - name: Download assets + run: make download + + - name: Run Validation Suite + run: make -j4 validate source_scripts="/cvmfs/sft.cern.ch/lcg/views/LCG_110/x86_64-el9-gcc13-opt/setup.sh" + + - name: Export HTML + run: make export_html + - name: Upload produced RNTuple ROOT files uses: actions/upload-artifact@v7 with: name: RNTuple-ROOT - path: "write/*.root" + path: "write/**/*.root" if-no-files-found: error - name: Upload produced validation JSON files uses: actions/upload-artifact@v7 with: name: Validation-JSON - path: "read/*.json" + path: "read/**/*.json" if-no-files-found: error + + - name: Upload validation report + uses: actions/upload-artifact@v7 + with: + name: validation-report + path: ${{ github.workspace }}/web/html/cross_validation_results.html + archive: false + retention-days: 30 diff --git a/.gitignore b/.gitignore index b27cb43..3705bcb 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ User*.cxx *.zip *.html !template.html +/node_modules diff --git a/Makefile b/Makefile index 6bfee6e..dcfbb4f 100644 --- a/Makefile +++ b/Makefile @@ -71,18 +71,19 @@ validate: # run make read to do cross-validation @for s_path in $(source_scripts); do \ - for w_dir in write/*; do \ - (bash -c "source $$s_path && ROOT_VERSION=\$$(root-config --version) && $(MAKE) read dict_dir=\$$ROOT_VERSION write_dir=$$(basename $$w_dir) read_dir=\$$ROOT_VERSION") || exit $$?; \ - done; \ + bash -c "source $$s_path && ROOT_VERSION=\$$(root-config --version) && \ + for w_dir in write/*; do \ + $(MAKE) read dict_dir=\$$ROOT_VERSION write_dir=\$$(basename \$$w_dir) read_dir=\$$ROOT_VERSION || exit \$$?; \ + done" || exit $$?; \ done .PHONY: download download: $(info Downloading and unpacking assets from GitHub..) - @wget -q -N -P ./assets https://github.com/root-project/rntuple-validation/releases/download/v$(ASSET_VERSION)/$(ROOT_ASSET) - @mkdir -p write && unzip -n -q -d write/$(basename $(ROOT_ASSET)) assets/$(ROOT_ASSET) - @wget -q -N -P ./assets https://github.com/root-project/rntuple-validation/releases/download/v$(ASSET_VERSION)/$(JSON_ASSET) - @mkdir -p read/$(basename $(ROOT_ASSET)) && unzip -n -q -d read/$(basename $(ROOT_ASSET))/$(basename $(JSON_ASSET)) assets/$(JSON_ASSET) + @curl -sSL --create-dirs -o ./assets/$(ROOT_ASSET) -z ./assets/$(ROOT_ASSET) https://github.com/root-project/rntuple-validation/releases/download/v$(ASSET_VERSION)/$(ROOT_ASSET) + @mkdir -p write && unzip -n -q -d write/$(basename $(ROOT_ASSET)) assets/$(basename $(ROOT_ASSET)) + @curl -sSL --create-dirs -o ./assets/$(JSON_ASSET) -z ./assets/$(JSON_ASSET) https://github.com/root-project/rntuple-validation/releases/download/v$(ASSET_VERSION)/$(JSON_ASSET) + @mkdir -p read/$(basename $(ROOT_ASSET)) && unzip -n -q -d read/$(basename $(ROOT_ASSET))/$(basename $(JSON_ASSET)) assets/$(basename $(JSON_ASSET)) .PHONY: export_html export_html: