Update Github CI #4046
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| paths-ignore: | |
| - 'docs/**' | |
| branches: [ master ] | |
| tags: | |
| - '*' | |
| pull_request: | |
| paths-ignore: | |
| - 'docs/**' | |
| branches: [ master ] | |
| schedule: | |
| - cron: '0 0 * * 0,3' | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.ref }}-ci | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| env: | |
| GEANT4_VERSION: 'v11.3.2' | |
| ITK_VERSION: 'v5.4.4' | |
| jobs: | |
| build_opengate_wheel: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-24.04] | |
| python-version: ['3.10'] | |
| steps: | |
| - name: Checkout github repo | |
| uses: actions/checkout@v4 | |
| - name: Checkout submodules | |
| shell: bash -l {0} | |
| run: | | |
| export GIT_SSL_NO_VERIFY=1 | |
| git submodule update --init --recursive | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| architecture: 'x64' | |
| - name: Create opengate Wheel | |
| run: | | |
| rm -rf $GITHUB_WORKSPACE/opengate/tests/data | |
| cp $GITHUB_WORKSPACE/.git/modules/gam-tests/data/HEAD $GITHUB_WORKSPACE/opengate/tests/ | |
| pip install build | |
| python -m build | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist-opengate | |
| path: dist/ | |
| build_opengate_core_wheel_pr: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-24.04, macos-15, windows-2025] | |
| python-version: ['3.10', '3.11', '3.12', '3.13'] | |
| exclude: | |
| - os: macos-15 | |
| python-version: '3.10' | |
| steps: | |
| - name: Checkout github repo | |
| uses: actions/checkout@v4 | |
| - name: Checkout submodules | |
| shell: bash -l {0} | |
| run: | | |
| if [[ ${{ matrix.os }} == "windows-2025" ]]; then | |
| set "GIT_SSL_NO_VERIFY=1" | |
| else | |
| export GIT_SSL_NO_VERIFY=1 | |
| fi | |
| git submodule update --init --recursive | |
| - uses: ./.github/workflows/actions_build | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist-${{ matrix.os }}-${{ matrix.python-version }}-opengate-core | |
| path: dist/ | |
| build_opengate_core_wheel_ci_or_tag: | |
| if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/') | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-24.04-arm, macos-15-intel, windows-11-arm] | |
| python-version: ['3.10', '3.11', '3.12', '3.13'] | |
| exclude: | |
| - os: macos-15 | |
| python-version: '3.10' | |
| steps: | |
| - name: Checkout github repo | |
| uses: actions/checkout@v4 | |
| - name: Checkout submodules | |
| shell: bash -l {0} | |
| run: | | |
| if [[ ${{ matrix.os }} == "windows-11-arm" ]]; then | |
| set "GIT_SSL_NO_VERIFY=1" | |
| else | |
| export GIT_SSL_NO_VERIFY=1 | |
| fi | |
| git submodule update --init --recursive | |
| - uses: ./.github/workflows/actions_build | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist-${{ matrix.os }}-${{ matrix.python-version }}-opengate-core-ci_or_tag | |
| path: dist/ | |
| build_opengate_core_novis_wheel: | |
| if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/') | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-24.04] | |
| python-version: ['3.10', '3.11', '3.12', '3.13'] | |
| steps: | |
| - name: Checkout github repo | |
| uses: actions/checkout@v4 | |
| - name: Checkout submodules | |
| shell: bash -l {0} | |
| run: | | |
| export GIT_SSL_NO_VERIFY=1 | |
| git submodule update --init --recursive | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| architecture: 'x64' | |
| - name: Get OS version | |
| id: get-os-version | |
| shell: bash -l {0} | |
| run: | | |
| varOS=`cat /etc/os-release | grep "VERSION=" | grep -oP '(?<=\").*?(?=\")'` | |
| varOS=($varOS) | |
| varOS=${varOS[0]} | |
| varOS="${varOS}-intel" | |
| echo "release=${varOS}" >> $GITHUB_OUTPUT | |
| - name: Cache modules | |
| id: cache_opengate_core_dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/software | |
| key: ${{ runner.os }}-${{ steps.get-os-version.outputs.release }}_geant4_${{ env.GEANT4_VERSION }}_itk_${{ env.ITK_VERSION }}_build | |
| restore-keys: ${{ runner.os }}-${{ steps.get-os-version.outputs.release }}_geant4_${{ env.GEANT4_VERSION }}_itk_${{ env.ITK_VERSION }}_build | |
| - name: Create opengate_core_novis Wheel Linux | |
| run: | | |
| if [ ${{ matrix.python-version }} == "3.10" ]; then | |
| export PYTHONFOLDER="cp310-cp310" | |
| elif [ ${{ matrix.python-version }} == "3.11" ]; then | |
| export PYTHONFOLDER="cp311-cp311" | |
| elif [ ${{ matrix.python-version }} == "3.12" ]; then | |
| export PYTHONFOLDER="cp312-cp312" | |
| elif [ ${{ matrix.python-version }} == "3.13" ]; then | |
| export PYTHONFOLDER="cp313-cp313" | |
| fi | |
| mkdir -p $HOME/software | |
| docker run --rm -e "PYTHONFOLDER=${PYTHONFOLDER}" -v $GITHUB_WORKSPACE:/home tbaudier/opengate_core:${{ env.GEANT4_VERSION }}_novis /home/.github/workflows/createWheelLinux_novis.sh | |
| ls wheelhouse | |
| rm -rf dist | |
| mv wheelhouse dist | |
| sudo chown -R runner:docker dist | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist-${{ matrix.os }}-${{ matrix.python-version }}-opengate-core-novis | |
| path: dist/ | |
| publish_wheel: | |
| runs-on: ubuntu-24.04 | |
| needs: [build_opengate_wheel, build_opengate_core_wheel_pr, build_opengate_core_wheel_ci_or_tag, build_opengate_core_novis_wheel] | |
| steps: | |
| - name: Checkout github repo | |
| uses: actions/checkout@v4 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| pattern: dist-* | |
| merge-multiple: true | |
| path: dist/ | |
| - name: Separate the wheels | |
| run: | | |
| mkdir dist_opengate_core dist_opengate dist_opengate_core_novis | |
| mv dist/opengate_core_novis-* dist_opengate_core_novis/ || true | |
| mv dist/opengate_core_ci* dist_opengate_core/ || true | |
| mv dist/opengate_core-* dist_opengate_core/ | |
| mv dist/opengate-* dist_opengate/ | |
| - name: Publish to PyPI opengate_core_novis | |
| if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/') | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| user: __token__ | |
| password: ${{ secrets.PYPI_OPENGATE_CORE_NOVIS }} | |
| packages_dir: dist_opengate_core_novis/ | |
| skip_existing: true | |
| - name: Publish to PyPI opengate_core | |
| if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/') | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| user: __token__ | |
| password: ${{ secrets.PYPI_OPENGATE_CORE }} | |
| packages_dir: dist_opengate_core/ | |
| skip_existing: true | |
| - name: Publish to PyPI opengate | |
| if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/') | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| user: __token__ | |
| password: ${{ secrets.PYPI_OPENGATE }} | |
| packages_dir: dist_opengate/ | |
| skip_existing: true | |
| # ssh_session: | |
| # env: | |
| # GEANT4_VERSION: 'v11.3.2' | |
| # ITK_VERSION: 'v5.4.4' | |
| # runs-on: macos-13 | |
| # steps: | |
| # - name: Checkout github repo | |
| # uses: actions/checkout@v4 | |
| # - name: Checkout submodules | |
| # shell: bash -l {0} | |
| # run: | | |
| # export GIT_SSL_NO_VERIFY=1 | |
| # git submodule update --init --recursive | |
| # - name: Set up Python | |
| # uses: actions/setup-python@v5 | |
| # with: | |
| # python-version: 3.9 | |
| # architecture: 'x64' | |
| # - name: Get OS version | |
| # id: get-os-version | |
| # shell: bash -l {0} | |
| # run: | | |
| # varOS=`sw_vers | grep "ProductVersion:"` | |
| # varOS="${varOS#*:}" | |
| # echo "release=${varOS:1}" >> $GITHUB_OUTPUT | |
| # - name: Cache modules | |
| # id: cache_opengate_core_dependencies | |
| # uses: actions/cache@v4 | |
| # with: | |
| # path: ~/software | |
| # key: ${{ runner.os }}-${{ steps.get-os-version.outputs.release }}_geant4_${{ env.GEANT4_VERSION }}_itk_${{ env.ITK_VERSION }}_build | |
| # restore-keys: ${{ runner.os }}-${{ steps.get-os-version.outputs.release }}_geant4_${{ env.GEANT4_VERSION }}_itk_${{ env.ITK_VERSION }}_build | |
| # - uses: conda-incubator/setup-miniconda@v3 | |
| # with: | |
| # miniconda-version: "latest" | |
| # auto-update-conda: true | |
| # activate-environment: opengate_core | |
| # python-version: 3.9 | |
| # - name: Set up Homebrew | |
| # id: set-up-homebrew | |
| # uses: Homebrew/actions/setup-homebrew@master | |
| # - name: Start SSH session | |
| # uses: luchihoratiu/debug-via-ssh@main | |
| # with: | |
| # NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }} | |
| # SSH_PASS: ${{ secrets.SSH_PASS }} | |
| test_wheel_pr: | |
| runs-on: ${{ matrix.os }} | |
| needs: [build_opengate_wheel, build_opengate_core_wheel_pr] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-24.04, macos-15, windows-2025] | |
| python-version: ['3.10', '3.11', '3.12', '3.13'] | |
| exclude: | |
| - os: macos-15 | |
| python-version: '3.10' | |
| steps: | |
| - name: Checkout github repo | |
| uses: actions/checkout@v4 | |
| - uses: ./.github/workflows/actions_tests | |
| publish_test: | |
| runs-on: ubuntu-24.04 | |
| if: ${{ (always()) && (github.ref == 'refs/heads/master') }} | |
| needs: [test_wheel_pr] | |
| steps: | |
| - name: Checkout github repo | |
| uses: actions/checkout@v4 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| pattern: results_json-* | |
| merge-multiple: true | |
| path: ./ | |
| - uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| miniconda-version: "latest" | |
| auto-update-conda: true | |
| activate-environment: vega-altair | |
| python-version: '3.10' | |
| - name: Merge the results | |
| shell: bash -el {0} | |
| run: | | |
| git clone https://github.com/OpenGATE/opengate_tests_results.git | |
| cd opengate_tests_results | |
| echo $pwd | |
| ls .. | |
| cp ../dashboard_output_*.json . | |
| conda install -c conda-forge altair-all | |
| pip install pandas numpy | |
| python compile_opengate_tests_results.py | |
| - name: Pushes to another repository | |
| continue-on-error: true | |
| uses: cpina/github-action-push-to-another-repository@main | |
| env: | |
| API_TOKEN_GITHUB: ${{ secrets.PUSH_OPENGATE_TESTS_RESULTS }} | |
| with: | |
| source-directory: 'opengate_tests_results' | |
| destination-github-username: 'OpenGATE' | |
| destination-repository-name: 'opengate_tests_results' | |
| user-email: [email protected] | |
| target-branch: master |