-
Notifications
You must be signed in to change notification settings - Fork 9
144 lines (121 loc) · 4.84 KB
/
package.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
132
133
134
135
136
137
138
139
140
141
142
143
144
name: package_env
on:
push:
# TODO: react also on reopening the PR.
# pull_request:
workflow_dispatch:
jobs:
generate_conda_packd_envs:
name: conda-pack'd env with Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11"]
fail-fast: false
env:
TZ: America/New_York
defaults:
run:
shell: bash -l {0}
steps:
- name: Set env vars
run: |
export REPOSITORY_NAME=${GITHUB_REPOSITORY#*/} # just the repo, as opposed to org/repo
echo "REPOSITORY_NAME=${REPOSITORY_NAME}" >> $GITHUB_ENV
export DATETIME_STRING=$(date +%Y%m%d%H%M%S)
echo "DATETIME_STRING=${DATETIME_STRING}" >> $GITHUB_ENV
- name: Set non-secret environment variables
run: |
export PYTHONVER=$(echo ${{ matrix.python-version }} | sed 's/\.//g')
echo "PYTHONVER=${PYTHONVER}" >> $GITHUB_ENV
export CONDA_PACK_TEMPLATE_DIR=${HOME}/conda-pack-template
echo "CONDA_PACK_TEMPLATE_DIR=${CONDA_PACK_TEMPLATE_DIR}" >> $GITHUB_ENV
- name: checkout the code
uses: actions/checkout@v3
- name: checkout NSLS-II/conda-pack-template
run: |
git clone https://github.com/NSLS-II/conda-pack-template ${CONDA_PACK_TEMPLATE_DIR}
cd ${CONDA_PACK_TEMPLATE_DIR}
- uses: conda-incubator/setup-miniconda@v2
with:
activate-environment: ${{ env.REPOSITORY_NAME }}
auto-update-conda: true
miniconda-version: "latest"
python-version: ${{ matrix.python-version }}
- name: pip-install dependencies
run: |
# For reference: https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html.
set -vxeuo pipefail
python3 -m pip install -r ${CONDA_PACK_TEMPLATE_DIR}/requirements.txt
python3 -m pip install shyaml
- name: pip-install dev-dependencies
run: |
# For reference: https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html.
set -vxeuo pipefail
python3 -m pip install -r ${CONDA_PACK_TEMPLATE_DIR}/requirements-dev.txt
- name: check env
run: |
# For reference: https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html.
set -vxeuo pipefail
conda info
conda env list
conda list
pip list
conda config --show-sources
conda config --show
printenv | sort
- name: render config
run: |
# For reference: https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html.
set -vxeo pipefail
env_name=$(cat configs/config-py${PYTHONVER}.yml | shyaml get-value env_name)
export CONDA_PACK_ENV_NAME="${env_name}"
echo "CONDA_PACK_ENV_NAME=${CONDA_PACK_ENV_NAME}" >> $GITHUB_ENV
dockerfile=$(python3 ${CONDA_PACK_TEMPLATE_DIR}/render.py -c configs/config-py${PYTHONVER}.yml -f Dockerfile.j2)
runner=$(python3 ${CONDA_PACK_TEMPLATE_DIR}/render.py -c configs/config-py${PYTHONVER}.yml -f runner.sh.j2)
echo "${dockerfile}"
echo "${runner}"
ls -la
cat "${dockerfile}"
cat "${runner}"
export CONDA_PACK_TEMPLATE_RUNNER="${runner}"
echo "CONDA_PACK_TEMPLATE_RUNNER=${CONDA_PACK_TEMPLATE_RUNNER}" >> $GITHUB_ENV
- name: run a build with Docker/Podman
run: |
# For reference: https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html.
set -vxeo pipefail
cp -v ${CONDA_PACK_TEMPLATE_DIR}/export.sh .
bash ${CONDA_PACK_TEMPLATE_RUNNER}
ls -laF
cp -v Dockerfile ${CONDA_PACK_TEMPLATE_RUNNER} artifacts/
sudo chown -v $USER: artifacts/*
ls -laF artifacts/
- name: contents of the env .yml file
run: |
cat artifacts/${CONDA_PACK_ENV_NAME}.yml
- name: checksum files
run: |
cat artifacts/*sum.txt
# https://github.com/actions/upload-artifact
- name: upload artifacts for branch
if: |
github.ref != 'refs/heads/main'
uses: actions/upload-artifact@v3
with:
name: test-${{ env.CONDA_PACK_ENV_NAME }}-${{ env.DATETIME_STRING }}
path: artifacts
retention-days: 14
- name: upload artifacts for release
if: |
github.ref == 'refs/heads/main'
uses: actions/upload-artifact@v3
with:
name: ${{ env.CONDA_PACK_ENV_NAME }}
path: artifacts
retention-days: 60
- name: upload artifacts for the env .yml file
uses: actions/upload-artifact@v3
with:
name: ${{ env.CONDA_PACK_ENV_NAME }}.yml
path: artifacts/${{ env.CONDA_PACK_ENV_NAME}}.yml
retention-days: 60