Skip to content
This repository was archived by the owner on Jul 1, 2025. It is now read-only.

Commit c9a9b64

Browse files
authored
Merge pull request #150 from 18F/master
Merge 10x Milestone 6
2 parents 912b3e7 + cda0007 commit c9a9b64

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+5669
-1917
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Build release artifact
2+
on:
3+
push:
4+
tags:
5+
- "*"
6+
jobs:
7+
build-release:
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
# Check-out the repository under $GITHUB_WORKSPACE
12+
- uses: actions/checkout@v2
13+
14+
- name: Read Node version from .nvmrc
15+
run: echo "##[set-output name=NVMRC;]$(cat .nvmrc)"
16+
id: nvm
17+
18+
- uses: actions/setup-node@v2.3.0
19+
with:
20+
node-version: ${{ steps.nvm.outputs.NVMRC }}
21+
22+
# Initialize workspace with git submodules and build a release
23+
- name: Build release
24+
run: make init build
25+
26+
# Create a release corresponding to the triggered tag
27+
- uses: ncipollo/release-action@v1
28+
with:
29+
allowUpdates: true
30+
artifacts: dist/validations/ssp.xsl
31+
token: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,4 @@ src/validations/report
99
src/validations/src/ssp.xsl
1010
src/validations/target
1111
src/validations/test/*
12-
src/validations/ui/coverage/
1312
utils

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v16.2.0
1+
v16.4.0

Makefile

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
REQUIRED_NODE_VERSION = $(shell cat .nvmrc)
2+
INSTALLED_NODE_VERSION = $(shell node --version)
3+
4+
.PHONY: help
5+
6+
help:
7+
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
8+
9+
all: clean test build ## Complete clean build with tests
10+
11+
init: init-repo init-web ## Initialize project dependencies
12+
13+
node:
14+
ifneq ($(REQUIRED_NODE_VERSION),$(INSTALLED_NODE_VERSION))
15+
$(error node.js version $(REQUIRED_NODE_VERSION) required)
16+
endif
17+
18+
init-repo:
19+
git submodule update --init --recursive
20+
21+
init-web: node
22+
cd src/web && \
23+
npm install
24+
25+
clean: clean-dist clean-validations clean-web ## Clean all
26+
27+
clean-dist: ## Clean non-RCS-tracked dist files
28+
@echo "Cleaning dist..."
29+
git clean -xfd dist
30+
31+
clean-validations: ## Clean validations artifact
32+
@echo "Cleaning validations..."
33+
cd src/validations \
34+
rm -rf report target
35+
36+
clean-web: ## Clean web artifacts
37+
@echo "Cleaning web..."
38+
cd src/web && \
39+
npm run clean
40+
41+
test: test-validations test-web ## Test all
42+
43+
test-validations: ## Test validations
44+
@echo "Running validations tests..."
45+
cd src/validations && \
46+
../../vendor/xspec/bin/xspec.sh -s -j test/test_all.xspec
47+
48+
test-web: ## Test web codebase
49+
@echo "Running web tests..."
50+
cd src/web && \
51+
npm run test
52+
53+
build: build-validations build-web dist ## Build all artifacts and copy into dist directory
54+
# Symlink for Federalist
55+
ln -sf ./src/web/build _site
56+
57+
# Copy validations
58+
mkdir -p dist/validations
59+
cp src/validations/target/ssp.xsl dist/validations
60+
cp -r src/validations/rules/ssp.sch dist/validations
61+
62+
build-validations: ## Build Schematron validations
63+
@echo "Building Schematron validations..."
64+
cd src/validations && \
65+
./bin/validate_with_schematron.sh
66+
67+
build-web: node ## Build web bundle
68+
@echo "Building web bundle..."
69+
cd src/web && \
70+
npm run build

README.md

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The FedRAMP Program Management Office (PMO) has drafted FedRAMP-specific extensi
77

88
To accompany these guides, the FedRAMP PMO has also drafted OSCAL files in XML and JSON formats to serve as an example and template for each major deliverable.
99

10-
## Support and OSCAL Deprecation Strategy
10+
## Support and OSCAL Deprecation Strategy
1111

1212
The FedRAMP PMO has [a release strategy and versioning procedures](./documents/adr/0002-git-release-version-strategy.md). FedRAMP has a minimally supported version of OSCAL, unless explicitly noted otherwise in specific documents or source code in this repository. Baselines, guides, templates, and associated tools in this repository will only support OSCAL data with a version number no lower than specified by FedRAMP version tags. A version tag that ends in `-oscal1.0.0` will only support data with `oscal-version` equal to `1.0.0` or newer, it will not support `1.0.0-milestone3`, `1.0.0-rc1`, or `1.0.0-rc2`. A future version tag ending in `-oscal1.1.0` indicates FedRAMP source code and guides will support data with `oscal-version` equal to `1.1.0` or newer, but not `1.0.0`.
1313

@@ -20,7 +20,7 @@ This repository is for the development and enhancement of OSCAL artifacts only.
2020
The FedRAMP PMO is releasing the following files for public review and comment:
2121

2222
- **FedRAMP Baselines:** The FedRAMP baselines for High, Moderate, Low, and Tailored for Low Impact-Software as a Service (LI-SaaS) in OSCAL (XML and JSON formats) are available [here](./dist/content/baselines).
23-
23+
2424
- **FedRAMP OSCAL Templates:** The template files are pre-populated with FedRAMP extensions, defined-identifiers, and conformity tags where practical. They also include sample data, and are the basis for their respective guidance documents above. The drafts for public comment are available in both XML and JSON formats [here](./dist/content/templates/).
2525

2626
- **FedRAMP OSCAL Registry** This registry is the authoritative source for all FedRAMP extensions to the OSCAL syntax, FedRAMP-defined identifiers, and accepted values. The draft for public comment is available [here](./documents/FedRAMP_Extensions.pdf).
@@ -42,12 +42,43 @@ The following NIST resources are available:
4242

4343
- **OSCAL Workshop Training Slides:** Provided at an October workshop hosted by the NIST OSCAL Team. The early portions of the deck provide an overview, with more technical details beginning on slide 52. [https://pages.nist.gov/OSCAL/downloads/OSCAL-workshop-20191105.pdf](https://pages.nist.gov/OSCAL/learn/presentations/OSCAL-workshop-20191105.pdf)
4444

45-
- **Content Converters:** The converters accurately convert OSCAL catalog, profile, SSP, SAP, SAR, and POA&M content from [XML to JSON](https://github.com/usnistgov/OSCAL/tree/master/json/convert) and [JSON to XML](https://github.com/usnistgov/OSCAL/tree/master/xml/convert).
45+
- **Content Converters:** The converters accurately convert OSCAL catalog, profile, SSP, SAP, SAR, and POA&M content from [XML to JSON](https://github.com/usnistgov/OSCAL/tree/master/json/convert) and [JSON to XML](https://github.com/usnistgov/OSCAL/tree/master/xml/convert).
4646

47-
- **NIST SP 800-53 & 53A Revision 4 in OSCAL:** NIST is also providing SP 800-53 and 800-53A, Revision 4 content as well as the NIST High, Moderate, and Low baselines in OSCAL (XML, JSON, and YAML formats) [here](https://github.com/usnistgov/OSCAL/tree/master/content/nist.gov/SP800-53/rev4).
47+
- **NIST SP 800-53 & 53A Revision 4 in OSCAL:** NIST is also providing SP 800-53 and 800-53A, Revision 4 content as well as the NIST High, Moderate, and Low baselines in OSCAL (XML, JSON, and YAML formats) [here](https://github.com/usnistgov/OSCAL/tree/master/content/nist.gov/SP800-53/rev4).
4848

49-
NIST offers a complete package containing the NIST OSCAL converters, syntax validation tools, 800-53 and FedRAMP baselines content is available for download in both ZIP and BZ2 format. Visit the [NIST OSCAL Github releases page for more information](https://github.com/usnistgov/OSCAL/releases/latest).
49+
NIST offers a complete package containing the NIST OSCAL converters, syntax validation tools, 800-53 and FedRAMP baselines content is available for download in both ZIP and BZ2 format. Visit the [NIST OSCAL Github releases page for more information](https://github.com/usnistgov/OSCAL/releases/latest).
5050

5151
Please ask questions or provide feedback on the above NIST dependencies either via email to [oscal@nist.gov](mailto:oscal@nist.gov), as a comment to an existing issue, or as a new issue via the [NIST OSCAL GitHub site](https://github.com/usnistgov/OSCAL/issues).
5252

5353
FedRAMP looks forward to receiving your comments and sharing additional progress.
54+
55+
## Developer notes
56+
57+
### Build / test
58+
59+
A top-level Makefile is provided to simplify builds.
60+
61+
Build requirements are:
62+
63+
- gcc make
64+
- node.js (as versioned in [./nvmrc](./.nvmrc))
65+
- Java 8+
66+
67+
For usage information, use the default target:
68+
69+
```
70+
make
71+
```
72+
### Creating a release
73+
74+
[ADR 0002 (git release version strategy)](./documents/adr/0002-git-release-version-strategy.md)
75+
outlines the release and versioning system.
76+
77+
Releases must be tagged from the master branch of [GSA/fedramp-automation](https://github.com/GSA/fedramp-automation). If your work resides elsewhere, first merge to master via a pull-request.
78+
79+
To produce a release:
80+
81+
- [Create a Github Release](https://github.com/GSA/fedramp-automation/releases/new)
82+
- Ensure the tag follows the naming convention defined in [ADR 0002](./documents/adr/0002-git-release-version-strategy.md)
83+
- [Monitor running Github Actions](https://github.com/GSA/fedramp-automation/actions) for the `build-release` workflow's completion ([./.github/workflows/create-release.yml](./.github/workflows/create-release.yml))
84+
- On completion, artifacts will be attached to the release

0 commit comments

Comments
 (0)