Skip to content

Commit 9fcc4c0

Browse files
authored
Build and deployment documentation (#280)
* Build and deployment first draft * Minor updates Added information on required repositories and building methods for ACCESS-ESM1.6. * (#279) - Clarify the prerequisites and the recommended build workflow * (#279) - Revisiting the page completely. * (#279) - updates after reading the rendered version. * (#279) - Add information on existing deployments * (#279) - Reorganise info between Building and Deployment pages. * (#279) - Integrated Aidan's feedback * (#279) - add deployment page to navigation and move navigation entry higher up in mkdocs.yml Got tired of having to scroll down or search for the nav entry when it's the bit we modify the most. * (#279) - Re-read * (#279) - Edits from review * (#279) - More edits. * (#279) - Edits from review * (#279) - links check * (#279) - Link check * (#279) - use lowercase for all documentation files Consistency makes linking between pages easier. * (#279) - Update links to lowercase filenames
1 parent 66ff9a3 commit 9fcc4c0

6 files changed

Lines changed: 112 additions & 32 deletions

File tree

documentation/docs/pages/infrastructure/Git-practices.md

Whitespace-only changes.

documentation/docs/pages/infrastructure/Architecture.md renamed to documentation/docs/pages/infrastructure/architecture.md

File renamed without changes.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Build infrastructure
2+
3+
Most users of ACCESS-ESM1.6 will not need to build the model. Released versions of the model are deployed by ACCESS-NRI to Gadi and available to users. Check the [Deployment page](/infrastructure/deployment/) to learn about available deployments. If you require your own build of the model, typically because you need to modify one or several model components, you will find the required information on this Building page.
4+
5+
!!! info
6+
7+
To understand the difference between a release of the model and its deployment, refer to [this website](https://www.geeksforgeeks.org/software-engineering/software-deployment-in-software-development/#software-deployment-vs-software-release).
8+
9+
ACCESS-NRI is using [Spack](https://spack.io/), a build from source package manager designed for use with high performance computing.
10+
11+
## Software structure
12+
13+
ACCESS-ESM1.6 being a Earth System model, it is constituted of several model components, each residing in its own repository on GitHub. In addition, some model components need other utilities at compilation time that are stored in separate repositories. This results in a complex software structure involving a number of repositories, including:
14+
15+
- deployment repository:
16+
- [ACCESS-NRI/ACCESS-ESM1.6](https://github.com/ACCESS-NRI/ACCESS-ESM1.6)
17+
- model components:
18+
- [ACCESS-NRI/cice5](https://github.com/ACCESS-NRI/cice5)
19+
- [ACCESS-NRI/GFDL-generic-tracers](https://github.com/ACCESS-NRI/GFDL-generic-tracers)
20+
- [ACCESS-NRI/MOM5](https://github.com/ACCESS-NRI/MOM5)
21+
- [ACCESS-NRI/UM7](https://github.com/ACCESS-NRI/UM7)
22+
- [CABLE-LSM/CABLE](https://github.com/CABLE-LSM/CABLE)
23+
- other software:
24+
- [ACCESS-NRI/FMS](https://github.com/ACCESS-NRI/FMS)
25+
- [ACCESS-NRI/mocsy](https://github.com/ACCESS-NRI/mocsy)
26+
- [ACCESS-NRI/GCOM4](https://github.com/ACCESS-NRI/GCOM4)
27+
28+
!!! note
29+
30+
The _UM7_ and _GCOM4_ repositories are private because these software are not open-source. They are covered by the UKMO's Momentum Partnership licence. To gain access to these repositories, please request an invitation via [this ACCESS-Hive forum topic](https://forum.access-hive.org.au/t/request-access-to-access-esm1-6-component-repositories/5709).
31+
32+
!!! note
33+
34+
ACCESS-ESM1.6 has other dependencies such as Fortran compilers, netCDF and more. These dependencies are considered model infrastructure and are rarely changed by end-users. The build infrastructure we provide will find these dependencies for you.
35+
36+
## Building ACCESS-ESM1.6 using the deployment infrastructure
37+
38+
ACCESS-NRI has developed a build and deployment infrastructure for ACCESS-ESM1.6 on GitHub. With minimal setup, it allows all users to build the model and make their build available on _Gadi_ under the `vk83` project. It is the recommended method because it does not require users to have access to all the repositories, it handles the build automatically and it provides traceability and shareability of the deployment.
39+
40+
This method is explained on the ACCESS-Hive page for [creating pre-releases and releases](https://docs.access-hive.org.au/models/build_a_model/create_a_prerelease/) of ACCESS models. For ACCESS-ESM1.6, you will need _write permissions_ on the [ESM1.6 deployment repository](https://github.com/ACCESS-NRI/ACCESS-ESM1.6) and on any model component you need to modify. Request these permissions via this [ACCESS-Hive forum topic](https://forum.access-hive.org.au/t/request-access-to-access-esm1-6-component-repositories/5709).
41+
42+
!!! warning
43+
44+
This method to build the model only works if your modifications are committed in branches of the model repositories on GitHub listed in the [software structure](#software-structure). This method can not be used if your modifications sit in a fork of one of the repositories or a local clone.
45+
46+
## Local build of ACCESS-ESM1.6
47+
48+
The Spack infrastructure allows you to create your own local build on _Gadi_ for ACCESS-ESM1.6. Once setup, this might be faster than using the deployment infrastructure since it can build from your local copy of the source code. This is especially useful when you want a lot of small incremental builds during development.
49+
50+
However, this method has several drawbacks. It requires users to install the Spack software which can make it harder for ACCESS-NRI to provide support. It requires users to have at least _read permissions_ on all the repositories required by ACCESS-ESM1.6 listed in the [Software structure](#software-structure) section. It builds the model in the user space on _Gadi_ thus potentially exposing licensed source code to unlicensed users, limiting the shareability of the build and consuming a potentially non-insignificant amount of inodes. Finally, contrary to the deployment infrastructure, it does not provide an easy way to access several test builds from the same model component branch at the same time.
51+
52+
This method is explained on the ACCESS-Hive page for [modifying an ACCESS model's source code](https://docs.access-hive.org.au/models/build_a_model/build_source_code/).
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Deployment
2+
3+
All released versions of ACCESS-ESM1.6 configurations come with a pre-deployed build on _Gadi_. Deployed builds are stored under the project `vk83`. You can see all deployed builds via:
4+
5+
```bash
6+
module use /g/data/vk83/modules
7+
module avail access-esm1p6
8+
```
9+
10+
There are builds deployed for development only (identified with a `dev_` prefix to the date tag) and released deployments (identified with only a date tag). Up-to-date model configurations use the latest full released build.
11+
12+
These deployments are optimised for the Sapphire-Rapid hardware from Intel (i.e., the *normalsr* queue), and will run slower on Cascade-Lake (i.e., the *normal* queue). In general, these deployments won't run on other NCI hardware.
13+
14+
15+
## Release information
16+
17+
The deployment process creates a GitHub release with the same tag as the deployed module. All releases are available under the [Releases page](https://github.com/ACCESS-NRI/ACCESS-ESM1.6/releases). Each release has a changelog and meta-data with detailed information about the build and deployment, including:
18+
19+
- paths on Gadi to all executables built in the deployment process (_spack.location_ file)
20+
- a _spack.lock_ file, which is a complete build provenance document, listing all the components that were built and their dependencies, versions, compiler version, build flags and build architecture
21+
- the environment file _spack.yaml_ used for the deployment
22+
23+
## Deployment process
24+
25+
The deployment is managed via GitHub Actions that are triggered when a new version of the spack.yaml file is committed to the `main` branch or a dedicated `backport/VERSION` branch of the [ACCESS-NRI/ACCESS-ESM1.6](https://github.com/ACCESS-NRI/ACCESS-ESM1.6) repository. Refer to the [Building page](/infrastructure/building) for information on creating new model build versions.
26+
27+
No manual deployments will be accepted.

documentation/docs/pages/infrastructure/Building.md renamed to documentation/docs/pages/infrastructure/git-practices.md

File renamed without changes.

documentation/mkdocs.yml

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,39 @@ site_url: !ENV READTHEDOCS_CANONICAL_URL
1010
repo_url: https://github.com/ACCESS-NRI/access-esm1.6-configs
1111
repo_name: ACCESS-NRI/access-esm1.6-configs
1212
edit_uri: blob/main/documentation/docs/ #hopefully will fix the edit button from 404'ing, https://github.com/mkdocs/mkdocs/issues/2416
13-
13+
14+
# Navigation
15+
nav:
16+
- Home: pages/index.md
17+
- Contributing:
18+
- Contributing overview: pages/contributing/index.md
19+
- Model Components:
20+
- MOM - Ocean: pages/model_components/mom.md
21+
- WOMBAT - Ocean Biogeochem.: pages/model_components/wombat.md
22+
- CICE - Sea Ice: pages/model_components/cice.md
23+
- UM - Atmosphere: pages/model_components/um.md
24+
- CABLE - Land: pages/model_components/cable.md
25+
- CASA - Land Biogeochem.: pages/model_components/casa.md
26+
- Inputs:
27+
- Ocean: pages/inputs/ocean.md
28+
- Sea ice: pages/inputs/seaice.md
29+
- Atmosphere: pages/inputs/atmosphere.md
30+
- Land: pages/inputs/land.md
31+
- Restarts: pages/inputs/restarts.md
32+
33+
- Configurations and Experiments:
34+
- Configuration: pages/configs_experiments/overviewconfiguration.md
35+
- Experiments: pages/configs_experiments/experiments.md
36+
37+
- Diagnostics:
38+
- Sea Ice: pages/diagnostics/sea_ice.md #do not edit directly, change
39+
# sea_ice_source.ipynb then export as HTML and rename that file to sea_ice.md
40+
- Infrastructure:
41+
- Architecture: pages/infrastructure/architecture.md
42+
- Deployment: pages/infrastructure/deployment.md
43+
- Building: pages/infrastructure/building.md
44+
- Git practices: pages/infrastructure/git-practices.md
45+
1446
# Theme
1547
theme:
1648
name: material
@@ -92,37 +124,6 @@ markdown_extensions:
92124
title: On this page
93125
permalink: true
94126

95-
# Navigation
96-
nav:
97-
- Home: pages/index.md
98-
- Contributing:
99-
- Contributing overview: pages/contributing/index.md
100-
- Model Components:
101-
- MOM - Ocean: pages/model_components/mom.md
102-
- WOMBAT - Ocean Biogeochem.: pages/model_components/wombat.md
103-
- CICE - Sea Ice: pages/model_components/cice.md
104-
- UM - Atmosphere: pages/model_components/um.md
105-
- CABLE - Land: pages/model_components/cable.md
106-
- CASA - Land Biogeochem.: pages/model_components/casa.md
107-
- Inputs:
108-
- Ocean: pages/inputs/ocean.md
109-
- Sea Ice: pages/inputs/sea_ice.md
110-
- Atmosphere: pages/inputs/atmosphere.md
111-
- Land: pages/inputs/land.md
112-
- Restarts: pages/inputs/restarts.md
113-
114-
- Configurations and Experiments:
115-
- Configuration: pages/configs_experiments/overviewconfiguration.md
116-
- Experiments: pages/configs_experiments/experiments.md
117-
118-
- Diagnostics:
119-
- Sea Ice: pages/diagnostics/sea_ice.md #do not edit directly, change
120-
# sea_ice_source.ipynb then export as HTML and rename that file to sea_ice.md
121-
- Infrastructure:
122-
- Architecture: pages/infrastructure/Architecture.md
123-
- Building: pages/infrastructure/Building.md
124-
- Git practices: pages/infrastructure/Git-practices.md
125-
126127
# Footer
127128
extra:
128129
generator: false

0 commit comments

Comments
 (0)