-
Notifications
You must be signed in to change notification settings - Fork 38
131 lines (126 loc) · 5.18 KB
/
install-from-source.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Install esmvalcore from source on different OS's
# and different Python version; test locally with
# act: https://github.com/nektos/act
# Example how to setup conda workflows:
# https://github.com/marketplace/actions/setup-miniconda
# Notes:
# - you can group commands with | delimiter (or &&) but those will be run
# in one single call; declaring the shell variable makes the action run each
# command separately (better for debugging);
# - can try multiple shells eg pwsh or cmd /C CALL {0} (but overkill for now!);
name: Install from Source
# runs on a push on main and at the end of every day
on:
# triggering on push without branch name will run tests every time
# there is a push on any branch
# turn it on only if needed
push:
branches:
- main
- GA_update_condamamba_adhoc
# run the test only if the PR is to main
# turn it on if required
#pull_request:
# branches:
# - main
schedule:
- cron: '0 0 * * *'
# Required shell entrypoint to have properly configured bash shell
defaults:
run:
shell: bash -l {0}
jobs:
linux:
runs-on: "ubuntu-latest"
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11"]
fail-fast: false
name: Linux Python ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: conda-incubator/setup-miniconda@v2
with:
activate-environment: esmvalcore
environment-file: environment.yml
python-version: ${{ matrix.python-version }}
miniforge-version: "latest"
miniforge-variant: Mambaforge
use-mamba: true
- name: Update conda and mamba
run: |
# setup-miniconda@v2 installs an old conda and mamba
# forcing a modern mamba updates both mamba and conda
# this and next step should be removed when updated upstream
conda update -n base -c conda-forge conda
conda install -c conda-forge "mamba>=1.4.8"
conda --version
mamba --version
- name: Update environment with new mamba
run: mamba update -c conda-forge -f environment.yml
- run: mkdir -p source_install_linux_artifacts_python_${{ matrix.python-version }}
- name: Record versions
run: |
mamba --version 2>&1 | tee source_install_linux_artifacts_python_${{ matrix.python-version }}/conda_version.txt
python -V 2>&1 | tee source_install_linux_artifacts_python_${{ matrix.python-version }}/python_version.txt
- name: Install
run: pip install -e .[develop] 2>&1 | tee source_install_linux_artifacts_python_${{ matrix.python-version }}/install.txt
- name: Verify installation
run: |
esmvaltool --help
esmvaltool version 2>&1 | tee source_install_linux_artifacts_python_${{ matrix.python-version }}/version.txt
- name: Upload artifacts
if: ${{ always() }} # upload artifacts even if fail
uses: actions/upload-artifact@v2
with:
name: Source_Install_Linux_python_${{ matrix.python-version }}
path: source_install_linux_artifacts_python_${{ matrix.python-version }}
osx:
runs-on: "macos-latest"
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11"]
fail-fast: false
name: OSX Python ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: conda-incubator/setup-miniconda@v2
with:
activate-environment: esmvalcore
environment-file: environment.yml
python-version: ${{ matrix.python-version }}
miniforge-version: "latest"
miniforge-variant: Mambaforge
use-mamba: true
- name: Update conda and mamba
run: |
# setup-miniconda@v2 installs an old conda and mamba
# forcing a modern mamba updates both mamba and conda
# this and next step should be removed when updated upstream
conda update -n base -c conda-forge conda
conda install -c conda-forge "mamba>=1.4.8"
conda --version
mamba --version
- name: Update environment with new mamba
run: mamba update -c conda-forge -f environment.yml
- run: mkdir -p source_install_osx_artifacts_python_${{ matrix.python-version }}
- name: Record versions
run: |
mamba --version 2>&1 | tee source_install_osx_artifacts_python_${{ matrix.python-version }}/conda_version.txt
python -V 2>&1 | tee source_install_osx_artifacts_python_${{ matrix.python-version }}/python_version.txt
- name: Install
run: pip install -e .[develop] 2>&1 | tee source_install_osx_artifacts_python_${{ matrix.python-version }}/install.txt
- name: Verify installation
run: |
esmvaltool --help
esmvaltool version 2>&1 | tee source_install_osx_artifacts_python_${{ matrix.python-version }}/version.txt
- name: Upload artifacts
if: ${{ always() }} # upload artifacts even if fail
uses: actions/upload-artifact@v2
with:
name: Source_Install_OSX_python_${{ matrix.python-version }}
path: source_install_osx_artifacts_python_${{ matrix.python-version }}