rails_template_18f 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +1 -1
- data/lib/generators/rails_template18f/auditree/auditree_generator.rb +84 -0
- data/lib/generators/rails_template18f/auditree/templates/bin/auditree.tt +29 -0
- data/lib/generators/rails_template18f/auditree/templates/github/actions/auditree-cmd/action.yml.tt +31 -0
- data/lib/generators/rails_template18f/auditree/templates/github/workflows/auditree-validation.yml.tt +42 -0
- data/lib/rails_template18f/version.rb +1 -1
- data/template.rb +8 -0
- data/templates/manifest.yml.tt +0 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea2ec3406d7768825b772437242ea1b106d635ef1e4231b0a3c5b7959c88574f
|
4
|
+
data.tar.gz: edce599ccfdb6455e5dd8a781aecd37c54ec1d94045aba71735d9262885070e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b1cd11a24976b6eeb067ac5ff3dc050c6e049dc2e5875d55b24b269059233b7503cb9eeeb6f70df78543dd30e6a69bc9cbaf8d15f9b38aba7e568847f830bd4
|
7
|
+
data.tar.gz: 3cbeed2a16a2f6b89d31f193540556b56e12fa575f659feb513ba75cfea06b1bb19f7fcfcae501fc0ec576a8dead1d7bca87d058c67d3db605611bc6f6551eb2
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
|
4
|
+
## [1.1.0] - 2024-08-20
|
5
|
+
|
6
|
+
- add an auditree generator for integration with auditree-devtools and github actions to run it
|
7
|
+
- remove the obsolete entry to include nodejs_buildpack in cloud.gov manifest.yml
|
8
|
+
|
3
9
|
## [1.0.0] - 2024-06-27
|
4
10
|
|
5
11
|
- new applications are now on Rails 7.1.x
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rails/generators"
|
4
|
+
|
5
|
+
module RailsTemplate18f
|
6
|
+
module Generators
|
7
|
+
class AuditreeGenerator < ::Rails::Generators::Base
|
8
|
+
include Base
|
9
|
+
|
10
|
+
class_option :tag, desc: "Which auditree docker tag to use. Defaults to `latest`"
|
11
|
+
class_option :git_email, desc: "Email address to associate with commits to the evidence locker"
|
12
|
+
|
13
|
+
desc <<~DESC
|
14
|
+
Description:
|
15
|
+
Set up auditree validation checking with https://github.com/GSA-TTS/devtools-auditree.
|
16
|
+
|
17
|
+
This generator is still experimental.
|
18
|
+
DESC
|
19
|
+
|
20
|
+
def copy_bin
|
21
|
+
template "bin/auditree"
|
22
|
+
chmod "bin/auditree", 0o755
|
23
|
+
end
|
24
|
+
|
25
|
+
def copy_github_actions
|
26
|
+
if file_exists? ".github/workflows"
|
27
|
+
directory "github", ".github"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def update_readme
|
32
|
+
if file_content("README.md").match?("## Documentation")
|
33
|
+
insert_into_file "README.md", readme_contents, after: "## Documentation\n"
|
34
|
+
else
|
35
|
+
append_to_file "README.md", "\n## Documentation\n#{readme_contents}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def update_component_list
|
40
|
+
if oscal_dir_exists?
|
41
|
+
insert_into_file "doc/compliance/oscal/trestle-config.yaml", " - devtools_cloud_gov\n"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
no_tasks do
|
46
|
+
def docker_auditree_tag
|
47
|
+
options[:tag].present? ? options[:tag] : "latest"
|
48
|
+
end
|
49
|
+
|
50
|
+
def git_email
|
51
|
+
options[:git_email].present? ? options[:git_email] : "TKTK-email@gsa.gov"
|
52
|
+
end
|
53
|
+
|
54
|
+
def readme_contents
|
55
|
+
<<~README
|
56
|
+
|
57
|
+
### Auditree Control Validation
|
58
|
+
|
59
|
+
Auditree is used within CI/CD to validate that certain controls are in place.
|
60
|
+
|
61
|
+
* Run `bin/auditree` to start the auditree CLI.
|
62
|
+
* Run `bin/auditree SCRIPT_NAME` to run a single auditree script
|
63
|
+
|
64
|
+
#### Initial auditree setup.
|
65
|
+
|
66
|
+
These steps must happen once per project.
|
67
|
+
|
68
|
+
1. Docker desktop must be running
|
69
|
+
1. Initialize the config file with `bin/auditree init > config/auditree.template.json`
|
70
|
+
1. Create an evidence locker repository with a default or blank README
|
71
|
+
1. Create a github personal access token to interact with the code repo and evidence locker and set as `AUDITREE_GITHUB_TOKEN` secret within your production Github environment secrets.
|
72
|
+
1. Update `config/auditree.template.json` with the repo addresses for your locker and code repos
|
73
|
+
1. Copy the `devtools_cloud_gov` component definition into the project with the latest docker-trestle
|
74
|
+
|
75
|
+
#### Ongoing use
|
76
|
+
|
77
|
+
See the [auditree-devtools README](https://github.com/gsa-tts/auditree-devtools) for help with updating
|
78
|
+
auditree and using new checks.
|
79
|
+
README
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#! /usr/bin/env bash
|
2
|
+
usage="
|
3
|
+
$0: Run auditree docker image.
|
4
|
+
|
5
|
+
Usage:
|
6
|
+
$0 -h
|
7
|
+
$0
|
8
|
+
$0 init > path/to/auditree.template.json
|
9
|
+
$0 fetch
|
10
|
+
$0 check > path/to/assessment-results/auditree/assessment-results.json
|
11
|
+
|
12
|
+
Notes:
|
13
|
+
The following environment variables will be passed through to the docker image:
|
14
|
+
* GITHUB_TOKEN - a token that has permissions to read and write to the evidence locker and code repository. Required for all but 'init'
|
15
|
+
* CF_USERNAME - the cloud.gov username to fetch evidence from cloud.gov, only needed when running fetch script
|
16
|
+
* CF_PASSWORD - the cloud.gov password to fetch evidence from cloud.gov, only needed when running fetch script
|
17
|
+
"
|
18
|
+
|
19
|
+
if [ "$1" = "-h" ]; then
|
20
|
+
echo "$usage"
|
21
|
+
exit 0
|
22
|
+
fi
|
23
|
+
|
24
|
+
command="bash"
|
25
|
+
if [ "$1" != "" ]; then
|
26
|
+
command=$1
|
27
|
+
fi
|
28
|
+
|
29
|
+
docker run -e GITHUB_TOKEN -e CF_USERNAME -e CF_PASSWORD -e GIT_EMAIL="<%= git_email %>" -it --rm ghcr.io/gsa-tts/auditree:<%= docker_auditree_tag %> $command
|
data/lib/generators/rails_template18f/auditree/templates/github/actions/auditree-cmd/action.yml.tt
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
name: "Run an auditree-devtools command"
|
2
|
+
description: "Sets up workspace for running a single command in auditree-devtools"
|
3
|
+
inputs:
|
4
|
+
tag:
|
5
|
+
description: auditree-devtools tag to use. Defaults to <%= docker_auditree_tag %>
|
6
|
+
required: false
|
7
|
+
default: <%= docker_auditree_tag %>
|
8
|
+
cmd:
|
9
|
+
description: Command to run within auditree-devtools
|
10
|
+
required: true
|
11
|
+
email:
|
12
|
+
description: Git user email to attribute to evidence updates
|
13
|
+
required: true
|
14
|
+
config_template:
|
15
|
+
description: Auditree config file template
|
16
|
+
required: false
|
17
|
+
default: config/auditree.template.json
|
18
|
+
cdef:
|
19
|
+
description: OSCAL Component Definition being used as baseline for assessment results
|
20
|
+
required: false
|
21
|
+
default: doc/compliance/oscal/component-definitions/devtools_cloud_gov/component-definition.json
|
22
|
+
runs:
|
23
|
+
using: "composite"
|
24
|
+
steps:
|
25
|
+
- name: Run cmd
|
26
|
+
shell: bash
|
27
|
+
run:
|
28
|
+
docker run -v $GITHUB_WORKSPACE/${{inputs.config_template}}:/app/auditree.template.json:ro
|
29
|
+
-v $GITHUB_WORKSPACE/${{inputs.cdef}}:/app/cdef.json:ro
|
30
|
+
-e GITHUB_TOKEN -e CF_USERNAME -e CF_PASSWORD -e GIT_EMAIL="${{inputs.email}}"
|
31
|
+
ghcr.io/gsa-tts/auditree:${{ inputs.tag }} ${{ inputs.cmd }}
|
data/lib/generators/rails_template18f/auditree/templates/github/workflows/auditree-validation.yml.tt
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
name: Run Auditree Checks
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_dispatch:
|
5
|
+
schedule:
|
6
|
+
# cron format: 'minute hour dayofmonth month dayofweek'
|
7
|
+
# this will run at 11am UTC every day (6am EST / 7am EDT)
|
8
|
+
- cron: '0 11 * * *'
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
run_auditree:
|
12
|
+
name: Fetch and check auditree evidence
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
environment: production
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v4
|
17
|
+
|
18
|
+
- name: Fetch evidence
|
19
|
+
uses: ./.github/actions/auditree-cmd
|
20
|
+
env:
|
21
|
+
CF_USERNAME: ${{ secrets.CF_USERNAME }}
|
22
|
+
CF_PASSWORD: ${{ secrets.CF_PASSWORD }}
|
23
|
+
GITHUB_TOKEN: ${{ secrets.AUDITREE_GITHUB_TOKEN }}
|
24
|
+
with:
|
25
|
+
cmd: fetch
|
26
|
+
email: "<%= git_email %>"
|
27
|
+
|
28
|
+
- name: Check evidence
|
29
|
+
uses: ./.github/actions/auditree-cmd
|
30
|
+
env:
|
31
|
+
CF_USERNAME: ${{ secrets.CF_USERNAME }}
|
32
|
+
CF_PASSWORD: ${{ secrets.CF_PASSWORD }}
|
33
|
+
GITHUB_TOKEN: ${{ secrets.AUDITREE_GITHUB_TOKEN }}
|
34
|
+
with:
|
35
|
+
cmd: check > doc/compliance/oscal/assessment-results/auditree/assessment-results.json
|
36
|
+
email: "<%= git_email %>"
|
37
|
+
|
38
|
+
- name: Save results
|
39
|
+
uses: actions/upload-artifact@v4
|
40
|
+
with:
|
41
|
+
name: auditree_assessment_results
|
42
|
+
path: doc/compliance/oscal/assessment-results/auditree
|
data/template.rb
CHANGED
@@ -69,6 +69,8 @@ if compliance_trestle_submodule && compliance_trestle_repo.blank?
|
|
69
69
|
compliance_trestle = false
|
70
70
|
compliance_trestle_submodule = false
|
71
71
|
end
|
72
|
+
# only ask about auditree if we're also using docker-trestle
|
73
|
+
auditree = compliance_trestle ? yes?("Run compliance checks with auditree? (y/n)") : false
|
72
74
|
|
73
75
|
terraform = yes?("Create terraform files for cloud.gov services? (y/n)")
|
74
76
|
@cloud_gov_organization = ask("What is your cloud.gov organization name? (Leave blank to fill in later)")
|
@@ -458,6 +460,12 @@ if @circleci_pipeline
|
|
458
460
|
EOM
|
459
461
|
end
|
460
462
|
|
463
|
+
if auditree
|
464
|
+
after_bundle do
|
465
|
+
generate "rails_template18f:auditree"
|
466
|
+
end
|
467
|
+
end
|
468
|
+
|
461
469
|
# setup production credentials file
|
462
470
|
require "rails/generators"
|
463
471
|
require "rails/generators/rails/encryption_key_file/encryption_key_file_generator"
|
data/templates/manifest.yml.tt
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_template_18f
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Ahearn
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -136,6 +136,10 @@ files:
|
|
136
136
|
- lib/generators/rails_template18f/active_storage/templates/oscal/component-definitions/active_storage/component-definition.json
|
137
137
|
- lib/generators/rails_template18f/active_storage/templates/spec/jobs/file_scan_job_spec.rb
|
138
138
|
- lib/generators/rails_template18f/active_storage/templates/spec/models/file_upload_spec.rb
|
139
|
+
- lib/generators/rails_template18f/auditree/auditree_generator.rb
|
140
|
+
- lib/generators/rails_template18f/auditree/templates/bin/auditree.tt
|
141
|
+
- lib/generators/rails_template18f/auditree/templates/github/actions/auditree-cmd/action.yml.tt
|
142
|
+
- lib/generators/rails_template18f/auditree/templates/github/workflows/auditree-validation.yml.tt
|
139
143
|
- lib/generators/rails_template18f/circleci/circleci_generator.rb
|
140
144
|
- lib/generators/rails_template18f/circleci/templates/Dockerfile.ci.tt
|
141
145
|
- lib/generators/rails_template18f/circleci/templates/bin/ci-server-start
|