Skip to content
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

Lineage pull request for: skeleton #15

Merged
merged 29 commits into from
Jul 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
1e8f822
Add style enforcement rules
mcdonnnj Jun 18, 2021
afc6bd6
Add rule for image headers
mcdonnnj Jun 18, 2021
ce173f4
Switch to a YAML markdownlint configuration file
mcdonnnj Jun 18, 2021
f2a4230
Add comments to markdownlint configuration
mcdonnnj Jun 18, 2021
d4781ee
Add the validate_manifest hook from pre-commit
mcdonnnj Jun 24, 2021
106af21
Install terraform and packer for the linting job
jsf9k Jul 9, 2021
c481043
Break out the curl cache creation into its own step
jsf9k Jul 10, 2021
70414cf
Remove unnecessary line in tasks
jsf9k Jul 10, 2021
b629f7f
Modify the Packer installation to model that of Terraform
jsf9k Jul 10, 2021
181d1b2
Install a specific version of terraform-docs
jsf9k Jul 11, 2021
bb6e566
Move go installation so that it takes place before the cache task
jsf9k Jul 12, 2021
337d1ef
Capitalize Go for consistency
jsf9k Jul 12, 2021
8ee2116
Prefer the newer "go install" syntax
jsf9k Jul 13, 2021
e2a729d
Install the shfmt tool for GHA
mcdonnnj Jul 13, 2021
406b688
Replace the beautysh hook with pre-commit-shfmt
mcdonnnj Jul 13, 2021
2b48e75
Apply changes from the shfmt pre-commit hook
mcdonnnj Jul 13, 2021
1708b5c
Update pre-commit hooks
mcdonnnj Jul 13, 2021
d7dcfee
Merge pull request #83 from cisagov/maintenance/update_pre-commit_hooks
mcdonnnj Jul 19, 2021
c17800a
Merge branch 'develop' into improvement/add_pre-commit_hook
mcdonnnj Jul 19, 2021
41a5286
Merge pull request #80 from cisagov/improvement/add_pre-commit_hook
mcdonnnj Jul 19, 2021
e607360
Merge branch 'develop' into improvement/update_mdl_configuration
mcdonnnj Jul 19, 2021
f6ad0e9
Merge branch 'develop' into improvement/install-tf-and-packer-for-lin…
jsf9k Jul 19, 2021
382c39c
Merge pull request #79 from cisagov/improvement/update_mdl_configuration
mcdonnnj Jul 19, 2021
3e3b918
Merge branch 'develop' into improvement/install-tf-and-packer-for-lin…
mcdonnnj Jul 19, 2021
0e4fc41
Merge pull request #82 from cisagov/improvement/install-tf-and-packer…
mcdonnnj Jul 19, 2021
3e83a80
Merge branch 'develop' into improvement/replace_beautysh_with_shfmt
mcdonnnj Jul 19, 2021
81cdb4d
Merge pull request #84 from cisagov/improvement/replace_beautysh_with…
mcdonnnj Jul 19, 2021
7e71593
Merge https://github.com/cisagov/skeleton-generic into lineage/skeleton
Jul 19, 2021
5a1ef2a
Make changes to satisfy shfmt
jsf9k Jul 19, 2021
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
70 changes: 69 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,97 @@ on:
types: [apb]

