forked from aws-deadline/deadline-cloud-samples
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconda_queue_env.yaml.tftpl
More file actions
102 lines (102 loc) · 3.57 KB
/
Copy pathconda_queue_env.yaml.tftpl
File metadata and controls
102 lines (102 loc) · 3.57 KB
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
specificationVersion: "environment-2023-09"
parameterDefinitions:
- name: CondaPackages
type: STRING
description: Space-separated list of Conda package match specifications to install.
default: ""
userInterface:
control: LINE_EDIT
label: Conda Packages
- name: CondaChannels
type: STRING
description: Space-separated list of Conda channels from which to install packages.
default: "s3://${job_attachments_bucket_name}/Conda/Default ${prod_conda_channels}"
userInterface:
control: LINE_EDIT
label: Conda Channels
- name: NamedCondaEnv
type: STRING
description: Named Conda environment to reuse. Use AUTOMATIC for hash-based naming.
default: "AUTOMATIC"
userInterface:
control: LINE_EDIT
label: Named Conda Environment
- name: NamedCondaEnvAction
type: STRING
description: How to treat the named environment.
default: "ACTIVATE"
allowedValues:
- "ACTIVATE"
- "REMOVE_AND_CREATE"
userInterface:
control: DROPDOWN_LIST
label: Named Conda Environment Action
- name: RunCondaClean
type: STRING
description: Run conda clean before creating environment.
default: "False"
allowedValues:
- "True"
- "False"
userInterface:
control: CHECK_BOX
label: Clean Conda Cache
environment:
name: Conda
script:
actions:
onEnter:
command: bash
args:
- "{{Env.File.Enter}}"
onExit:
command: bash
args:
- "{{Env.File.Exit}}"
embeddedFiles:
- name: Enter
filename: enter.sh
type: TEXT
data: |
#!/bin/bash
set -euo pipefail
if [ -z '{{Param.CondaPackages}}' ]; then
echo "Skipping Conda env as CondaPackages parameter was empty."
exit 0
fi
CHANNEL_OPTS="$(echo '{{Param.CondaChannels}}' | sed -r 's/(\s+|^)(\S)/ -c \2/g')"
CONDA_PACKAGES='{{Param.CondaPackages}}'
NAMED_CONDA_ENV='{{Param.NamedCondaEnv}}'
if [ "$NAMED_CONDA_ENV" = 'AUTOMATIC' ]; then
NAMED_CONDA_ENV="hashname_$(echo '{{Param.CondaChannels}}{{Param.CondaPackages}}' | sha256sum | cut -c1-24)"
fi
if [ '{{Param.RunCondaClean}}' = 'True' ]; then
echo "RunCondaClean parameter is True, cleaning the Conda cache..."
conda clean --yes --all
fi
if [ -n "$NAMED_CONDA_ENV" ] && conda env list | grep -q "^$NAMED_CONDA_ENV "; then
if [ '{{Param.NamedCondaEnvAction}}' = 'REMOVE_AND_CREATE' ]; then
echo "Removing environment $NAMED_CONDA_ENV (NamedCondaEnvAction=REMOVE_AND_CREATE)"
conda env remove --yes --name "$NAMED_CONDA_ENV"
echo "Creating environment $NAMED_CONDA_ENV"
conda create --yes --quiet --name "$NAMED_CONDA_ENV" $CONDA_PACKAGES $CHANNEL_OPTS
else
echo "Reusing environment $NAMED_CONDA_ENV"
fi
conda activate "$NAMED_CONDA_ENV"
elif [ -n "$NAMED_CONDA_ENV" ]; then
echo "Creating environment $NAMED_CONDA_ENV"
conda create --yes --quiet --name "$NAMED_CONDA_ENV" $CONDA_PACKAGES $CHANNEL_OPTS
conda activate "$NAMED_CONDA_ENV"
else
ENV_DIR="$(mktemp -d)"
conda create --yes --quiet -p "$ENV_DIR" $CONDA_PACKAGES $CHANNEL_OPTS
conda activate "$ENV_DIR"
fi
- name: Exit
filename: exit.sh
type: TEXT
data: |
#!/bin/bash
set -euo pipefail
conda deactivate || true