Skip to content

run-github-workflows #116

run-github-workflows

run-github-workflows #116

name: run-github-workflows
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
solve-environments-and-upload-files:
name: run tcy, create environment, and export environment files
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest,windows-latest]
runs-on: ${{ matrix.os }}
permissions:
contents: write
defaults:
run:
shell: bash -el {0}
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: setup python in order to run tcy.py
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: install python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pandas
python -m pip install pytest
- name: run tcy.py to create a .yml file for Linux (will be skipped for windows-latest runner)
if: runner.os == 'Linux'
run: python tcy.py linux --yml_name=${{ matrix.os }} --yml_dir=./environments --yml_file_name=${{ matrix.os }}.yml --tsv_path=./environments/packages.tsv --necessity=required
- name: run tcy.py to create a .yml file for Windows (will be skipped for ubuntu-latest runner)
if: runner.os == 'Windows'
run: python tcy.py windows --yml_name=${{ matrix.os }} --yml_dir=./environments --yml_file_name=${{ matrix.os }}.yml --tsv_path=./environments/packages.tsv --necessity=required
- name: setup micromamba and create environment using .yml file
id: createEnvironment
uses: mamba-org/setup-micromamba@v1
with:
environment-file: ./environments/${{ matrix.os }}.yml
environment-name: ${{ matrix.os }}
- name: initialize conda for Git Bash (will be skipped for linux runner)
if: runner.os == 'Windows'
run: echo ". /c/Miniconda/etc/profile.d/conda.sh" >> ~/.bash_profile
- name: export conda environment as .yml file and as spec-file.txt and export pip-packages as .txt file
run: |
conda env export -p "${MAMBA_ROOT_PREFIX}/envs/${{ matrix.os }}" | grep -v "^prefix: " | sed -E 's/^name:.*(ubuntu-latest|windows-latest)/name: \1/' > ./environments/${{ matrix.os }}_solved.yml
conda list -p "${MAMBA_ROOT_PREFIX}/envs/${{ matrix.os }}" --explicit > ./environments/${{ matrix.os }}_solved.txt
pip freeze | grep -v "@ file" > ./environments/${{ matrix.os }}_solved_pip-requirements.txt
- name: upload exported files as artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}
path: |
./environments/${{ matrix.os }}.yml
./environments/${{ matrix.os }}_solved.yml
./environments/${{ matrix.os }}_solved.txt
./environments/${{ matrix.os }}_solved_pip-requirements.txt
download-artifacts-and-push:
name: download all files that where created by the runners and push them to repo (but only if something has changed)
if: ${{ always() }}
needs: solve-environments-and-upload-files
runs-on: ubuntu-latest
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: download all files that were created using different operating systems
uses: actions/download-artifact@v4
with:
path: ./environments
- name: add and commit files (but only if something has changed)
uses: stefanzweifel/git-auto-commit-action@v5