env:
CURL_CACHE_DIR: ~/.cache/curl
PIP_CACHE_DIR: ~/.cache/pip
PRE_COMMIT_CACHE_DIR: ~/.cache/pre-commit
RUN_TMATE: ${{ secrets.RUN_TMATE }}

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: cisagov/setup-env-github-action@develop
- uses: actions/checkout@v2
- id: setup-python
uses: actions/setup-python@v2
with:
python-version: 3.9
# GO_VERSION and GOCACHE are used by the cache task, so the Go
# installation must happen before that.
- uses: actions/setup-go@v2
with:
go-version: '1.16'
- name: Store installed Go version
run: |
echo "GO_VERSION="\
"$(go version | sed 's/^go version go\([0-9.]\+\) .*/\1/')" \
>> $GITHUB_ENV
- name: Lookup Go cache directory
id: go-cache
run: |
echo "::set-output name=dir::$(go env GOCACHE)"
- uses: actions/cache@v2
env:
BASE_CACHE_KEY: "${{ github.job }}-${{ runner.os }}-\
py${{ steps.setup-python.outputs.python-version }}-"
py${{ steps.setup-python.outputs.python-version }}-\
go${{ env.GO_VERSION }}-\
packer${{ env.PACKER_VERSION }}-\
tf${{ env.TERRAFORM_VERSION }}-"
with:
# Note that the .terraform directory IS NOT included in the
# cache because if we were caching, then we would need to use
# the `-upgrade=true` option. This option blindly pulls down the
# latest modules and providers instead of checking to see if an
# update is required. That behavior defeats the benefits of caching.
# so there is no point in doing it for the .terraform directory.
path: |
${{ env.PIP_CACHE_DIR }}
${{ env.PRE_COMMIT_CACHE_DIR }}
${{ env.CURL_CACHE_DIR }}
${{ steps.go-cache.outputs.dir }}
key: "${{ env.BASE_CACHE_KEY }}\
${{ hashFiles('**/requirements-test.txt') }}-\
${{ hashFiles('**/requirements.txt') }}-\
${{ hashFiles('**/.pre-commit-config.yaml') }}"
restore-keys: |
${{ env.BASE_CACHE_KEY }}
- name: Setup curl cache
run: mkdir -p ${{ env.CURL_CACHE_DIR }}
- name: Install Packer
run: |
PACKER_ZIP="packer_${PACKER_VERSION}_linux_amd64.zip"
curl --output ${{ env.CURL_CACHE_DIR }}/"${PACKER_ZIP}" \
--time-cond ${{ env.CURL_CACHE_DIR }}/"${PACKER_ZIP}" \
--location \
"https://releases.hashicorp.com/packer/${PACKER_VERSION}/${PACKER_ZIP}"
sudo unzip -d /opt/packer \
${{ env.CURL_CACHE_DIR }}/"${PACKER_ZIP}"
sudo mv /usr/local/bin/packer /usr/local/bin/packer-default
sudo ln -s /opt/packer/packer /usr/local/bin/packer
- name: Install Terraform
run: |
TERRAFORM_ZIP="terraform_${TERRAFORM_VERSION}_linux_amd64.zip"
curl --output ${{ env.CURL_CACHE_DIR }}/"${TERRAFORM_ZIP}" \
--time-cond ${{ env.CURL_CACHE_DIR }}/"${TERRAFORM_ZIP}" \
--location \
"https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/${TERRAFORM_ZIP}"
sudo unzip -d /opt/terraform \
${{ env.CURL_CACHE_DIR }}/"${TERRAFORM_ZIP}"
sudo mv /usr/local/bin/terraform /usr/local/bin/terraform-default
sudo ln -s /opt/terraform/terraform /usr/local/bin/terraform
- name: Install shfmt
run: go install mvdan.cc/sh/v3/cmd/shfmt@${SHFMT_VERSION}
- name: Install Terraform-docs
run: |
go install \
github.com/terraform-docs/terraform-docs@${TERRAFORM_DOCS_VERSION}
- name: Find and initialize Terraform directories
run: |
for path in $(find . -not \( -type d -name ".terraform" -prune \) \
-type f -iname "*.tf" -exec dirname "{}" \; | sort -u); do \
echo "Initializing '$path'..."; \
terraform init -input=false -backend=false "$path"; \
done
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand All @@ -42,3 +107,6 @@ jobs:
run: pre-commit install-hooks
- name: Run pre-commit on all files
run: pre-commit run --all-files
- name: Setup tmate debug session
uses: mxschmitt/action-tmate@v3
if: env.RUN_TMATE
10 changes: 0 additions & 10 deletions .mdl_config.json

This file was deleted.

40 changes: 40 additions & 0 deletions .mdl_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---

# Default state for all rules
default: true

# MD003/heading-style/header-style - Heading style
MD003:
# Enforce the ATX-closed style of header
style: "atx_closed"

# MD004/ul-style - Unordered list style
MD004:
# Enforce dashes for unordered lists
style: "dash"

# MD013/line-length - Line length
MD013:
# Do not enforce for code blocks
code_blocks: false
# Do not enforce for tables
tables: false

# MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the
# same content
MD024:
# Allow headers with the same content as long as they are not in the same
# parent heading
allow_different_nesting: true

# MD029/ol-prefix - Ordered list item prefix
MD029:
# Enforce the `1.` style for ordered lists
style: "one"

# MD033/no-inline-html - Inline HTML
MD033:
# The h1 and img elements are allowed to permit header images
allowed_elements:
- h1
- img
35 changes: 24 additions & 11 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ repos:
hooks:
- id: markdownlint
args:
- --config=.mdl_config.json
- --config=.mdl_config.yaml
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.3.0
rev: v2.3.2
hooks:
- id: prettier
- repo: https://github.com/adrienverge/yamllint
Expand All @@ -47,14 +47,27 @@ repos:
args:
- --strict

# pre-commit hooks
- repo: https://github.com/pre-commit/pre-commit
rev: v2.13.0
hooks:
- id: validate_manifest

# Shell script hooks
- repo: https://github.com/lovesegfault/beautysh
rev: v6.1.0
- repo: https://github.com/cisagov/pre-commit-shfmt
rev: v0.0.2
hooks:
- id: beautysh
- id: shfmt
args:
- --indent-size
# Indent by two spaces
- -i
- '2'
# Binary operators may start a line
- -bn
# Switch cases are indented
- -ci
# Redirect operators are followed by a space
- -sr
- repo: https://github.com/detailyang/pre-commit-shell
rev: 1.0.5
hooks:
Expand All @@ -68,7 +81,7 @@ repos:
args:
- --config=.bandit.yml
- repo: https://github.com/psf/black
rev: 21.5b2
rev: 21.7b0
hooks:
- id: black
- repo: https://gitlab.com/pycqa/flake8
Expand All @@ -78,15 +91,15 @@ repos:
additional_dependencies:
- flake8-docstrings
- repo: https://github.com/PyCQA/isort
rev: 5.8.0
rev: 5.9.2
hooks:
- id: isort
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.812
rev: v0.910
hooks:
- id: mypy
- repo: https://github.com/asottile/pyupgrade
rev: v2.19.1
rev: v2.21.2
hooks:
- id: pyupgrade

Expand Down Expand Up @@ -123,7 +136,7 @@ repos:

# Docker hooks
- repo: https://github.com/IamTheFij/docker-pre-commit
rev: v2.0.0
rev: v2.0.1
hooks:
- id: docker-compose-check

Expand Down
5 changes: 2 additions & 3 deletions bump_version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,11 @@ HELP_INFORMATION="bump_version.sh (show|major|minor|patch|prerelease|build|final

old_version=$(cat $VERSION_FILE)

if [ $# -ne 1 ]
then
if [ $# -ne 1 ]; then
echo "$HELP_INFORMATION"
else
case $1 in
major|minor|patch|prerelease|build)
major | minor | patch | prerelease | build)
new_version=$(python -c "import semver; print(semver.bump_$1('$old_version'))")
echo Changing version from "$old_version" to "$new_version"
sed -i "s/$old_version/$new_version/" $VERSION_FILE
Expand Down
14 changes: 8 additions & 6 deletions setup-env
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ set -o nounset
set -o errexit
set -o pipefail

USAGE=$(cat << 'END_OF_LINE'
USAGE=$(
cat << 'END_OF_LINE'
Configure a developement environment for this repository.

It does the following:
Expand Down Expand Up @@ -35,17 +36,17 @@ FORCE=0
PARAMS=""

# Parse command line arguments
while (( "$#" )); do
while (("$#")); do
case "$1" in
-f|--force)
-f | --force)
FORCE=1
shift
;;
-h|--help)
-h | --help)
echo "${USAGE}"
exit 0
;;
-i|--install-hooks)
-i | --install-hooks)
INSTALL_HOOKS=1
shift
;;
Expand Down Expand Up @@ -160,7 +161,8 @@ pre-commit install ${INSTALL_HOOKS:+"--install-hooks"}
# This could fail if the remotes are already setup, but that is ok.
set +o errexit

eval "$(python3 << 'END_OF_LINE'
eval "$(
python3 << 'END_OF_LINE'
from pathlib import Path
import yaml
import sys
Expand Down