Skip to content

Github Repo Organiziation

Gregory Lemieux edited this page Sep 17, 2020 · 4 revisions

This page explains the rationale behind the github repo organizational structure.

Directory Structure Overview

The github repository has the following general organizational structure. The structure has been simplified for clarity:

.
├── docker
│   ├── baseos
│   │   ├── centos
│   │   │   └── centos7.6
│   │   │       ├── Dockerfile
│   │   │       └── hooks
│   │   │           └── post_push
│   │   └── gcc
│   │       └── gcc650
│   │           ├── Dockerfile
│   │           └── hooks
│   │               └── post_push
│   └── fates-ctsm
│       ├── archive
│       ├── cime_config
│       │   ├── config
│       │   ├── config_compilers.xml
│       │   └── config_machines.xml
│       └── fates-ctsm-gcc650
│           ├── Dockerfile
│           └── hooks
│               └── post_push
└── README.md

Directory definitions

  • docker: Holds all files relevant to build docker images. Used to distinguish from scripts and other tools that may be added to the repo in the future that are not needed to build the images.
  • baseos: Includes all the base operating system images used by the fates-hlm images and is segregated by operating system type (e.g. gcc, centos, etc)
  • fates-ctsm: Includes files for building CTSM-based FATES images
  • fates-e3sm: Includes files for building E3SM-based FATES images
  • cime_config: holds the cime configuration files for the container specific docker machine. This is used instead of editing the configuration files in the host land model files direclty. The relevant background information on this method can be found in the cime documentation.
  • hooks: The hooks directory is included as a subdirectory to each specific baseos folder and contains the post_push instructions that dockerhub uses to determine how to autobuild and tag a given Dockerfile