-
Notifications
You must be signed in to change notification settings - Fork 1
Build and deployment documentation #280
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
17 commits
Select commit
Hold shift + click to select a range
6b8d4b8
Build and deployment first draft
ccarouge 7aa8498
Minor updates
ccarouge 4f043c4
(#279) - Clarify the prerequisites and the recommended build workflow
ccarouge e853fd6
(#279) - Revisiting the page completely.
ccarouge 4c1ae1f
(#279) - updates after reading the rendered version.
ccarouge 16f5fef
(#279) - Add information on existing deployments
ccarouge 2619915
(#279) - Reorganise info between Building and Deployment pages.
ccarouge c64edce
(#279) - Integrated Aidan's feedback
ccarouge f88de0c
(#279) - add deployment page to navigation and move navigation entry …
ccarouge 9de0118
(#279) - Re-read
ccarouge 5d649e1
(#279) - Edits from review
ccarouge 919dc42
(#279) - More edits.
ccarouge d2b11a7
(#279) - Edits from review
ccarouge 87d2291
(#279) - links check
ccarouge 62d44b4
(#279) - Link check
ccarouge a66c6af
(#279) - use lowercase for all documentation files
ccarouge 224df5a
(#279) - Update links to lowercase filenames
ccarouge File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Empty file.
File renamed without changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| # Build infrastructure | ||
|
|
||
| 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. | ||
|
|
||
| !!! info | ||
|
|
||
| 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). | ||
|
|
||
| ACCESS-NRI is using [Spack](https://spack.io/), a build from source package manager designed for use with high performance computing. | ||
|
|
||
| ## Software structure | ||
|
|
||
| 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: | ||
|
|
||
| - deployment repository: | ||
| - [ACCESS-NRI/ACCESS-ESM1.6](https://github.com/ACCESS-NRI/ACCESS-ESM1.6) | ||
| - model components: | ||
| - [ACCESS-NRI/cice5](https://github.com/ACCESS-NRI/cice5) | ||
| - [ACCESS-NRI/GFDL-generic-tracers](https://github.com/ACCESS-NRI/GFDL-generic-tracers) | ||
| - [ACCESS-NRI/MOM5](https://github.com/ACCESS-NRI/MOM5) | ||
| - [ACCESS-NRI/UM7](https://github.com/ACCESS-NRI/UM7) | ||
| - [CABLE-LSM/CABLE](https://github.com/CABLE-LSM/CABLE) | ||
| - other software: | ||
| - [ACCESS-NRI/FMS](https://github.com/ACCESS-NRI/FMS) | ||
| - [ACCESS-NRI/mocsy](https://github.com/ACCESS-NRI/mocsy) | ||
| - [ACCESS-NRI/GCOM4](https://github.com/ACCESS-NRI/GCOM4) | ||
|
|
||
| !!! note | ||
|
|
||
| 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). | ||
|
|
||
| !!! note | ||
|
|
||
| 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. | ||
|
|
||
| ## Building ACCESS-ESM1.6 using the deployment infrastructure | ||
|
aidanheerdegen marked this conversation as resolved.
|
||
|
|
||
| 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. | ||
|
|
||
| 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). | ||
|
|
||
| !!! warning | ||
|
|
||
| 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. | ||
|
|
||
| ## Local build of ACCESS-ESM1.6 | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| 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/). | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| # Deployment | ||
|
|
||
| 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: | ||
|
|
||
| ```bash | ||
| module use /g/data/vk83/modules | ||
| module avail access-esm1p6 | ||
| ``` | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
|
|
||
| ## Release information | ||
|
|
||
| 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: | ||
|
|
||
| - paths on Gadi to all executables built in the deployment process (_spack.location_ file) | ||
| - 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 | ||
| - the environment file _spack.yaml_ used for the deployment | ||
|
|
||
| ## Deployment process | ||
|
|
||
| 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. | ||
|
|
||
| No manual deployments will be accepted. |
File renamed without changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.