# SPDX-FileCopyrightText: : 2021 The PyPSA-Eur Authors # # SPDX-License-Identifier: CC0-1.0 name: CI # Caching method based on and described by: # epassaro (2021): https://dev.to/epassaro/caching-anaconda-environments-in-github-actions-5hde # and code in GitHub repo: https://github.com/epassaro/cache-conda-envs on: push: branches: - master pull_request: branches: - master schedule: - cron: "0 5 * * TUE" env: CACHE_NUMBER: 1 # Change this value to manually reset the environment cache jobs: build: strategy: matrix: include: # Matrix required to handle caching with Mambaforge - os: ubuntu-latest label: ubuntu-latest prefix: /usr/share/miniconda3/envs/pypsa-eur - os: macos-latest label: macos-latest prefix: /Users/runner/miniconda3/envs/pypsa-eur - os: windows-latest label: windows-latest prefix: C:\Miniconda3\envs\pypsa-eur name: ${{ matrix.label }} runs-on: ${{ matrix.os }} defaults: run: shell: bash -l {0} steps: - uses: actions/checkout@v2 - name: Setup secrets run: | echo -ne "url: ${CDSAPI_URL}\nkey: ${CDSAPI_TOKEN}\n" > ~/.cdsapirc - name: Add solver to environment run: | echo -e "- glpk\n- ipopt" >> envs/environment.yaml - name: Add solver to environment run: | echo -e "- glpk\n- ipopt<3.13.3" >> envs/environment.yaml if: ${{ matrix.label }} == 'windows-latest' - name: Add solver to environment run: | echo -e "- glpk\n- ipopt" >> envs/environment.yaml if: ${{ matrix.label }} != 'windows-latest' - name: Setup Mambaforge uses: conda-incubator/setup-miniconda@v2 with: miniforge-variant: Mambaforge miniforge-version: latest activate-environment: pypsa-eur use-mamba: true - name: Set cache date run: echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV - name: Create environment cache uses: actions/cache@v2 id: cache with: path: ${{ matrix.prefix }} key: ${{ matrix.label }}-conda-${{ hashFiles('envs/environment.yaml') }}-${{ env.DATE }}-${{ env.CACHE_NUMBER }} - name: Update environment due to outdated or unavailable cache run: mamba env update -n pypsa-eur -f envs/environment.yaml if: steps.cache.outputs.cache-hit != 'true' - name: Test snakemake workflow run: | conda activate pypsa-eur conda list cp test/config.test1.yaml config.yaml snakemake --cores all solve_all_networks rm -rf resources/*.nc resources/*.geojson resources/*.h5 networks results