name: GitHub CI # When to execute on: push: # Pushes to important branches branches: - develop - main # Release tags tags: - v* # Any pull request pull_request: # Use bash explicitly for being able to enter the conda environment defaults: run: shell: bash -el {0} jobs: build-and-test: name: 'Core / Unit Test Pipeline' runs-on: ubuntu-latest timeout-minutes: 20 permissions: # For publishing results checks: write # Run this test for different Python versions strategy: # Do not abort other tests if only a single one fails fail-fast: false matrix: python-version: ["3.11", "3.12", "3.13"] steps: - name: Checkout Repo uses: actions/checkout@v6 - # Store the current date to use it as cache key for the environment name: Get current date id: date run: echo "date=$(date +%Y-%m-%d)" >> "${GITHUB_OUTPUT}" - name: Create Environment with Mamba uses: mamba-org/setup-micromamba@v3 with: environment-name: climada_env_${{ matrix.python-version }} environment-file: requirements/env_climada.yml create-args: >- python=${{ matrix.python-version }} make # Persist environment for branch, Python version, single day cache-environment-key: env-${{ github.ref }}-${{ matrix.python-version }}-${{ steps.date.outputs.date }} - name: Install CLIMADA run: | python -m pip install "./[dev]" - name: Run Unit Tests run: | make unit_test - name: Publish Test Results uses: EnricoMi/publish-unit-test-result-action@v2 if: always() with: junit_files: tests_xml/tests.xml check_name: "Core / Unit Test Results (${{ matrix.python-version }})" comment_mode: "off" - name: Upload Coverage Reports if: always() uses: actions/upload-artifact@v7 with: name: coverage-report-core-unittests-py${{ matrix.python-version }} path: coverage/ test-petals: name: Petals Compatibility uses: CLIMADA-project/climada_petals/.github/workflows/testing.yml@develop needs: build-and-test with: core_branch: ${{ github.ref }} petals_branch: develop permissions: checks: write