Skip to content

Commit bc4ccbf

Browse files
authored
Merge pull request ubccr#438 from dsajdak/templates
Templates
2 parents 559123a + daeb0c3 commit bc4ccbf

File tree

4 files changed

+241
-126
lines changed

4 files changed

+241
-126
lines changed

.github/ISSUE_TEMPLATE/bug-fix.yml

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Bug Report
2+
description: Tell us about the bug/error that you are experiencing
3+
title: "Bug: "
4+
labels: ["bug"]
5+
body:
6+
- type: textarea
7+
id: software
8+
attributes:
9+
label: Software Name
10+
description: Provide a list of the modules you're loading when encountering this problem.
11+
validations:
12+
required: true
13+
- type: textarea
14+
id: what-happened
15+
attributes:
16+
label: What happened?
17+
description: Please describe the problem you encountered when using this software package. Provide as much detail as possible, leaving out anything private or account specific.
18+
validations:
19+
required: true
20+
- type: textarea
21+
id: logs
22+
attributes:
23+
label: Relevant log output
24+
description: Please copy and paste any relevant log output or errors produced. This will be automatically formatted into code, so no need for backticks.
25+
render: shell
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Software Request
2+
description: Refer to the README file in this repo that contains info on CCR's software policy, restrictions and limitations. Please complete a new request for each software package.
3+
title: "Software Name: "
4+
labels: ["build-request"]
5+
body:
6+
- type: input
7+
id: lastname
8+
attributes:
9+
label: Requestor Last Name
10+
description: Please enter your last name here so that we may lookup your CCR account. This is a public repository so don't provide more than this.
11+
validations:
12+
required: true
13+
- type: input
14+
id: researchgroup
15+
attributes:
16+
label: Research Group
17+
description: Please provide the last name of the faculty member for whom you're working for, if different than above.
18+
validations:
19+
required: true
20+
- type: textarea
21+
id: others
22+
attributes:
23+
label: Additional Interest
24+
description: If you're aware of other research groups that are interested in using this software, please share that here.
25+
- type: textarea
26+
id: description
27+
attributes:
28+
label: Application Information
29+
description: Provide link to software website and any other information you have about the software.
30+
validations:
31+
required: true
32+
- type: input
33+
id: version
34+
attributes:
35+
label: Version
36+
description: What version would you prefer we install? If no preference or there's only 1 version, enter N/A
37+
validations:
38+
required: true
39+
- type: dropdown
40+
id: softwarerelease
41+
attributes:
42+
label: Software Release Version
43+
description: Which software release would you prefer this being released under?
44+
multiple: true
45+
options:
46+
- ccrsoft/2023.01
47+
- ccrsoft/2024.04
48+
- No preference
49+
validations:
50+
required: true
51+
- type: textarea
52+
id: info
53+
attributes:
54+
label: Additional information
55+
description: If you have any additional information to share about this request, enter it here. Please do not provide any personal or account related information.
56+
- type: markdown
57+
attributes:
58+
value: "Thank you for submitting an installation request. This submission will create an open issue in the repository which we'll use to communicate with you."

README.md

+19-126
Original file line numberDiff line numberDiff line change
@@ -1,141 +1,34 @@
11
# CCR Software Layer
22

3-
This is the CCR software layer.
4-
5-
_NOTE: these docs are currently very much a WIP_
6-
73
## About
84

