Changes between Version 37 and Version 38 of HPC_deploy
- Timestamp:
- 2016-12-23T15:10:45+01:00 (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
HPC_deploy
v37 v38 81 81 The locations where we store source code, deployed apps, their accompanying module files, etc. are documented in the [wiki:HPC_storage#Software Storage SOP]. We use the [https://www.tacc.utexas.edu/research-development/tacc-projects/lmod Lua based module system (Lmod)] to make software transparently available on all machines at runtime. Details on how to install and configure !EasyBuild, Lmod and our environment sync script on a new cluster can be found in our [https://github.com/molgenis/depad-utils/blob/master/hpc-2.x/README.md depad-utils GitHub repo]. 82 82 83 !EasyBuild comes with !EasyConfigs for many of our apps of interest ''out of the box''; These files are stored 84 * On our machines in a sub sub sub directory of where !EasyBuild was installed - Latest stable release we deployed.[[BR]] 85 The easiest way to find this directory is to load !EasyBuild and search for an app like this: 83 ==== Locations of !EasyConfig files to deploy software with !EasyBuild ==== 84 1. !EasyBuild comes with !EasyConfigs for many of our apps of interest ''out of the box''; These files are stored 85 * On our machines in a sub sub sub directory of where !EasyBuild was installed.[[BR]] 86 The easiest way to find this directory is to load !EasyBuild and search for an app with {{{-S}}} like this: 86 87 {{{ 87 88 $> module load EasyBuild … … 106 107 == temporary directory /tmp/eb-JHpvCj has been removed. 107 108 }}} 108 * On [https://github.com/hpcugent/easybuild-easyconfigs/tree/master/easybuild/easyconfigs https://github.com/hpcugent/easybuild-easyconfigs/tree/master/easybuild/easyconfigs] - Latest and greatest from the source. 109 * On our machines in {{{/apps/sources/EasyBuild/custom/}}} - Bleeding edge home made !EasyConfigs that were not yet committed to and pull-merged into the !GitHub repos. 109 * On [https://github.com/hpcugent/easybuild-easyconfigs/tree/master/easybuild/easyconfigs https://github.com/hpcugent/easybuild-easyconfigs/tree/master/easybuild/easyconfigs] for the latest and greatest from the source. 110 1. Custom EasyConfigs not yet pull-merged into the !GitHub repos from [http://www.ugent.be/hpc/en HPC Ugent] are stored in a fork from this repo at: 111 {{{ 112 https://github.com/molgenis/easybuild-easyconfigs.git 113 }}} 114 If it ain't on GitHub your EasyConfig does not exist and software centrally deployed in /apps without EasyConfig on GitHub is subject to removal without warning! 115 We use the standard way of working with GitHub repo's, so: 116 1. Create an online fork @ GitHub 117 2. Clone your own online GitHub fork in for example your home dir on the cluster 118 3. When adding/modifying EasyConfigs commit followed by a push to your own fork. 119 Never push to the blessed master @ https://github.com/molgenis/easybuild-easyconfigs.git! 120 4. Create a pull request to get your changes into the blessed master. 121 Creating a pull request to get your changes directly into the main repo from UGent is off course also an option, 122 but may require more patience to have your pull request processed. 123 5. We do plan to create pull requests from the github.com/molgenis to the source @ github.com/hpcugent ... 124 In pseudo code: 125 {{{ 126 # 127 # After creating your online fork @ GitHub, login on a cluster 128 # and clone your GitHub repo supplemented with our custom EasyConfigs. 129 # 130 $> cd ${HOME} 131 $> mkdir git 132 $> cd git 133 $> git clone https://github.com/${your_github_account}/easybuild-easyconfigs.git 134 $> cd easybuild-easyconfigs 135 $> git remote add blessed https://github.com/molgenis/easybuild-easyconfigs.git 136 $> git remote set-url --push blessed non.existing.domain 137 138 # 139 # Now you can deploy a tool; for example version v16.11.1 of our cluster-utils with EasyBuild 140 # 141 $> ml EasyBuild 142 $> eb --robot \ 143 --robot-paths="${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/:" \ 144 --software=cluster-utils,v16.11.1 145 146 # 147 # Software which needs to be compiled and requires a toolchain can be deployed with: 148 # 149 $> ml EasyBuild 150 $> eb --robot \ 151 --robot-paths="${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/:" \ 152 --software=${name},${version} \ 153 --toolchain=foss,2015b 154 }}} 155 Note that the **foss 2015b** toolchain is still our default. We will most likely skip 2016a and move to 2016b during scheduled maintenance of summer 2017. 156 157 ==== Creating a new !EasyConfig ==== 110 158 111 159 If there is no existing !EasyConfig, we have to create one ourselves. … … 151 199 ==== 0. Make sure perms are correct ==== 152 200 153 Either use umask beforeyou start:201 use umask **before** you start: 154 202 {{{ 155 203 umask 0002 156 204 }}} 157 or use158 {{{159 chmod g+rwX,o+rX,o-w /apps/software/..... /apps/modules/.....160 }}}161 after deploying, but **before** [#UpdateCacheAndSync running the hpc-environment-sync.bash script]!162 205 163 206 ==== 1. Find existing !EasyConfig or create a new one ==== 164 * To search for existing !EasyConfigs in both the default robot search path as well as in our dir for custom !EasyConfigs:207 * To search for existing !EasyConfigs in both the default robot search path as well as in your fork of our custom !EasyConfigs git repo cloned into your home dir: 165 208 {{{ 166 209 $> module load EasyBuild 167 210 $> module list 168 $> eb --robot-paths= :/apps/sources/EasyBuild/custom/-S MySearchTerm211 $> eb --robot-paths="${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/:" -S MySearchTerm 169 212 }}} 170 213 * When no suitable !EasyConfig is present, create your own: 171 214 {{{ 172 $> cd /apps/sources/EasyBuild/custom/ 173 $> touch MyEasyConfig-1.2.3.eb 174 }}} 175 Make sure to name the *.eb file exactly the same as the name of the eventually installed ''module'' and its ''version''. 215 $> cd ${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/ 216 $> touch m/MyEasyConfig-1.2.3.eb 217 }}} 218 Make sure to name the *.eb file exactly the same as the name of the eventually installed ''module'' and its ''version''. When a toolchain is used this must be included in the file name. E.g.: 219 {{{ 220 $> touch m/MyEasyConfig-1.2.3-foss-2015b.eb 221 }}} 176 222 177 223 ==== 2. Installing the software ==== 178 Enable the ''robot'' option for automatic dependency resolution and ** append** our dir for custom !EasyConfigs to the search path to make !EasyBuild search for deps in first the default and second our custom dir in that order of precedence.224 Enable the ''robot'' option for automatic dependency resolution and **prepend** our custom !EasyConfigs repo to the search path to make !EasyBuild search for deps in our custom !EasyConfigs repo first. 179 225 {{{ 180 226 $> module load EasyBuild 181 227 $> module list 182 $> eb --robot --robot-paths=:/apps/sources/EasyBuild/custom/ /path/to/MyEasyConfig-1.2.3.eb 228 $> eb --robot \ 229 --robot-paths="${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/:" \ 230 --software=MyEasyConfig,1.2.3 \ 231 --toolchain=foss,2015b 183 232 }}} 184 233 … … 270 319 A: By default !EasyBuild will refuse to overwrite an existing installation. Modules that have been deployed and are used for production should never be modified: deploy a new version instead. During debugging/testing it may be necessary to overwrite a module though; I that case you can force install using ''-f'' like this: 271 320 {{{ 272 $> eb -f --robot --robot-paths= :/apps/sources/EasyBuild/custom/ /path/to/MyEasyConfig-1.2.3.eb321 $> eb -f --robot --robot-paths="${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/:" --software=MyEasyConfig,1.2.3 --toolchain=foss,2015b 273 322 }}} 274 323 ==== Q: I've updated the source code for an app, but when I try to re-deploy with !EasyBuild nothing changes; What is wrong? ====