Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
0c95b44
Add support on NSSL/Odin (#227)
ywangwof Mar 23, 2022
5c17b2c
Add python module to cheyenne build environments (#232)
willmayfield Mar 30, 2022
31dab61
Update SRW Documentation (#212)
gspetro-NOAA Mar 30, 2022
2b09220
Update hashes of all components to latest versions (#233)
mkavulich Apr 5, 2022
57dc966
Add a Contributor's Guide feature to the docs (#228)
gspetro-NOAA Apr 5, 2022
bc34ed7
Updates to parameters in config_defaults .rst files (#237)
gspetro-NOAA Apr 26, 2022
0ced837
Added functionality for MacOS X (#242)
natalie-perlin Apr 27, 2022
3e2b634
Add gaea to supported platforms (#236)
mark-a-potts Apr 28, 2022
d8340a7
Bug fix with singularity env files (#245)
danielabdi-noaa Apr 29, 2022
74d9249
Replace bash env files with modules (#238)
danielabdi-noaa May 1, 2022
d0532b5
update hash of regional workflow (#247)
chan-hoo May 2, 2022
8f41175
Update WE2E documentation (#241)
gsketefian May 3, 2022
6b022cd
fixes for gaea modules (#248)
mark-a-potts May 3, 2022
930ad4b
Merge remote-tracking branch 'ufs/develop' into update_rrfs_ci
christinaholtNOAA May 4, 2022
5063a53
Update regional_workflow hash, add shortcuts for common devbuild.sh o…
mkavulich May 5, 2022
ac4fb07
Modifications to `CODEOWNERS` file (#252)
gsketefian May 5, 2022
4b9b0ae
Add verification tasks to documentation (#243)
gspetro-NOAA May 5, 2022
28e5203
Add NOAA cloud platforms to SRW (#221)
mark-a-potts May 13, 2022
7aa2f0a
fix for regional_workflow pointer (#260)
mark-a-potts May 18, 2022
f63b836
update hash of regional workflow (#261)
chan-hoo May 18, 2022
f0614ab
Feature/cheyenne fix (#258)
mark-a-potts May 18, 2022
bc4efbf
tweaks for build/run on gaea (#254)
mark-a-potts May 18, 2022
cf89e99
Check-in Jenkinsfile and unified scripts (#253)
May 19, 2022
11500a1
Fix for miniconda3 load on Hera (#257)
christinaholtNOAA May 20, 2022
61e6a96
Updates to Remaining Chapters (6 & 8-12) of SRW Docs/User's Guide (#255)
gspetro-NOAA May 20, 2022
93f099a
Update compiler prerequisite in docs (#267)
gspetro-NOAA May 21, 2022
e2aabfd
Merge remote-tracking branch 'ufs/develop' into update_rrfs_ci
christinaholtNOAA May 23, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 169 additions & 0 deletions .cicd/Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
pipeline {
agent none

options {
skipDefaultCheckout(true)
}

parameters {
// Allow job runner to filter based on platform
// choice(name: 'SRW_PLATFORM_FILTER', choices: ['all', 'cheyenne', 'gaea', 'orion', 'pcluster_noaa_v2_use1', 'azcluster_noaa', 'gcluster_noaa_v2_usc1'], description: 'Specify the platform(s) to use')
choice(name: 'SRW_PLATFORM_FILTER', choices: ['all', 'cheyenne', 'gaea', 'orion'], description: 'Specify the platform(s) to use')
// Allow job runner to filter based on compiler
choice(name: 'SRW_COMPILER_FILTER', choices: ['all', 'gnu', 'intel'], description: 'Specify the compiler(s) to use to build')
}

stages {
/*
// Start the NOAA Parallel Works clusters, if necessary
stage('Start Parallel Works Clusters') {
matrix {
// Start all clusters by default or only the specified cluster given by SRW_PLATFORM_FILTER
when {
anyOf {
expression { params.SRW_PLATFORM_FILTER == 'all' }
expression { params.SRW_PLATFORM_FILTER == env.SRW_PLATFORM }
}
}

axes {
axis {
name 'SRW_PLATFORM'
values 'pcluster_noaa_v2_use1', 'azcluster_noaa', 'gcluster_noaa_v2_usc1'
}
}

stages {
// Call the parallel-works-jenkins-client/start-cluster job using SRW_PLATFORM for the
// PW_CLUSTER_NAME parameter
stage('Start Cluster') {
steps {
build job: 'parallel-works-jenkins-client/start-cluster', parameters: [string(name: 'PW_CLUSTER_NAME', value: env.SRW_PLATFORM), string(name: 'PW_CLUSTER_SSH_KEY', value: '~/.ssh/id_rsa'), string(name: 'JAVA_VERSION', value: '11')]
}
}
}
}
}
*/

// Build and test the SRW application on all supported platforms using the supported compilers for each platform
stage('Build and Test') {
matrix {
// Run on all platform/compiler combinations by default or build and test only on the platform(s) and
// compiler(s) specified by SRW_PLATFORM_FILTER and SRW_COMPILER_FILTER
when {
allOf {
anyOf {
expression { params.SRW_PLATFORM_FILTER == 'all' }
expression { params.SRW_PLATFORM_FILTER == env.SRW_PLATFORM }
}

anyOf {
expression { params.SRW_COMPILER_FILTER == 'all' }
expression { params.SRW_COMPILER_FILTER == env.SRW_COMPILER }
}
}
}

axes {
axis {
name 'SRW_PLATFORM'
// values 'cheyenne', 'gaea', 'orion', 'pcluster_noaa_v2_use1', 'azcluster_noaa', 'gcluster_noaa_v2_usc1'
values 'cheyenne', 'gaea', 'orion'
}

axis {
name 'SRW_COMPILER'
values 'gnu', 'intel'
}
}

excludes {
// Exclude GNU from platforms that don't support it
exclude {
axis {
name 'SRW_PLATFORM'
values 'gaea', 'orion'
}

axis {
name 'SRW_COMPILER'
values 'gnu'
}
}
}

agent {
label env.SRW_PLATFORM
}

environment {
BUILD_VERSION = "${env.SRW_PLATFORM}-${env.SRW_COMPILER}-${env.BRANCH_NAME}-${env.BUILD_NUMBER}"
BUILD_NAME = "ufs-srweather-app_${env.BUILD_VERSION}"
}

stages {
// Clean the workspace, checkout the repository, and run checkout_externals
stage('Initialize') {
steps {
echo "Initializing SRW (${env.SRW_COMPILER}) build environment on ${env.SRW_PLATFORM}"
cleanWs()
checkout scm
sh '"${WORKSPACE}/manage_externals/checkout_externals"'
}
}

// Run the unified build script; if successful create a tarball of the build and upload to S3
stage('Build') {
steps {
echo "Building SRW (${env.SRW_COMPILER}) on ${env.SRW_PLATFORM}"
sh 'bash --login "${WORKSPACE}/.cicd/scripts/srw_build.sh"'
}

post {
success {
sh 'tar --create --gzip --verbose --file "${WORKSPACE}/${BUILD_NAME}.tgz" bin include lib share'
s3Upload consoleLogLevel: 'INFO', dontSetBuildResultOnFailure: false, dontWaitForConcurrentBuildCompletion: false, entries: [[bucket: 'woc-epic-jenkins-artifacts', excludedFile: '', flatten: false, gzipFiles: false, keepForever: false, managedArtifacts: true, noUploadOnFailure: true, selectedRegion: 'us-east-1', showDirectlyInBrowser: false, sourceFile: "${env.BUILD_NAME}.tgz", storageClass: 'STANDARD', uploadFromSlave: false, useServerSideEncryption: false]], pluginFailureResultConstraint: 'FAILURE', profileName: 'main', userMetadata: []
}
}
}

// Run the unified test script
stage('Test') {
steps {
echo "Testing SRW (${env.SRW_COMPILER}) on ${env.SRW_PLATFORM}"
sh 'bash --login "${WORKSPACE}/.cicd/scripts/srw_test.sh"'
}
}
}
}
}
}

/*
post {
always {
// Stop any Parallel Works clusters that were started during the pipeline execution
script {
def pw_clusters = ['pcluster_noaa_v2_use1', 'azcluster_noaa', 'gcluster_noaa_v2_usc1']
def clusters = []

// Determine which clusters need to be stopped, if any
if (params.SRW_PLATFORM_FILTER == 'all') {
clusters = pw_clusters
} else if (params.SRW_PLATFORM_FILTER in pw_clusters) {
clusters = [params.SRW_PLATFORM_FILTER]
} else {
echo 'No Parallel Works clusters were used in build'
}

for (int i = 0; i < clusters.size(); ++i) {
// Call the parallel-works-jenkins-client/stop-cluster job using clusters[i] for the
// PW_CLUSTER_NAME parameter
build job: 'parallel-works-jenkins-client/stop-cluster', parameters: [string(name: 'PW_CLUSTER_NAME', value: clusters[i])]
}
}
}
}
*/
}
31 changes: 31 additions & 0 deletions .cicd/scripts/srw_build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bash
#
# A unified build script for the SRW application. This script is expected to
# build the SRW application for all supported platforms.
#
set -e -u -x

script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" > /dev/null 2>&1 && pwd)"

# Get repository root from Jenkins WORKSPACE variable if set, otherwise, set
# relative to script directory.
declare workspace
if [[ -n "${WORKSPACE}" ]]; then
workspace="${WORKSPACE}"
else
workspace="$(cd -- "${script_dir}/../.." && pwd)"
fi

build_dir="${workspace}/build"

# Set build related environment variables and load required modules.
source "${workspace}/etc/lmod-setup.sh" "${SRW_PLATFORM}"
module use "${workspace}/modulefiles"
module load "build_${SRW_PLATFORM}_${SRW_COMPILER}"

# Compile SRW application and install to repository root.
mkdir "${build_dir}"
pushd "${build_dir}"
cmake -DCMAKE_INSTALL_PREFIX="${workspace}" "${workspace}"
make -j "${MAKE_JOBS}"
popd
21 changes: 21 additions & 0 deletions .cicd/scripts/srw_test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
#
# A unified test script for the SRW application. This script is expected to
# test the SRW application for all supported platforms. NOTE: At this time,
# this script is a placeholder for a more robust test framework.
#
set -e -u -x

script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" > /dev/null 2>&1 && pwd)"

# Get repository root from Jenkins WORKSPACE variable if set, otherwise, set
# relative to script directory.
declare workspace
if [[ -n "${WORKSPACE}" ]]; then
workspace="${WORKSPACE}"
else
workspace="$(cd -- "${script_dir}/../.." && pwd)"
fi

# Verify that there is a non-zero sized weather model executable.
[[ -s "${workspace}/bin/ufs_model" ]] || [[ -s "${workspace}/bin/NEMS.exe" ]]
1 change: 0 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
# These owners will be the default owners for everything in the repo.
#* @defunkt
* @robgonzalezpita @venitahagerty @christopherwharrop-NOAA @christinaholtNOAA

# Order is important. The last matching pattern has the most precedence.
# So if a pull request only touches javascript files, only these owners
# will be requested to review.
Expand Down
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/textonly_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Text-only request
about: Suggest an idea for this project
title: ''
labels: textonly
assignees: ''

---

## Description
Provide a clear and concise description of the problem to be solved.

## Solution
Add a clear and concise description of the proposed solution.

## Alternatives (optional)
If applicable, add a description of any alternative solutions or features you've considered.

## Related to (optional)
Directly reference any issues or PRs in this or other repositories that this is related to, and describe how they are related.
21 changes: 21 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Build SRW
on: [push]
jobs:
Explore-GitHub-Actions:
runs-on: [self-hosted, ncar]
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@v2
- run: |
cd ufs-srweather-app
./manage_externals/checkout_externals
module use modulefiles
module load build_cheyenne_intel
mdkir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=.. ..
make -j 4
- run: echo "🍏 This job's status is ${{ job.status }}."
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "hpc-stack-mod"]
path = hpc-stack-mod
url = https://github.com/NOAA-EMC/hpc-stack.git
35 changes: 35 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

# Set the version of Python and other tools you might need
build:
os: ubuntu-20.04
tools:
python: "3.9"
# You can also specify other tool versions:
# nodejs: "16"
# rust: "1.55"
# golang: "1.17"

# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/UsersGuide/source/conf.py

# If using Sphinx, optionally build your docs in additional formats such as PDF
# formats:
# - pdf

# Optionally declare the Python requirements required to build your docs
python:
install:
- requirements: docs/UsersGuide/requirements.txt

submodules:
include:
- hpc-stack-mod
recursive: true

6 changes: 3 additions & 3 deletions Externals.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ protocol = git
repo_url = https://github.com/ufs-community/UFS_UTILS
# Specify either a branch name or a hash but not both.
#branch = develop
hash = f30740e
hash = 31271f7
local_path = src/UFS_UTILS
required = True

Expand All @@ -20,7 +20,7 @@ protocol = git
repo_url = https://github.com/ufs-community/ufs-weather-model
# Specify either a branch name or a hash but not both.
#branch = develop
hash = e593349
hash = 96dffa1
local_path = src/ufs-weather-model
required = True

Expand All @@ -29,7 +29,7 @@ protocol = git
repo_url = https://github.com/NOAA-EMC/UPP
# Specify either a branch name or a hash but not both.
#branch = develop
hash = 4a16052
hash = 394917e
local_path = src/UPP
required = True

Expand Down
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@

The Unified Forecast System (UFS) is a community-based, coupled, comprehensive Earth modeling system. It is designed to be the source system for NOAA’s operational numerical weather prediction applications while enabling research, development, and contribution opportunities for the broader weather enterprise. For more information about the UFS, visit the UFS Portal at https://ufscommunity.org/.

The UFS can be configured for multiple applications (see a complete list at https://ufscommunity.org/#/science/aboutapps). The configuration described here is the UFS Short-Range Weather (SRW) Application, which targets predictions of atmospheric behavior on a limited spatial domain and on time scales from less than an hour out to several days. The development branch of the application is continually evolving as the system undergoes open development. The SRW App v1.0.0 represents a snapshot of this continuously evolving system. The SRW App includes a prognostic atmospheric model, pre- and post-processing, and a community workflow for running the system end-to-end.
The UFS includes multiple applications (see a complete list at https://ufscommunity.org/science/aboutapps/) that support different forecast durations and spatial domains. This documentation describes the UFS Short-Range Weather (SRW) Application, which targets predictions of atmospheric behavior on a limited spatial domain and on time scales from minutes to several days. The development branch of the application is continually evolving as the system undergoes open development. The SRW App release branches represent a snapshot of this continuously evolving system. The SRW Application includes a prognostic atmospheric model, pre- and post-processing, and a community workflow for running the system end-to-end. These components are documented within the User's Guide and supported through a community forum (https://forums.ufscommunity.org/).

The UFS SRW App User's Guide associated with the development branch is at: https://ufs-srweather-app.readthedocs.io/en/latest/, while that specific to the SRW App v1.0.0 release can be found at: https://ufs-srweather-app.readthedocs.io/en/ufs-v1.0.0/. The repository is at: https://github.com/ufs-community/ufs-srweather-app.
The UFS SRW App User's Guide associated with the development branch can be found at: https://ufs-srweather-app.readthedocs.io/en/develop/, while the guide specific to the SRW App v1.0.1 release can be found at: https://ufs-srweather-app.readthedocs.io/en/ufs-v1.0.1/. The GitHub repository link is: https://github.com/ufs-community/ufs-srweather-app.

For instructions on how to clone the repository, build the code, and run the workflow, see:
https://github.com/ufs-community/ufs-srweather-app/wiki/Getting-Started

UFS Development Team. (2021, March 4). Unified Forecast System (UFS) Short-Range Weather (SRW) Application (Version v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.4534994

UFS Development Team. (2021, March 4). Unified Forecast System (UFS) Short-Range Weather (SRW) Application (Version v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.4534994
Loading