9-
All software at CCR is built using [easybuild](https://docs.easybuild.io/en/latest/),
10-
available via modules using [Lmod](https://lmod.readthedocs.io/en/latest/), and
11-
distributed using [CernVM-FS](https://cvmfs.readthedocs.io/en/stable/). This repository
12-
contains scripts to help build software with easybuild using containers. To ensure all
13-
software runs on any compute node regardless of the underlying Linux distro, we
14-
use [Gentoo Prefix](https://wiki.gentoo.org/wiki/Project:Prefix) as the
15-
compatibility layer. For more information on CCR's compatibility layer see our
16-
[gentoo-overlay](https://github.com/ubccr/gentoo-overlay).
17-
18-
## Building Software
19-
20-
Software at CCR is distributed via CernVM-FS, a read-only file system designed
21-
to deliver scientific software. CCR's workflow for building new software uses
22-
singularity containers with a writable overlay on top of the CCR CernVM-FS
23-
repository. Any physical compute node can be used to run the container and
24-
build software.
25-
26-
### Quick start
27-
28-
```
29-
# Clone repo and start container
30-
user@host$ git clone https://github.com/ubccr/software-layer.git
31-
user@host$ cd software-layer
32-
user@host$ ./start-container.sh /scratch/username_somepackage
33-
34-
# Inside load easybuild module and run easybuild
35-
user@container$ module load easybuild
36-
37-
# Show easybuild config
38-
user@container$ eb --show-config
39-
40-
# Search for package showing short names
41-
user@container$ eb -S OpenMPI
42-
43-
# Search for package showing full path to eb file
44-
user@container$ eb --search OpenMPI
45-
46-
# Show the deps that will be built without actually building
47-
user@container$ eb OpenBLAS-0.3.9-GCC-9.3.0.eb -M
48-
49-
# Build package and all deps
50-
user@container$ eb OpenBLAS-0.3.9-GCC-9.3.0.eb --robot
51-
52-
user@container$ module load openblas
53-
user@container$ exit
54-
55-
# Exit container and create tarball for ingestion into CernVM-FS
56-
user@host$ ./create-tarball.sh easybuild /scratch/username_somepackage
57-
user@host$ cp /scratch/ccr-xxx-easybuild-user_somepackage-xxx.tar.gz /path/to/mirrors
58-
```
59-
60-
### Workflow in detail
61-
62-
1. Clone this repo (or clone your own fork if you plan on submitting PRs):
63-
64-
```
65-
$ git clone https://github.com/ubccr/software-layer.git
66-
$ cd software-layer
67-
```
68-
69-
2. Start a singularity container. We use the helper script `start-container.sh`
70-
which takes a single argument: the path to a working directory where the
71-
writable-overlay will write your files. This should be somewhere in `/scratch`.
72-
It's recommended to follow a basic naming convention, for example if your
73-
building OpenMPI, then use `/scratch/username_OpenMPI`.
74-
75-
```
76-
$ ./start-container.sh /scratch/username_somepackage
77-
```
78-
79-
NOTE: The first time you run this command it may fetch the build-node docker
80-
image from docker hub, convert it to singularity sif format, then start the
81-
container.
82-
83-
3. After the container starts you have a shell with the current directory
84-
(this software-layer git repo where you ran the start-container.sh script)
85-
bind mounted into `/srv/software-layer` inside the container. So cd into this
86-
directory:
87-
88-
```
89-
$ cd /srv/software-layer
90-
```
91-
92-
4. Ensure you enviroment is setup:
93-
94-
```
95-
# This should now show the latest software modules
96-
$ module avail
97-
```
98-
99-
NOTE: You can make changes to the config/init scripts and test them inside the
100-
container. Then commit and submit a PR's etc.
101-
102-
103-
5. Load the easybuild module:
5+
Software at CCR is built using [easybuild](https://docs.easybuild.io/en/latest/) and available via modules using [Lmod](https://lmod.readthedocs.io/en/latest/). CCR's [standard software environments](https://docs.ccr.buffalo.edu/en/latest/software/releases/) provide a method for users to switch between versions of toolchains, compilers, libraries, and other packages compiled with specific optimizations enabled to take advantage of the various features of each CPU microarchitecture available in CCR's HPC environment. For more information about using software modules, refer to the [documentation](https://docs.ccr.buffalo.edu/en/latest/software/modules/).
1046

105-
```
106-
$ module load easybuild
107-
```
1087

109-
6. Build software, test software:
8+
## CCR Software Policy
1109

111-
```
112-
$ eb OpenBLAS-0.3.9-GCC-9.3.0.eb --robot
113-
[grab a cup of coffee]
114-
...
115-
[hours later]
116-
..
117-
$ module load openblas
118-
$ exit
119-
```
10+
Please refer to the [CCR documentation](https://docs.ccr.buffalo.edu/en/latest/policies/software) for information about what software is provided by CCR, instructions for requesting software installations, and details on what restrictions or limitations are enforced.
12011

121-
7. Once you exit the container terminated and any easybuild files (modules,
122-
software) that were written to `/cvmfs` were captured in your workdir in a
123-
directory named `overlay-upper`. We can now run a script to tar up these files
124-
for eventual importing into the CCR cvmfs repo. The tarball will be created
125-
with the following naming convention:
12+
## Installing Software Yourself
12613

127-
```
128-
ccr-<version>-{compat,easybuild}-[some tag]-<timestamp>.tar.gz
129-
```
14+
CCR users are able to install software themselves in their project and home directories or utilize container environments for custom installations. For more information, please refer to the Easybuild documentation [here](https://docs.ccr.buffalo.edu/en/latest/software/building/), an Easybuild how-to tutorial [here](https://docs.ccr.buffalo.edu/en/latest/howto/easybuild/), and container documentation [here](https://docs.ccr.buffalo.edu/en/latest/howto/containerization/). We also have Python-specific documentation [here](https://docs.ccr.buffalo.edu/en/latest/howto/python/). If you're unsure which method makes the most sense for your workflow, contact [CCR Help](https://docs.ccr.buffalo.edu/en/latest/help/) for guidance.
13015

131-
To create a tarball after building software with easybuild run:
16+
## Submitting Software Build Requests and Bug Reports
13217

133-
```
134-
$ ./create-tarball.sh easybuild /scratch/username_somepackage
135-
```
18+
**Installation Requests:**
19+
CCR users should submit build requests for staff to install software using [GitHub issues](https://github.com/ubccr/software-layer/issues). Before submitting a new request, please search the issues to see if another user has already requested an installation of the software you're interested in. If there is, rather than submitting a new request, please "like" the GitHub issue and comment on it to let us know which research group you're work for. This helps us to prioritize the build requests. When creating a new issue you should select the `Software Request` template which asks for the following information:
20+
- Your last name so we can lookup your CCR account (this is a public repo so please don't share your username)
21+
- The last name of the faculty member in charge of the research group you're working with
22+
- A list of any other research groups that you may know of that are interested in this software
23+
- A link to the software website so we can ensure we're building the software you want. There are many packages with the same name for different scientific disiplines!
24+
- The preferred version of the software you'd like us to install
25+
- Which [CCR software environment](https://docs.ccr.buffalo.edu/en/latest/software/releases/) you'd like the software published to
26+
- Any additional information you'd like to share about your request
27+
28+
**Please enter a new request for each piece of software you'd like installed.**
13629

137-
8. Copy the resulting tarball to mirrors so that others can test out your work
138-
before publishing to our production CernVM-FS stratum0 server.
30+
**Bug Reports:**
31+
If you experience an issue with an installed module on CCR's systems, please submit a bug report. Bug reports should only be submitted for problems with the software installation or the Easybuild system itself. If you need assistance with using a particular software module, running jobs, or anything else related to CCR's systems, please submit a [help request](https://www.buffalo.edu/ccr/support.html) using our ticketing system.
13932

14033
## See Also
14134

building.md

+139
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
# Building Software for CCR Staff
2+
3+
## About
4+
5+
All software at CCR is built using [easybuild](https://docs.easybuild.io/en/latest/),
6+
available via modules using [Lmod](https://lmod.readthedocs.io/en/latest/), and
7+
distributed using [CernVM-FS](https://cvmfs.readthedocs.io/en/stable/). This repository
8+
contains scripts to help build software with easybuild using containers. To ensure all
9+
software runs on any compute node regardless of the underlying Linux distro, we
10+
use [Gentoo Prefix](https://wiki.gentoo.org/wiki/Project:Prefix) as the
11+
compatibility layer. For more information on CCR's compatibility layer see our
12+
[gentoo-overlay](https://github.com/ubccr/gentoo-overlay).
13+
14+
15+
Software at CCR is distributed via CernVM-FS, a read-only file system designed
16+
to deliver scientific software. CCR's workflow for building new software uses
17+
singularity containers with a writable overlay on top of the CCR CernVM-FS
18+
repository. Any physical compute node can be used to run the container and
19+
build software.
20+
21+
## Quick start
22+
23+
```
24+
# Clone repo and start container
25+
user@host$ git clone https://github.com/ubccr/software-layer.git
26+
user@host$ cd software-layer
27+
user@host$ ./start-container.sh prefix /scratch/username_somepackage
28+
29+
# Inside container source init scripts and run easybuild
30+
user@container$ cd /srv/software-layer
31+
user@container$ source config/profile/bash.sh
32+
user@container$ module load easybuild
33+
34+
# Show easybuild config
35+
user@container$ eb --show-config
36+
37+
# Search for package showing short names
38+
user@container$ eb -S OpenMPI
39+
40+
# Search for package showing full path to eb file
41+
user@container$ eb --search OpenMPI
42+
43+
# Show the deps that will be built without actually building
44+
user@container$ eb OpenBLAS-0.3.9-GCC-9.3.0.eb -M
45+
46+
# Build package and all deps
47+
user@container$ eb OpenBLAS-0.3.9-GCC-9.3.0.eb --robot
48+
49+
user@container$ module load openblas
50+
user@container$ exit
51+
52+
# Exit container and create tarball for ingestion into CernVM-FS
53+
user@host$ ./create-tarball.sh easybuild /scratch/username_somepackage
54+
user@host$ cp /scratch/ccr-xxx-easybuild-user_somepackage-xxx.tar.gz /path/to/mirrors
55+
```
56+
57+
## Workflow in detail
58+
59+
1. Clone this repo (or clone your own fork if you plan on submitting PRs):
60+
61+
```
62+
$ git clone https://github.com/ubccr/software-layer.git
63+
$ cd software-layer
64+
```
65+
66+
2. Start a singularity container. We use the helper script `start-container.sh`
67+
which takes an action as the first argument: `shell`, `run`, or `prefix`). The
68+
`prefix` action starts a singularity then runs $EPREFIX/startprefix which puts
69+
you in a gentoo prefix shell. The second argument is the path to a working
70+
directory where the writable-overlay will write your files. This should be
71+
somewhere in `/scratch`. It's recommended to follow a basic naming convention,
72+
for example if your building OpenMPI, then use `/scratch/username_OpenMPI`.
73+
74+
```
75+
$ ./start-container.sh prefix /scratch/username_somepackage
76+
```
77+
78+
NOTE: The first time you run this command it will fetch the build-node docker
79+
image from docker hub, convert it to singularity sif format, then start the
80+
container.
81+
82+
3. After the container starts you have a shell setup to point at the gentoo
83+
compatibility layer. The current directory (this software-layer git repo where
84+
you ran the start-container.sh script) is bind mounted into
85+
`/srv/software-layer` inside the container. So cd into this directory:
86+
87+
```
88+
$ cd /srv/software-layer
89+
```
90+
91+
4. Source CCR's init scripts to setup your environment:
92+
93+
```
94+
$ source config/profile/bash.sh
95+
96+
# This should now show the latest software modules
97+
$ module avail
98+
```
99+
100+
NOTE: You can make changes to the config/init scripts and test them inside the
101+
container. Then commit and submit a PR's etc.
102+
103+
104+
5. Load the easybuild module:
105+
106+
```
107+
$ module load easybuild
108+
```
109+
110+
6. Build software, test software:
111+
112+
```
113+
$ eb OpenBLAS-0.3.9-GCC-9.3.0.eb --robot
114+
[grab a cup of coffee]
115+
...
116+
[hours later]
117+
..
118+
$ module load openblas
119+
$ exit
120+
```
121+
122+
7. Once you exit the container terminated and any easybuild files (modules,
123+
software) that were written to `/cvmfs` were captured in your workdir in a
124+
directory named `overlay-upper`. We can now run a script to tar up these files
125+
for eventual importing into the CCR cvmfs repo. The tarball will be created
126+
with the following naming convention:
127+
128+
```
129+
ccr-<version>-{compat,easybuild,config}-[some tag]-<timestamp>.tar.gz
130+
```
131+
132+
To create a tarball after building software with easybuild run:
133+
134+
```
135+
$ ./create-tarball.sh easybuild /scratch/username_somepackage
136+
```
137+
138+
8. Copy the resulting tarball to mirrors so that others can test out your work
139+
before publishing to our production CernVM-FS stratum0 server.

0 commit comments

Comments
 (0)