diff --git a/.github/actions/pre-build/action.yml b/.github/actions/pre-build/action.yml index c83b10e8..f9caa08d 100644 --- a/.github/actions/pre-build/action.yml +++ b/.github/actions/pre-build/action.yml @@ -8,9 +8,9 @@ runs: run: | git config --global --add safe.directory $GITHUB_WORKSPACE echo "UCESB_DIR=$GITHUB_WORKSPACE/ucesb/" >> $GITHUB_ENV - export SIMPATH=${CVMDIR}/debian10/fairsoft/jan24p1 + export SIMPATH=${CVMDIR}/${{ matrix.os }}/fairsoft/jan24p1 echo "SIMPATH=${SIMPATH}" >> $GITHUB_ENV - echo "FAIRROOTPATH=${CVMDIR}/debian10/fairroot/v18.8.2_jan24p1" >> $GITHUB_ENV + echo "FAIRROOTPATH=${CVMDIR}/${{ matrix.os }}/fairroot/v18.8.2_jan24p1" >> $GITHUB_ENV echo "${SIMPATH}/bin" >> $GITHUB_PATH # variables for ccache echo "CCACHE_BASEDIR=${GITHUB_WORKSPACE}" >> $GITHUB_ENV @@ -25,13 +25,14 @@ runs: - name: mount cvmfs run: | - apt-get install -y ccache + apt-get update + apt-get install --fix-missing -y sudo wget https://cernbox.cern.ch/remote.php/dav/public-files/RmnTeeOZpYjCJQb/masterkey.gsi.de.pub mv masterkey.gsi.de.pub /etc/cvmfs/keys cp .github/config/fairsoft.gsi.de.conf /etc/cvmfs/config.d + echo "CVMFS_USER=$(whoami)" >> /etc/cvmfs/config.d/fairsoft.gsi.de.conf mkdir -p ${CVMDIR} mount -t cvmfs fairsoft.gsi.de ${CVMDIR} mkdir -p ${UCESB_DIR} mkdir -p ${CCACHE_DIR} - echo $PATH shell: bash diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 290d3c8a..e8880085 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,6 +37,7 @@ jobs: # Here are the groups of repositories that need to be downloaded inside # r3broot. Each group is used by only one job. repos: [ sofia ] + os: [ debian11, debian12 ] # The list under "include" defines some properties for each group: # # repos: the name of the group. It must exist in matrix.repos as @@ -65,7 +66,7 @@ jobs: # tool-kits for the building, such as clang-tidy and cvmfs. For more # information, please visit the Docker repository at Dockerhub. container: - image: yanzhaowang/cvmfs_clang:latest + image: yanzhaowang/cvmfs_clang:${{ matrix.os }} volumes: - /tmp:/cvmfs env: diff --git a/.github/workflows/maindeb10.yml b/.github/workflows/maindeb10.yml new file mode 100644 index 00000000..89bcbddf --- /dev/null +++ b/.github/workflows/maindeb10.yml @@ -0,0 +1,154 @@ +# This is the main CI workflow for pull requests to the sofia dev branch +# See the CI workflow developed for R3BRoot for more details +# SPDX-License-Identifier: LGPL-3.0-or-later + +name: CI-CD + +# Controls when the action will run. +on: + # Triggers the workflow in case of a push or pull request events (but only for + # the dev branch) + push: + branches: [ dev ] + pull_request: + branches: [ dev ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + schedule: + - cron: "0 22 * * 2,5" # Runs at 22:00 UTC + + +# A workflow run is made up of one or more jobs that can run sequentially or +# parallelly. As has been specified above, all the jobs below will be +# triggered either by a pull request or a merge of a pull request. +jobs: + build-test: + runs-on: ubuntu-latest + # A strategy matrix gives different settings separately to different jobs + # which are run parallelly. + strategy: + # If fail-fast is true, all jobs running parallelly will be stopped if + # any of them fail. By setting it to false, all jobs will be run + # undisruptively. + fail-fast: false + # Definition of the strategy matrix + matrix: + # Here are the groups of repositories that need to be downloaded inside + # r3broot. Each group is used by only one job. + repos: [ sofia ] + os: [ debian10 ] + # The list under "include" defines some properties for each group: + # + # repos: the name of the group. It must exist in matrix.repos as + # defined above. + # + # cache: the name of the cache file that will be created/used for the + # job. Each group can have their own cache file. But the total size of + # the cache files are limited to 10 GB per project. Therefore, the + # number of caches should be kept to a minimum. If there isn't too + # much difference between glad-tpc and the base r3broot, the cache file + # generated from r3broot build can be used. + # + # skip-save: whether to save the cache or not. Cache saving is disabled + # when true. This is neccessary when two parellel jobs share one cache + # name. + # + # url: the github repository urls that need to be downloaded during the + # run + include: + # This job is only for testing R3BRoot without downloading any + # dependencies. + - repos: sofia + cache: sofia + + # Jobs are run inside a Docker container, which provides different compiled + # tool-kits for the building, such as clang-tidy and cvmfs. For more + # information, please visit the Docker repository at Dockerhub. + container: + image: yanzhaowang/cvmfs_clang:latest + volumes: + - /tmp:/cvmfs + env: + CVMDIR: /cvmfs/fairsoft.gsi.de + # Specifying the number of threads available for the building and + # testing. Github hosted runners can have at most 4 cores. The number + # of the cores can be increased with a larger runner, thus increasing + # the speed of the run. + NUM_THREADS: 4 + # Options for the Docker container to be run with cvmfs. + options: --user root --privileged --ulimit nofile=10000:10000 --cap-add SYS_ADMIN --device /dev/fuse + + # Each job contains different steps that are executed sequentially. Each + # step could be multiple shell commands or a composite action either from + # another github repo or a self-defined one in .github/actions. + steps: + # Fetch updates from pull request branches using a public github action. + - uses: actions/checkout@v4 + with: + # This allows all commits of all branches to be fetched. + fetch-depth: 0 + + # A self-defined composite action. It sets multiple necessary environment + # variables and mounts the cmvfs folder of fairroot and fairsoft. + - name: pre-build + uses: './.github/actions/pre-build' + + # A self-defined composite action, which restores the caches of + # dependencies and builds and install them if the cache doesn't exist. + # The two inputs for this action, r3b-dev-key and cache-name, determine + # the name (key) of the R3BRoot build cache being used in the the run. + # Its name is defined as + # "r3b-build-${cache-name}-${r3b-dev-key}". Apart from r3b build cache, + # there is another cache called "r3b-build-deps", which contains all + # dependencies for the R3BRoot build, such as googletest and ucesb. The + # cache restoring step is only used for the run triggered with + # "pull_request" and disabled for the merge event. + - name: install dependencies + id: restore-cache + uses: './.github/actions/install-deps' + with: + cache-name: ${{ matrix.cache }} + r3b-dev-key: ${{ env.cacheSHA }} + + # A self-defined composite action for the cmake configuration and build + # of r3broot (along with necessary dep repos). + - name: configure-build-sofia + run: | + git clone https://github.com/R3BRootGroup/R3BRoot.git + cd .. + mv sofia/R3BRoot . + mv sofia R3BRoot + mv R3BRoot sofia + cd sofia + git clone https://github.com/R3BRootGroup/macros.git + mv sofia/ucesb . + cmake . -B build -C cmake/CI_CD/configure_options.cmake -DBUILD_GEOMETRY=OFF + cd build + make -j ${NUM_THREADS} + + # A self-defined composite action to perform the ctest and push the + # results to the cdash (cmake-dashborad). To fully show the errors and + # warnings during the configure and build processes, the two processes + # are rerun after 'make clean'. + - name: ctest-cdash + if: always() + uses: './.github/actions/ctest-cdash' + with: + repo: ${{ matrix.repos }} + + # A composite action to save the ccaahe created from the merge events. + # Cache names (key) should be consistent with the names used in the + # cache restoring step. + - name: save-cache + if: github.event_name == 'push' && matrix.skip-save != true + id: save-cache + uses: './.github/actions/cache-save' + with: + cache-name: ${{ matrix.cache }} + r3b-dev-key: ${{ env.cacheSHA }} + + # Show the cache hit rate from ccache. + - name: ccache stats + if: github.event_name == 'pull_request' && always() + run: ccache --show-stats diff --git a/.zenodo.json b/.zenodo.json index 0a8a3a9b..150fe1d8 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -4,7 +4,7 @@ "related_identifiers": [ { "identifier": "https://github.com/FairRootGroup/FairSoft/", - "relation": "isDerivedFrom", + "relation": "isCompiledBy", "resource_type": "software", "scheme": "url" }, @@ -22,7 +22,7 @@ }, { "identifier": "https://gitlab.com/chalmers-subexp/ucesb/", - "relation": "isRelatedTo", + "relation": "isSupplementedBy", "resource_type": "software", "scheme": "url" },