This module contains helper scripts that automate common git tasks:
git-rebase: This script can be used to merge git branch A into branch B using git rebase.
git-add-commit-push: This script is meant to be run in a CI job to add, commit, and push a given set of files to
Git, handling common tasks like configuring Git in a CI job, checking for common error cases, and ensuring the commit
doesn't trigger another CI job.
Installing the helpers
You can install the helpers using the Gruntwork Installer
(make sure to replace <VERSION> below with the latest version from the releases
page):
We recommend running this command in the dependencies section of circle.yml:
dependencies:
override:
# Install the Gruntwork Installer
- curl -Ls https://raw.githubusercontent.com/gruntwork-io/gruntwork-installer/master/bootstrap-gruntwork-installer.sh | bash /dev/stdin --version 0.0.9# Use the Gruntwork Installer to install the gruntwork-module-circleci-helpers module
- gruntwork-install --module-name "git-helpers" --repo "https://github.com/gruntwork-io/module-ci" --tag "0.0.5"
Using the git-add-commit-push helper
The most common use-case for this script is to automatically commit generated files (e.g. generated code, auto-filled
version number, aut-generated docs) to Git at the end of a CI job. Here is an example circle.yml file that shows the
usage:
deployment:
release:
tag: /v.*/
commands:
# Generate a new file
- auto-generate-some-code --output generated-file.txt
# Commit the file to Git
- git-add-commit-push --path generated-file.txt --message "Automatically regenerate generated-file.txt"
The main options to pass to git-add-commit-push are:
--path: The path to add, commit, and push to Git. Required. May be specified more than once.
--message: The commit message. Required.
Questions? Ask away.
We're here to talk about our services, answer any questions, give advice, or just to chat.
{"treedata":{"name":"root","toggled":true,"children":[{"name":".circleci","children":[{"name":"config.yml","path":".circleci/config.yml","sha":"b78d71b68521ef8b09a2fdc04a30efe32ac10c72"}]},{"name":".gitignore","path":".gitignore","sha":"1cd2e7ca72e5102b6b85a0c1de82d28c99d4287e"},{"name":".pre-commit-config.yaml","path":".pre-commit-config.yaml","sha":"5ed0bc7f2115f7400ca8e1dff435c584323c2694"},{"name":"CODEOWNERS","path":"CODEOWNERS","sha":"8756b38c5d955dfa04e10eda748ee62fc361d244"},{"name":"LICENSE.txt","path":"LICENSE.txt","sha":"f4e3d9bd4717a044ed31ad847a300eee74371a78"},{"name":"README-CircleCI.adoc","path":"README-CircleCI.adoc","sha":"046b030ed6e15023530d4a29a3dcf60ac7982d27"},{"name":"README-Jenkins.adoc","path":"README-Jenkins.adoc","sha":"2587e3b59001ed39eaac88468202afdcbc2332af"},{"name":"README-Terraform-Terragrunt-Pipeline.adoc","path":"README-Terraform-Terragrunt-Pipeline.adoc","sha":"1ad99530c6cf984aa638e7c2fcd0bf4d4987ce12"},{"name":"README-TravisCI.adoc","path":"README-TravisCI.adoc","sha":"45e0d32aae5d971ee7e7670dc0da94d364c14457"},{"name":"README.adoc","path":"README.adoc","sha":"47cb10253af3b2e514678434a61ad681c02a88f2"},{"name":"_ci","children":[{"name":"deploy.sh","path":"_ci/deploy.sh","sha":"c41fc3ee5a4ad6b6a9fd0e4a09e7ee4219d18e6a"},{"name":"output-debug-values.sh","path":"_ci/output-debug-values.sh","sha":"fa613638c76c2031b1427c2daa1d66f71fedad68"}]},{"name":"_docs","children":[{"name":"circleci-cicd-architecture.png","path":"_docs/circleci-cicd-architecture.png","sha":"06f8a55b7c123b6e589333a1ff1c3d90c43222d6"},{"name":"circleci-icon.png","path":"_docs/circleci-icon.png","sha":"d4e8df17858e6f230ff9e8d90ea388b3ff340b79"},{"name":"jenkins-architecture.png","path":"_docs/jenkins-architecture.png","sha":"a35a534eb7f13547e232635262d6b1c1506e9230"},{"name":"jenkins-icon.png","path":"_docs/jenkins-icon.png","sha":"cfb474486acb167b655c22a400fe5cc999959164"},{"name":"terraform-icon.png","path":"_docs/terraform-icon.png","sha":"85602f11c76fd989788112ba40c08d979ddb1164"},{"name":"tftg-pipeline-architecture.png","path":"_docs/tftg-pipeline-architecture.png","sha":"e563c49e192e8f7c8a7bf34260627372b6d70fb6"},{"name":"travisci-cicd-architecture.png","path":"_docs/travisci-cicd-architecture.png","sha":"c7da609e901de1baba84918893af9016c3da78ed"},{"name":"travisci-icon.png","path":"_docs/travisci-icon.png","sha":"57116e900f797c8f35399929fb3a24b2cf0e7181"}]},{"name":"examples","children":[{"name":"ecs-deploy-runner","children":[{"name":"README.md","path":"examples/ecs-deploy-runner/README.md","sha":"f7dbc2c05f78cdeaff779eecfef93594f7a9c175"},{"name":"main.tf","path":"examples/ecs-deploy-runner/main.tf","sha":"1ea38845f314656c83a9cc65e9015ce2ad9cb7a3"},{"name":"outputs.tf","path":"examples/ecs-deploy-runner/outputs.tf","sha":"5d043c276e64e390f78fd92f89683423b87812cf"},{"name":"variables.tf","path":"examples/ecs-deploy-runner/variables.tf","sha":"a6512d265d355af883b7a3efe290ca09698bd51c"}]},{"name":"iam-policies","children":[{"name":"README.md","path":"examples/iam-policies/README.md","sha":"4eaf42cd7b4bc254ac9aabfaa8d6c1b4b8cc4281"},{"name":"main.tf","path":"examples/iam-policies/main.tf","sha":"2a1c9d0380b66da922b51e259b0691987de595b1"},{"name":"vars.tf","path":"examples/iam-policies/vars.tf","sha":"ffd4eed9234a389e6809cbb1c149efdbe778578e"}]},{"name":"jenkins","children":[{"name":"README.md","path":"examples/jenkins/README.md","sha":"5c76af2853297fa24f0ab44dc1cdcdf6ba8e1a55"},{"name":"docker-compose.yml","path":"examples/jenkins/docker-compose.yml","sha":"cdbb01e4c39d6ad67656d7997355b03027f2358e"},{"name":"main.tf","path":"examples/jenkins/main.tf","sha":"0afcb8b2d1326920d1c5395b314235c4d1da4c06"},{"name":"mock","children":[{"name":"mock-user-data.sh","path":"examples/jenkins/mock/mock-user-data.sh","sha":"610ba8091622d0bbec4301093b63c4263b5939ae"},{"name":"mount-ebs-volume","path":"examples/jenkins/mock/mount-ebs-volume","sha":"faa2394ad8a7a35657fb7f34b2014c7f05224e56"},{"name":"systemctl","path":"examples/jenkins/mock/systemctl","sha":"c656c65a7fd2b411548adb7865bc9c065333ad2e"}]},{"name":"outputs.tf","path":"examples/jenkins/outputs.tf","sha":"c23cb7b34a3e1c87c303e6b6167537f0d8c5853a"},{"name":"packer","children":[{"name":"jenkins.json","path":"examples/jenkins/packer/jenkins.json","sha":"36401c4d20bd5af05df378f36ef9e456f2d064e0"}]},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/jenkins/user-data/user-data.sh","sha":"19a4ccc9a1f8cb264d6995473ece0c2b02a0091a"}]},{"name":"vars.tf","path":"examples/jenkins/vars.tf","sha":"1f6110c4346eaae22d0b6b3c0a943cbdf0d0e811"}]}]},{"name":"modules","children":[{"name":"aws-helpers","children":[{"name":"README.md","path":"modules/aws-helpers/README.md","sha":"2fc74c09e7880238a4c049022f455809549d2ee1"},{"name":"bin","children":[{"name":"publish-ami","path":"modules/aws-helpers/bin/publish-ami","sha":"1d5697d411cbeed05734fb356ffbf598f7e4eeeb"}]},{"name":"install.sh","path":"modules/aws-helpers/install.sh","sha":"2700711d6a80c6f6c218e4b3d5b1b0cfe4d7609b"}]},{"name":"build-helpers","children":[{"name":"README.md","path":"modules/build-helpers/README.md","sha":"6f8eaf26c9a17c81b97a6a6bb377ccc96e0fd481"},{"name":"bin","children":[{"name":"build-docker-image","path":"modules/build-helpers/bin/build-docker-image","sha":"0fde55c7e1985925fe00d2d399b190ae6b2edd26"},{"name":"build-packer-artifact","path":"modules/build-helpers/bin/build-packer-artifact","sha":"2901a298f73af8741d211bac3b42e9fadad2ef57"}]},{"name":"install.sh","path":"modules/build-helpers/install.sh","sha":"a132488127b88ef8268399a0b3852aa5e0967a20"}]},{"name":"check-url","children":[{"name":"README.md","path":"modules/check-url/README.md","sha":"070d26ac5f4cf136fc28a69d97df6710a341cf24"},{"name":"bin","children":[{"name":"check-url","path":"modules/check-url/bin/check-url","sha":"4e6c57dd70e0a385fb23814619dc917b7c527e57"}]},{"name":"install.sh","path":"modules/check-url/install.sh","sha":"488fad728f75e4ffb6d7156b7cc9ee9682d60183"}]},{"name":"circleci-helpers","children":[{"name":"README.md","path":"modules/circleci-helpers/README.md","sha":"3e58d0856dd6ae04bbd22814d6243b0225a689d9"},{"name":"bin","children":[{"name":"install-go-version","path":"modules/circleci-helpers/bin/install-go-version","sha":"8a0121205f24358a00af129e729795013ebf7edb"},{"name":"place-repo-in-gopath","path":"modules/circleci-helpers/bin/place-repo-in-gopath","sha":"ac7085bb304a2004050e676bea658f039493fdcc"}]},{"name":"install.sh","path":"modules/circleci-helpers/install.sh","sha":"313288f93c55678a883f53106471a21f8ebbb2fa"}]},{"name":"docs-generator","children":[{"name":"Gopkg.lock","path":"modules/docs-generator/Gopkg.lock","sha":"ed9374f63ba7f58682ce32280d18f1eb8b2c1b64"},{"name":"Gopkg.toml","path":"modules/docs-generator/Gopkg.toml","sha":"4c60aa943b9c6e60b4b29de43dc50de703949053"},{"name":"README.md","path":"modules/docs-generator/README.md","sha":"2f6d3cccf601b029b37d1a1174afb8ef41006b84"},{"name":"cli.go","path":"modules/docs-generator/cli.go","sha":"9b21b3b996f6c9a664e537f62473ba67ac9522f7"},{"name":"cli_test.go","path":"modules/docs-generator/cli_test.go","sha":"5b2b8f8a0ac43aed3d7fe43a0eb4d9eb6e640f56"},{"name":"errors.go","path":"modules/docs-generator/errors.go","sha":"12e1b3be5167b2a5bf2c4ab9571784763c3b2139"},{"name":"file.go","path":"modules/docs-generator/file.go","sha":"739560fb3f7de0355130e5617c6a435bf34fa905"},{"name":"generator.go","path":"modules/docs-generator/generator.go","sha":"17c9aebb915efeb44dec7f7834ea9b963f59cbd9"},{"name":"generator_test.go","path":"modules/docs-generator/generator_test.go","sha":"f3785b83e6869696c0f3e9ebf91d4d1027209186"},{"name":"glob.go","path":"modules/docs-generator/glob.go","sha":"850d3fb4927b9d55a33edfb24691689080ae762c"},{"name":"glob_test.go","path":"modules/docs-generator/glob_test.go","sha":"f64539547ba90ff76bf6307c777b9093debbb4cc"},{"name":"logger.go","path":"modules/docs-generator/logger.go","sha":"512a924261dac04c1254507b31ef9c3a501857ed"},{"name":"main.go","path":"modules/docs-generator/main.go","sha":"9d71ef7296f8ed369d63696d3b67d3b659188adc"},{"name":"placeholder.go","path":"modules/docs-generator/placeholder.go","sha":"1f67dd342324270fc52afe95db3018cfdda00f99"},{"name":"placeholder_test.go","path":"modules/docs-generator/placeholder_test.go","sha":"0a37f79ed169b05af416005218fb761b04613e0e"},{"name":"test-fixtures","children":[{"name":"all-file-types-and-subfolders-copy-everything-output","children":[{"name":"another-subfolder","children":[{"name":"non-documentation-empty.css","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/another-subfolder/non-documentation-empty.css","sha":"b2f431e42186ead4b40e69c44bc32e6d635c8a9e"},{"name":"non-documentation.java","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/another-subfolder/non-documentation.java","sha":"7477f52ad80bd3ab173dbb90be14733ed7df9a0d"}]},{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/documentation.md","sha":"361dc342c8710689cabce350177f9a76c7c273ab"},{"name":"documentation.txt","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/documentation.txt","sha":"f2d086f4d9adc789457cb4e3cbb8900c98e38edb"},{"name":"logo.png","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/logo.png","sha":"4b4af5bb80a3b81f5b05aeb1fbf06febeb2006a5"},{"name":"non-documentation.yml","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/non-documentation.yml","sha":"854b47f81dec8dedf335fa2c4990296b8a1284c6"},{"name":"subfolder","children":[{"name":"another-subfolder","children":[{"name":"documentation-empty.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/subfolder/another-subfolder/documentation-empty.md","sha":"dd401f0d6a397258a63a406f3fc3e3c365e396d6"},{"name":"non-documentation.json","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/subfolder/another-subfolder/non-documentation.json","sha":"e2ce87d2be184a735ec4b82fb8c36d97dd6bbf6f"}]},{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/subfolder/documentation.md","sha":"1b978b8c7d0e1ca8c9a704f1e2b3a0dd10c26c14"},{"name":"non-documentation.tf","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/subfolder/non-documentation.tf","sha":"3c62b0cb12adb708af8b66fb44531f66b3133cf6"},{"name":"subfolder","children":[{"name":"non-documentation.sh","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-copy-everything-output/subfolder/subfolder/non-documentation.sh","sha":"18ce52b03559084b48242eb3bcac8095d5619e86"}]}]}]},{"name":"all-file-types-and-subfolders-docs-excluded-output","children":[{"name":"another-subfolder","children":[{"name":"non-documentation-empty.css","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-docs-excluded-output/another-subfolder/non-documentation-empty.css","sha":"b2f431e42186ead4b40e69c44bc32e6d635c8a9e"},{"name":"non-documentation.java","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-docs-excluded-output/another-subfolder/non-documentation.java","sha":"1a50193c47ab5146fb5558774da3da602cc32240"}]},{"name":"non-documentation.yml","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-docs-excluded-output/non-documentation.yml","sha":"179e4e4c6101d2a0856b0c5aba09359558d8dfc2"},{"name":"subfolder","children":[{"name":"another-subfolder","children":[{"name":"non-documentation.json","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-docs-excluded-output/subfolder/another-subfolder/non-documentation.json","sha":"d9c65fab379e06a5fda95ba163c90149cc6ccd90"}]},{"name":"non-documentation.tf","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-docs-excluded-output/subfolder/non-documentation.tf","sha":"a7573bb16167db1119d2976ff008d41755dd9784"},{"name":"subfolder","children":[{"name":"non-documentation.sh","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-docs-excluded-output/subfolder/subfolder/non-documentation.sh","sha":"b9e3ac3cb6328555d8bee673b171f06f777e0d69"}]}]}]},{"name":"all-file-types-and-subfolders-markdown-docs-only-output","children":[{"name":"another-subfolder","children":[{"name":"non-documentation-empty.css","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/another-subfolder/non-documentation-empty.css","sha":"b2f431e42186ead4b40e69c44bc32e6d635c8a9e"},{"name":"non-documentation.java","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/another-subfolder/non-documentation.java","sha":"1a50193c47ab5146fb5558774da3da602cc32240"}]},{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/documentation.md","sha":"361dc342c8710689cabce350177f9a76c7c273ab"},{"name":"documentation.txt","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/documentation.txt","sha":"04be4cc1e25385ba4a59ac13daac07488ba28cfc"},{"name":"logo.png","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/logo.png","sha":"02568aecb3b3c52059225968993cb2801f1f354f"},{"name":"non-documentation.yml","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/non-documentation.yml","sha":"179e4e4c6101d2a0856b0c5aba09359558d8dfc2"},{"name":"subfolder","children":[{"name":"another-subfolder","children":[{"name":"documentation-empty.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/subfolder/another-subfolder/documentation-empty.md","sha":"dd401f0d6a397258a63a406f3fc3e3c365e396d6"},{"name":"non-documentation.json","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/subfolder/another-subfolder/non-documentation.json","sha":"d9c65fab379e06a5fda95ba163c90149cc6ccd90"}]},{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/subfolder/documentation.md","sha":"1b978b8c7d0e1ca8c9a704f1e2b3a0dd10c26c14"},{"name":"non-documentation.tf","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/subfolder/non-documentation.tf","sha":"a7573bb16167db1119d2976ff008d41755dd9784"},{"name":"subfolder","children":[{"name":"non-documentation.sh","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-markdown-docs-only-output/subfolder/subfolder/non-documentation.sh","sha":"b9e3ac3cb6328555d8bee673b171f06f777e0d69"}]}]}]},{"name":"all-file-types-and-subfolders-no-matching-doc-patterns-output","children":[{"name":"another-subfolder","children":[{"name":"non-documentation-empty.css","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/another-subfolder/non-documentation-empty.css","sha":"b2f431e42186ead4b40e69c44bc32e6d635c8a9e"},{"name":"non-documentation.java","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/another-subfolder/non-documentation.java","sha":"1a50193c47ab5146fb5558774da3da602cc32240"}]},{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/documentation.md","sha":"34721f2be68a10bd006361d8f293068acff1317d"},{"name":"documentation.txt","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/documentation.txt","sha":"04be4cc1e25385ba4a59ac13daac07488ba28cfc"},{"name":"logo.png","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/logo.png","sha":"02568aecb3b3c52059225968993cb2801f1f354f"},{"name":"non-documentation.yml","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/non-documentation.yml","sha":"179e4e4c6101d2a0856b0c5aba09359558d8dfc2"},{"name":"subfolder","children":[{"name":"another-subfolder","children":[{"name":"documentation-empty.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/subfolder/another-subfolder/documentation-empty.md","sha":"dd401f0d6a397258a63a406f3fc3e3c365e396d6"},{"name":"non-documentation.json","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/subfolder/another-subfolder/non-documentation.json","sha":"d9c65fab379e06a5fda95ba163c90149cc6ccd90"}]},{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/subfolder/documentation.md","sha":"bb93770608db4b7d467ad86bdfcc07991ae7a02b"},{"name":"non-documentation.tf","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/subfolder/non-documentation.tf","sha":"a7573bb16167db1119d2976ff008d41755dd9784"},{"name":"subfolder","children":[{"name":"non-documentation.sh","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-no-matching-doc-patterns-output/subfolder/subfolder/non-documentation.sh","sha":"b9e3ac3cb6328555d8bee673b171f06f777e0d69"}]}]}]},{"name":"all-file-types-and-subfolders-output","children":[{"name":"another-subfolder","children":[{"name":"non-documentation-empty.css","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/another-subfolder/non-documentation-empty.css","sha":"b2f431e42186ead4b40e69c44bc32e6d635c8a9e"},{"name":"non-documentation.java","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/another-subfolder/non-documentation.java","sha":"1a50193c47ab5146fb5558774da3da602cc32240"}]},{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/documentation.md","sha":"361dc342c8710689cabce350177f9a76c7c273ab"},{"name":"documentation.txt","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/documentation.txt","sha":"f2d086f4d9adc789457cb4e3cbb8900c98e38edb"},{"name":"logo.png","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/logo.png","sha":"4b4af5bb80a3b81f5b05aeb1fbf06febeb2006a5"},{"name":"non-documentation.yml","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/non-documentation.yml","sha":"179e4e4c6101d2a0856b0c5aba09359558d8dfc2"},{"name":"subfolder","children":[{"name":"another-subfolder","children":[{"name":"documentation-empty.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/subfolder/another-subfolder/documentation-empty.md","sha":"dd401f0d6a397258a63a406f3fc3e3c365e396d6"},{"name":"non-documentation.json","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/subfolder/another-subfolder/non-documentation.json","sha":"d9c65fab379e06a5fda95ba163c90149cc6ccd90"}]},{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/subfolder/documentation.md","sha":"1b978b8c7d0e1ca8c9a704f1e2b3a0dd10c26c14"},{"name":"non-documentation.tf","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/subfolder/non-documentation.tf","sha":"a7573bb16167db1119d2976ff008d41755dd9784"},{"name":"subfolder","children":[{"name":"non-documentation.sh","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders-output/subfolder/subfolder/non-documentation.sh","sha":"b9e3ac3cb6328555d8bee673b171f06f777e0d69"}]}]}]},{"name":"all-file-types-and-subfolders","children":[{"name":"another-subfolder","children":[{"name":"non-documentation-empty.css","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/another-subfolder/non-documentation-empty.css","sha":"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"},{"name":"non-documentation.java","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/another-subfolder/non-documentation.java","sha":"8098f9f26ec5dd770382cc1b4c93a982ffd70c45"}]},{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/documentation.md","sha":"6e7f6a1b6b31c0091ab66d99df487068fc1783a9"},{"name":"documentation.txt","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/documentation.txt","sha":"60303204b8834945d26d9ae7b184b2c7c1f01899"},{"name":"logo.png","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/logo.png","sha":"4b4af5bb80a3b81f5b05aeb1fbf06febeb2006a5"},{"name":"non-documentation.yml","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/non-documentation.yml","sha":"048500db13abd24c1896cd48dd1a940b5d6c7487"},{"name":"subfolder","children":[{"name":"another-subfolder","children":[{"name":"documentation-empty.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/subfolder/another-subfolder/documentation-empty.md","sha":"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"},{"name":"non-documentation.json","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/subfolder/another-subfolder/non-documentation.json","sha":"07c70839ad3ef7ae3a4a9384a9c6a101a6aeff05"}]},{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/subfolder/documentation.md","sha":"6e7f6a1b6b31c0091ab66d99df487068fc1783a9"},{"name":"non-documentation.tf","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/subfolder/non-documentation.tf","sha":"ad0858eea6d1f4ff0fc2cf90403ab64ac4dbd3ce"},{"name":"subfolder","children":[{"name":"non-documentation.sh","path":"modules/docs-generator/test-fixtures/all-file-types-and-subfolders/subfolder/subfolder/non-documentation.sh","sha":"124fe8fc2df0c0886224c922c43d8d70cf5f2292"}]}]}]},{"name":"all-file-types-subfolders-excluded-output","children":[{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/all-file-types-subfolders-excluded-output/documentation.md","sha":"361dc342c8710689cabce350177f9a76c7c273ab"},{"name":"documentation.txt","path":"modules/docs-generator/test-fixtures/all-file-types-subfolders-excluded-output/documentation.txt","sha":"f2d086f4d9adc789457cb4e3cbb8900c98e38edb"},{"name":"logo.png","path":"modules/docs-generator/test-fixtures/all-file-types-subfolders-excluded-output/logo.png","sha":"4b4af5bb80a3b81f5b05aeb1fbf06febeb2006a5"},{"name":"non-documentation.yml","path":"modules/docs-generator/test-fixtures/all-file-types-subfolders-excluded-output/non-documentation.yml","sha":"179e4e4c6101d2a0856b0c5aba09359558d8dfc2"}]},{"name":"generator-tests","children":[{"name":"documentation-no-urls-output.md","path":"modules/docs-generator/test-fixtures/generator-tests/documentation-no-urls-output.md","sha":"3b95d4400f315380acc62f088a656595cc7ca0e9"},{"name":"documentation-no-urls.md","path":"modules/docs-generator/test-fixtures/generator-tests/documentation-no-urls.md","sha":"941274efbebd367c315fa58b279bb35b8c453cb4"},{"name":"documentation-output.txt","path":"modules/docs-generator/test-fixtures/generator-tests/documentation-output.txt","sha":"26fbbeb14a529bdb767fc606b443e59e51ed7105"},{"name":"documentation-with-urls-output.md","path":"modules/docs-generator/test-fixtures/generator-tests/documentation-with-urls-output.md","sha":"87243db4cbb83fd2257ef613567f3ad555ba4efa"},{"name":"documentation-with-urls.md","path":"modules/docs-generator/test-fixtures/generator-tests/documentation-with-urls.md","sha":"95c45e8915cb495e5ae6ffaea794b963ef219c47"},{"name":"documentation.txt","path":"modules/docs-generator/test-fixtures/generator-tests/documentation.txt","sha":"ea4b74ecb7fe418ce2689dcc603641b53fe055a0"},{"name":"logo-output.png","path":"modules/docs-generator/test-fixtures/generator-tests/logo-output.png","sha":"4b4af5bb80a3b81f5b05aeb1fbf06febeb2006a5"},{"name":"logo.png","path":"modules/docs-generator/test-fixtures/generator-tests/logo.png","sha":"4b4af5bb80a3b81f5b05aeb1fbf06febeb2006a5"},{"name":"non-documentation-output.java","path":"modules/docs-generator/test-fixtures/generator-tests/non-documentation-output.java","sha":"b8ee5f7495c8e14abcbac0ff4d275c332ea68992"},{"name":"non-documentation.java","path":"modules/docs-generator/test-fixtures/generator-tests/non-documentation.java","sha":"8098f9f26ec5dd770382cc1b4c93a982ffd70c45"}]},{"name":"no-documentation-output","children":[{"name":"non-documentation.java","path":"modules/docs-generator/test-fixtures/no-documentation-output/non-documentation.java","sha":"b8ee5f7495c8e14abcbac0ff4d275c332ea68992"},{"name":"non-documentation.tf","path":"modules/docs-generator/test-fixtures/no-documentation-output/non-documentation.tf","sha":"5bef10ee8ab662ad833740cd4c9ceb4409ba6039"}]},{"name":"no-documentation","children":[{"name":"non-documentation.java","path":"modules/docs-generator/test-fixtures/no-documentation/non-documentation.java","sha":"8098f9f26ec5dd770382cc1b4c93a982ffd70c45"},{"name":"non-documentation.tf","path":"modules/docs-generator/test-fixtures/no-documentation/non-documentation.tf","sha":"ad0858eea6d1f4ff0fc2cf90403ab64ac4dbd3ce"}]},{"name":"only-documentation-output","children":[{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/only-documentation-output/documentation.md","sha":"361dc342c8710689cabce350177f9a76c7c273ab"},{"name":"documentation.txt","path":"modules/docs-generator/test-fixtures/only-documentation-output/documentation.txt","sha":"f2d086f4d9adc789457cb4e3cbb8900c98e38edb"}]},{"name":"only-documentation","children":[{"name":"documentation.md","path":"modules/docs-generator/test-fixtures/only-documentation/documentation.md","sha":"6e7f6a1b6b31c0091ab66d99df487068fc1783a9"},{"name":"documentation.txt","path":"modules/docs-generator/test-fixtures/only-documentation/documentation.txt","sha":"60303204b8834945d26d9ae7b184b2c7c1f01899"}]}]},{"name":"urls.go","path":"modules/docs-generator/urls.go","sha":"b909b2a6fb1effa0b386d129444c9a5c049fce24"},{"name":"urls_test.go","path":"modules/docs-generator/urls_test.go","sha":"28f828efc795e6f754266b92234d06e1dc3601db"}]},{"name":"ec2-backup","children":[{"name":"README.md","path":"modules/ec2-backup/README.md","sha":"8123dab2b46b585e57e56b001ffd96ae80c525df"},{"name":"backup-lambda-function","children":[{"name":"ec2-snapper_linux_amd64-v0.5.2","path":"modules/ec2-backup/backup-lambda-function/ec2-snapper_linux_amd64-v0.5.2","sha":"11f872d3dde35b44c160eccf3f0adf49cc5bd72f"},{"name":"index.js","path":"modules/ec2-backup/backup-lambda-function/index.js","sha":"555ea9666346d7d57588452a5a9642ff73bcf25e"}]},{"name":"main.tf","path":"modules/ec2-backup/main.tf","sha":"7f9600fe86cc66496911e24a4c39d14e5dd92ddb"},{"name":"outputs.tf","path":"modules/ec2-backup/outputs.tf","sha":"770744637fcd7cafd98991397b26a82d01524192"},{"name":"vars.tf","path":"modules/ec2-backup/vars.tf","sha":"dd8d61875d9f68596d05bf677a51119750f512e8"}]},{"name":"ecs-deploy-runner-invoke-iam-policy","children":[{"name":"README.md","path":"modules/ecs-deploy-runner-invoke-iam-policy/README.md","sha":"66152227a29ea201358ced76a359bb5f2cfd7c9d"},{"name":"main.tf","path":"modules/ecs-deploy-runner-invoke-iam-policy/main.tf","sha":"4feb1fb6e2e4a1a526a83dd8d8981e3108abe781"},{"name":"outputs.tf","path":"modules/ecs-deploy-runner-invoke-iam-policy/outputs.tf","sha":"8703d962acdf4584375558aa59831c1c873fe606"},{"name":"variables.tf","path":"modules/ecs-deploy-runner-invoke-iam-policy/variables.tf","sha":"566d414f7ef8621e8c7613847d92b77c3e08cbb6"}]},{"name":"ecs-deploy-runner","children":[{"name":"README.adoc","path":"modules/ecs-deploy-runner/README.adoc","sha":"022f8c42447bb64214ecc80dd7bb41b455cb6850"},{"name":"_docs","children":[{"name":"images","children":[{"name":"sequence-diagram.png","path":"modules/ecs-deploy-runner/_docs/images/sequence-diagram.png","sha":"15c9ea45ff27d20fdc23cf918f8c9ba64c0601a3"}]}]},{"name":"core-concepts.md","path":"modules/ecs-deploy-runner/core-concepts.md","sha":"30940f80946ed959dbc974cc35c3b66034d6a64b"},{"name":"docker","children":[{"name":"Dockerfile","path":"modules/ecs-deploy-runner/docker/Dockerfile","sha":"fa5bbaccbfc7baa58f767e90d31f793123fcd04f"},{"name":"known_hosts","path":"modules/ecs-deploy-runner/docker/known_hosts","sha":"0dd0a16cd905887f363c0ba4effb5e88a8c4afac"}]},{"name":"invoker-lambda","children":[{"name":"dev_requirements.txt","path":"modules/ecs-deploy-runner/invoker-lambda/dev_requirements.txt","sha":"e5c3080c5b1785d0bcbb0a0c0751ae3adef55c54"},{"name":"invoker","children":[{"name":"__init__.py","path":"modules/ecs-deploy-runner/invoker-lambda/invoker/__init__.py","sha":"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"},{"name":"exceptions.py","path":"modules/ecs-deploy-runner/invoker-lambda/invoker/exceptions.py","sha":"e759a745617f2ad005dd4db38d48ff4b0a3d98c0"},{"name":"index.py","path":"modules/ecs-deploy-runner/invoker-lambda/invoker/index.py","sha":"eb2ce7bc016d6aea8558fb180cea550363ff483a"},{"name":"project_logging.py","path":"modules/ecs-deploy-runner/invoker-lambda/invoker/project_logging.py","sha":"7073c22d7c70ee8940a3ab194a2edc3aef554055"},{"name":"types.py","path":"modules/ecs-deploy-runner/invoker-lambda/invoker/types.py","sha":"00dc00b6092ef1c88c4934dee3ecc8fb6822a567"}]},{"name":"test","children":[{"name":"test_invoker.py","path":"modules/ecs-deploy-runner/invoker-lambda/test/test_invoker.py","sha":"a1c423a5254a9d7371620a2fbe50da471088243a"}]}]},{"name":"main.tf","path":"modules/ecs-deploy-runner/main.tf","sha":"a18611618f57805f6dd734b6c723d38e7305d43b"},{"name":"main_ecs.tf","path":"modules/ecs-deploy-runner/main_ecs.tf","sha":"84e8e9048df4aa49a6033378345558d274d91ab1"},{"name":"main_lambda.tf","path":"modules/ecs-deploy-runner/main_lambda.tf","sha":"86fe86022af21c05d3e135df04a555d57cd39529"},{"name":"outputs.tf","path":"modules/ecs-deploy-runner/outputs.tf","sha":"6d7e14e1e25ad2b6b850910f73febd9921291389"},{"name":"variables.tf","path":"modules/ecs-deploy-runner/variables.tf","sha":"5b152e5f298ab65161ecaf53214bf6d5b82c9c2b"}]},{"name":"git-helpers","children":[{"name":"README.md","path":"modules/git-helpers/README.md","sha":"86803f51a9bdcca05dfd13756fe16088a6363ff4","toggled":true},{"name":"bin","children":[{"name":"git-add-commit-push","path":"modules/git-helpers/bin/git-add-commit-push","sha":"e6e1d1714bec031d434ff158a99891fb6f9dc8d9"},{"name":"git-rebase","path":"modules/git-helpers/bin/git-rebase","sha":"887dd90ba36adc5c0362cbadca79707756535b24"}]},{"name":"install.sh","path":"modules/git-helpers/install.sh","sha":"f22ede2f2f085af0a065dd43ed1279c69dd5a00b"}],"toggled":true},{"name":"gruntwork-module-circleci-helpers","children":[{"name":"README.md","path":"modules/gruntwork-module-circleci-helpers/README.md","sha":"074bc610447d27206bc50ba1a7b06fc95226d369"},{"name":"bin","children":[{"name":"build-go-binaries","path":"modules/gruntwork-module-circleci-helpers/bin/build-go-binaries","sha":"8aca966ed857b2d6d50a7c72c09e9181ae125e3c"},{"name":"configure-environment-for-gruntwork-module","path":"modules/gruntwork-module-circleci-helpers/bin/configure-environment-for-gruntwork-module","sha":"a7f380698b134afecd89d3c3187c021fb2ae170d"},{"name":"run-go-tests","path":"modules/gruntwork-module-circleci-helpers/bin/run-go-tests","sha":"d5406bdd61dae657ded161cf6f2ca66b17cd5b81"},{"name":"upload-github-release-assets","path":"modules/gruntwork-module-circleci-helpers/bin/upload-github-release-assets","sha":"b86a2f1049b1be58179569ea7fed641d960d1f05"}]},{"name":"install.sh","path":"modules/gruntwork-module-circleci-helpers/install.sh","sha":"a9cc16c05a73cf6c40097608838758a8de64daab"}]},{"name":"iam-policies","children":[{"name":"README.md","path":"modules/iam-policies/README.md","sha":"da28056c8749bc2c46dc99ed16286e14b7c55511"},{"name":"ecr-docker-push","children":[{"name":"README.md","path":"modules/iam-policies/ecr-docker-push/README.md","sha":"6a0a84157fe573f2c7ac1e0bd6e2169b2814f1c0"},{"name":"main.tf","path":"modules/iam-policies/ecr-docker-push/main.tf","sha":"1339a8f20e8b96343790f3861a5f0bc85125f4d7"},{"name":"outputs.tf","path":"modules/iam-policies/ecr-docker-push/outputs.tf","sha":"91c35371bd190c90b7e48a23273923f3205447a2"},{"name":"vars.tf","path":"modules/iam-policies/ecr-docker-push/vars.tf","sha":"d8aaeae6205750961e3deaba741ee68180a32ca7"}]},{"name":"ecs-service-deployment","children":[{"name":"README.md","path":"modules/iam-policies/ecs-service-deployment/README.md","sha":"77bb1df6db0d7cd886ee665f1d6566944521b00c"},{"name":"main.tf","path":"modules/iam-policies/ecs-service-deployment/main.tf","sha":"73dd267d5e16b853b6c233f962df8ec8ac50303f"},{"name":"outputs.tf","path":"modules/iam-policies/ecs-service-deployment/outputs.tf","sha":"456e432ea1ac303f0e3f6d72e5a38ef0c4fdd126"},{"name":"vars.tf","path":"modules/iam-policies/ecs-service-deployment/vars.tf","sha":"78c2705c906b853f0e4b18b6c8f2c05e164109bf"}]},{"name":"terraform-remote-state-s3","children":[{"name":"README.md","path":"modules/iam-policies/terraform-remote-state-s3/README.md","sha":"b7892fd6dabecb66909706dbb8941e63e2c56954"},{"name":"main.tf","path":"modules/iam-policies/terraform-remote-state-s3/main.tf","sha":"36b7ceb572efcf59c447f1a8ae34279cb6d8bd3b"},{"name":"outputs.tf","path":"modules/iam-policies/terraform-remote-state-s3/outputs.tf","sha":"19c52170f58f07dced95687dab8b6e6f134d225c"},{"name":"vars.tf","path":"modules/iam-policies/terraform-remote-state-s3/vars.tf","sha":"720084fa0f9cf944b19ba30f59e78efc2e7b96b9"}]},{"name":"terragrunt","children":[{"name":"README.md","path":"modules/iam-policies/terragrunt/README.md","sha":"eccacc553810fa838b23d24718ffb8f70a9a39e5"},{"name":"main.tf","path":"modules/iam-policies/terragrunt/main.tf","sha":"efbcfe3f7ce1e4001588ef1b14625b8c2273d7d8"},{"name":"outputs.tf","path":"modules/iam-policies/terragrunt/outputs.tf","sha":"fbfd6010c9f952f65248fc42897d976a2e26b4e8"},{"name":"vars.tf","path":"modules/iam-policies/terragrunt/vars.tf","sha":"52f0480b69a57d0ff43e76ae26cb17d77dab5069"}]}]},{"name":"infrastructure-deploy-script","children":[{"name":"README.adoc","path":"modules/infrastructure-deploy-script/README.adoc","sha":"bdc742de962f03859b43866ea46e4383ad32f10f"},{"name":"core-concepts.md","path":"modules/infrastructure-deploy-script/core-concepts.md","sha":"e617d3dd528507993c8162811cb6de16328e9ed3"},{"name":"dev_requirements.txt","path":"modules/infrastructure-deploy-script/dev_requirements.txt","sha":"6059bddb829b89421c7e1fba8a6e330de33e1a75"},{"name":"infrastructure_deploy_script","children":[{"name":"__init__.py","path":"modules/infrastructure-deploy-script/infrastructure_deploy_script/__init__.py","sha":"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"},{"name":"deploy.py","path":"modules/infrastructure-deploy-script/infrastructure_deploy_script/deploy.py","sha":"4b3f4f05f6a4d2e293aa3cbade139d0aee2100da"},{"name":"exceptions.py","path":"modules/infrastructure-deploy-script/infrastructure_deploy_script/exceptions.py","sha":"087c7ad70e8077121d24d775af578aa238995dca"},{"name":"git.py","path":"modules/infrastructure-deploy-script/infrastructure_deploy_script/git.py","sha":"749ace8d9812e8a906eba2d14b6eef4f90c97e02"},{"name":"project_logging.py","path":"modules/infrastructure-deploy-script/infrastructure_deploy_script/project_logging.py","sha":"a72c2a19962838f3375390380dcf444b73e1fcef"},{"name":"py.typed","path":"modules/infrastructure-deploy-script/infrastructure_deploy_script/py.typed","sha":"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"},{"name":"shell.py","path":"modules/infrastructure-deploy-script/infrastructure_deploy_script/shell.py","sha":"f9b98a99686b214a68c8c99d23fd8019a9f68213"},{"name":"ssh.py","path":"modules/infrastructure-deploy-script/infrastructure_deploy_script/ssh.py","sha":"3db8994be058bfa590bbbbdd0476128c44ad5979"},{"name":"terra.py","path":"modules/infrastructure-deploy-script/infrastructure_deploy_script/terra.py","sha":"38a5b01a023142bd0af2064a13ccb7168045434c"}]},{"name":"install.sh","path":"modules/infrastructure-deploy-script/install.sh","sha":"c958f1065315b16e9f0474ee39728a4556c18247"},{"name":"requirements.txt","path":"modules/infrastructure-deploy-script/requirements.txt","sha":"ebe0f49e006828d7147c8ee540a278142e44e618"},{"name":"scripts","children":[{"name":"infrastructure-deploy-script","path":"modules/infrastructure-deploy-script/scripts/infrastructure-deploy-script","sha":"705e86f5f4b439ec6e3f1023a1c21652f3fbb57a"}]},{"name":"setup.py","path":"modules/infrastructure-deploy-script/setup.py","sha":"0885421ba85af260d5e2d97ebc75e26c76fb25da"},{"name":"test","children":[{"name":"conftest.py","path":"modules/infrastructure-deploy-script/test/conftest.py","sha":"ebae81d85a6ce4997c9d6f4a3d833c617822a0a0"},{"name":"fixtures","children":[{"name":"terraform","children":[{"name":"main.tf","path":"modules/infrastructure-deploy-script/test/fixtures/terraform/main.tf","sha":"362851fda16747e2a39abba071646933e51fbbdf"}]},{"name":"terragrunt","children":[{"name":"terragrunt.hcl","path":"modules/infrastructure-deploy-script/test/fixtures/terragrunt/terragrunt.hcl","sha":"2359b15bc6a698e481a8e99fdb352e174203b925"}]}]},{"name":"test_deploy.py","path":"modules/infrastructure-deploy-script/test/test_deploy.py","sha":"22ba45b6e4d956ea7f0ace58b617ca52b23b0c04"},{"name":"test_git.py","path":"modules/infrastructure-deploy-script/test/test_git.py","sha":"862852a92b7a7edb7276cdd3cf212e500ca3c8d9"},{"name":"test_shell.py","path":"modules/infrastructure-deploy-script/test/test_shell.py","sha":"fa0f984c4ce6218303d7f9c38c4c20d018411318"}]}]},{"name":"infrastructure-deployer","children":[{"name":"README.adoc","path":"modules/infrastructure-deployer/README.adoc","sha":"9dd9e61cf8a5bc6a7e53af9d72e823ac1f9324b2"},{"name":"core-concepts.md","path":"modules/infrastructure-deployer/core-concepts.md","sha":"6d5dffe58cee8ec78c9fcb6ee4783d3127ebd10f"},{"name":"deploy","children":[{"name":"aws.go","path":"modules/infrastructure-deployer/deploy/aws.go","sha":"919b0bf9f92f93075c443d00465642ca62dd81c3"},{"name":"aws_ecs.go","path":"modules/infrastructure-deployer/deploy/aws_ecs.go","sha":"302bb0dfd75838a847b47dc71c290a48ac6e3c5f"},{"name":"deploy.go","path":"modules/infrastructure-deployer/deploy/deploy.go","sha":"602385fa274d49d9f9041c07444e430120b94958"},{"name":"errors.go","path":"modules/infrastructure-deployer/deploy/errors.go","sha":"74d73d20144cbbac68ebe4a7c50a53b204151fb4"}]},{"name":"go.mod","path":"modules/infrastructure-deployer/go.mod","sha":"3ff9d1d2acc87e9dfb6a2ca319307d7c17ccdb14"},{"name":"go.sum","path":"modules/infrastructure-deployer/go.sum","sha":"3ac57b5b909b4991198c08a0c29f9acde9812151"},{"name":"logging","children":[{"name":"logging.go","path":"modules/infrastructure-deployer/logging/logging.go","sha":"a381e79c9e66c762322d49d2a3726a8c66c7ef65"}]},{"name":"main.go","path":"modules/infrastructure-deployer/main.go","sha":"ee1bed811e2313a4d850a9a03adc92899264cbec"}]},{"name":"install-jenkins","children":[{"name":"README.md","path":"modules/install-jenkins/README.md","sha":"f3c33b9c09257522281a7be9687a53b343bc1fd8"},{"name":"install.sh","path":"modules/install-jenkins/install.sh","sha":"aef9cc20d4000394e02c4a61148345b3fe08b197"},{"name":"run-jenkins","path":"modules/install-jenkins/run-jenkins","sha":"4f66dcc9b68b4623231de09d87c76cce40fc914e"}]},{"name":"jenkins-server","children":[{"name":"README.md","path":"modules/jenkins-server/README.md","sha":"49ecb595ff9883d9a77ddfebe1369e25f1692890"},{"name":"main.tf","path":"modules/jenkins-server/main.tf","sha":"f9289f635ea28f6e4db7dedf0348320bedaeb0c1"},{"name":"outputs.tf","path":"modules/jenkins-server/outputs.tf","sha":"5670bd47368b97e5eeedcca805a28a337230e9e2"},{"name":"vars.tf","path":"modules/jenkins-server/vars.tf","sha":"11da195d239b8977be2a4a21418a72618fb6ee42"}]},{"name":"kubernetes-circleci-helpers","children":[{"name":"README.md","path":"modules/kubernetes-circleci-helpers/README.md","sha":"833fef8b04c17c43b10c680fad7db3aa7da2e8ad"},{"name":"bin","children":[{"name":"setup-minikube","path":"modules/kubernetes-circleci-helpers/bin/setup-minikube","sha":"142ca1af8c9fbb954d3640f3186a410c3331985d"}]},{"name":"install.sh","path":"modules/kubernetes-circleci-helpers/install.sh","sha":"2ae8670872407ceb2c434dc5b117ae14073af9a2"}]},{"name":"terraform-helpers","children":[{"name":"README.md","path":"modules/terraform-helpers/README.md","sha":"d6004df66f3b9684ea901f0d41592fca2aceb874"},{"name":"bin","children":[{"name":"git-updated-folders","path":"modules/terraform-helpers/bin/git-updated-folders","sha":"d1325e85a5922d482dc8a4474fe8ef547bf51589"},{"name":"terraform-update-variable","path":"modules/terraform-helpers/bin/terraform-update-variable","sha":"83f5226671e407090447c886b64e95d58c5c47b4"}]},{"name":"install.sh","path":"modules/terraform-helpers/install.sh","sha":"6b7e40c382ec391f64e54efab3367d202b123883"}]}],"toggled":true},{"name":"setup.cfg","path":"setup.cfg","sha":"dbcd773df9356e74782ad58e0a2255ffa188df49"},{"name":"test","children":[{"name":"README.md","path":"test/README.md","sha":"6e1ceee7e9a037225f0674121b4fada50d2f8d67"},{"name":"build_docker_image_test.go","path":"test/build_docker_image_test.go","sha":"1c3c70c8e7ae97c05acb50fdfda9c14a2762392e"},{"name":"build_helpers.go","path":"test/build_helpers.go","sha":"0e77ed869d6406431209fdbf405745dce7a7cc26"},{"name":"build_packer_artifact_test.go","path":"test/build_packer_artifact_test.go","sha":"af61580b8e080444fcb2c8b9fd6b4029bb6a226a"},{"name":"check_url_test.go","path":"test/check_url_test.go","sha":"6e099e94ab237cc9f140fa3aba9f6b8e253e624d"},{"name":"ecs_deploy_runner_docker_test.go","path":"test/ecs_deploy_runner_docker_test.go","sha":"d836f40bb12cdfa4f00e9d79a63b28dd558ae0fa"},{"name":"ecs_deploy_runner_test.go","path":"test/ecs_deploy_runner_test.go","sha":"f475ddf9d3c81fb9996ad00544185d86e361ef0c"},{"name":"ecs_deploy_runner_test_helpers.go","path":"test/ecs_deploy_runner_test_helpers.go","sha":"f73377cb8a61924bbb3227ef1da49f77b38cab73"},{"name":"fixtures","children":[{"name":"git-add-commit-push","children":[{"name":"auto-committed.txt","path":"test/fixtures/git-add-commit-push/auto-committed.txt","sha":"41751fe1433120fae3e9a74e3056c41c6957e6d4"}]},{"name":"hello-world-go-app","children":[{"name":"main.go","path":"test/fixtures/hello-world-go-app/main.go","sha":"3e0c7643f51386747f1b85656a0c797f282aed04"}]},{"name":"test-docker-image","children":[{"name":"Dockerfile","path":"test/fixtures/test-docker-image/Dockerfile","sha":"5de35bbecce145045ae22fbc5fb97c133568a1ff"},{"name":"test.sh","path":"test/fixtures/test-docker-image/test.sh","sha":"ef3083cf7f3436ac7d01acfa33e4dab143fbcafd"}]},{"name":"test-go-test-files","children":[{"name":"simple_test.go","path":"test/fixtures/test-go-test-files/simple_test.go","sha":"53007ca88996e540ddfc503ce42982bdd5e785d2"},{"name":"test.sh","path":"test/fixtures/test-go-test-files/test.sh","sha":"25b8ef156d589c8d088d026b422e3b9c751c4b53"}]},{"name":"test-packer-image","children":[{"name":"hello-world-multiple-builders.json","path":"test/fixtures/test-packer-image/hello-world-multiple-builders.json","sha":"1c3e101f8965041b7aef0f5c4cddb14e1011d520"},{"name":"hello-world-one-builder.json","path":"test/fixtures/test-packer-image/hello-world-one-builder.json","sha":"8080322510a98f051ab33fd639d9877663e6ffda"}]},{"name":"test-tfvars-files","children":[{"name":"multiple-similar-variables.tfvars","path":"test/fixtures/test-tfvars-files/multiple-similar-variables.tfvars","sha":"8147977dee3d9a196177c575cd664354c601e68f"},{"name":"multiple-variables-and-comments.tfvars","path":"test/fixtures/test-tfvars-files/multiple-variables-and-comments.tfvars","sha":"8b757cfa5ed1d5049c478ed9180b9e9a5743335e"},{"name":"one-variable-extra-whitespace.tfvars","path":"test/fixtures/test-tfvars-files/one-variable-extra-whitespace.tfvars","sha":"743b02f7015bd51232f9c40564c654f424cbb523"},{"name":"one-variable-no-whitespace.tfvars","path":"test/fixtures/test-tfvars-files/one-variable-no-whitespace.tfvars","sha":"39ddb49aa78f683e3e45384d2440a904d0ad7ec9"},{"name":"one-variable.tfvars","path":"test/fixtures/test-tfvars-files/one-variable.tfvars","sha":"82a0cea8ac06d9534dd2549c73ae70afd47336bb"}]},{"name":"test-tghcl-files","children":[{"name":"multiple-similar-variables.hcl","path":"test/fixtures/test-tghcl-files/multiple-similar-variables.hcl","sha":"8224297de9667b6887136c897b473977f7013fc0"},{"name":"multiple-variables-and-comments.hcl","path":"test/fixtures/test-tghcl-files/multiple-variables-and-comments.hcl","sha":"1905719b9208e53d78a9bced9792194f6955f928"},{"name":"one-variable-extra-whitespace.hcl","path":"test/fixtures/test-tghcl-files/one-variable-extra-whitespace.hcl","sha":"aa09bc5beacd10b66660e71173d16f3b093e9415"},{"name":"one-variable-no-whitespace.hcl","path":"test/fixtures/test-tghcl-files/one-variable-no-whitespace.hcl","sha":"8e77e4baf099fdb7f1e1d1571725c835ac92093a"},{"name":"one-variable.hcl","path":"test/fixtures/test-tghcl-files/one-variable.hcl","sha":"0afe11b72b3635feb75d71d7aff4cc28806a7f67"}]},{"name":"tfpipeline","children":[{"name":"failure","children":[{"name":"terraform","children":[{"name":"main.tf","path":"test/fixtures/tfpipeline/failure/terraform/main.tf","sha":"5488bde3fbd03a58398aeeb904cfef74d7200aae"}]},{"name":"terragrunt","children":[{"name":"terragrunt.hcl","path":"test/fixtures/tfpipeline/failure/terragrunt/terragrunt.hcl","sha":"2359b15bc6a698e481a8e99fdb352e174203b925"}]}]},{"name":"nested","children":[{"name":"terraform","children":[{"name":"main.tf","path":"test/fixtures/tfpipeline/nested/terraform/main.tf","sha":"19538a8d8cb3820ffc99138ecf3b19004e7afa8f"}]},{"name":"terragrunt","children":[{"name":"terragrunt.hcl","path":"test/fixtures/tfpipeline/nested/terragrunt/terragrunt.hcl","sha":"2359b15bc6a698e481a8e99fdb352e174203b925"}]}]},{"name":"root","children":[{"name":"terraform","children":[{"name":"main.tf","path":"test/fixtures/tfpipeline/root/terraform/main.tf","sha":"4c38ad94d4d10a46cb1acd012f9b3e5513757ac2"}]},{"name":"terragrunt","children":[{"name":"terragrunt.hcl","path":"test/fixtures/tfpipeline/root/terragrunt/terragrunt.hcl","sha":"2359b15bc6a698e481a8e99fdb352e174203b925"}]}]}]}]},{"name":"git_updated_folders_test.go","path":"test/git_updated_folders_test.go","sha":"f8429b385809cfe3beb234a5fd24de1fef05d29c"},{"name":"go.mod","path":"test/go.mod","sha":"586b7e724f8a105835264284eebab7402768348a"},{"name":"go.sum","path":"test/go.sum","sha":"49a7227c3c150e1ca9ba569be128ce8faa4cec8a"},{"name":"gruntwork_module_circleci_helpers_integration_test.go","path":"test/gruntwork_module_circleci_helpers_integration_test.go","sha":"6b53cc8985ecf2b8d831a9fb8b6a47c91e6065a9"},{"name":"iam_policies_test.go","path":"test/iam_policies_test.go","sha":"75daff44988b41977dcfd064c868f038f77ffbb0"},{"name":"infrastructure_deploy_script_test.go","path":"test/infrastructure_deploy_script_test.go","sha":"b22f63ba905480fc3c4a54eb5d523e40f8610c6a"},{"name":"jenkins_test.go","path":"test/jenkins_test.go","sha":"332ecada75ffc721ddb00b47aefc3d4ca3e3939c"},{"name":"kubernetes_circleci_helpers_test.go","path":"test/kubernetes_circleci_helpers_test.go","sha":"76a87d2854c2c7cf0a57c56582796b9cdb533c1b"},{"name":"publish_ami_test.go","path":"test/publish_ami_test.go","sha":"04f7667c39445fe5d6a336641c110e2c6c1744a3"},{"name":"terraform_update_variable_unit_test.go","path":"test/terraform_update_variable_unit_test.go","sha":"e1469d18b1a1dbdf6c193589549bcac662c61e1e"},{"name":"terragrunt_update_variable_unit_test.go","path":"test/terragrunt_update_variable_unit_test.go","sha":"4adb82100c62f799380dea99f76f22be7f5ebbb2"},{"name":"test-git-add-commit-push.sh","path":"test/test-git-add-commit-push.sh","sha":"95fd142ed3d26e85c2873ee55c0e2718f0927ffd"}]},{"name":"testdep","children":[{"name":"Gopkg.lock","path":"testdep/Gopkg.lock","sha":"f12dfa4652085a0043d69d1b3bff7cc16b64551f"},{"name":"Gopkg.toml","path":"testdep/Gopkg.toml","sha":"092de38583d1bb2aff2b194753b7cc18aecddd87"},{"name":"dep_test.go","path":"testdep/dep_test.go","sha":"b87facc135093c5258a5f2da43e5f9177bc008b7"},{"name":"fixtures","children":[{"name":"hello-world-godep-app","children":[{"name":"Gopkg.lock","path":"testdep/fixtures/hello-world-godep-app/Gopkg.lock","sha":"623c785ee006b1ff3c524d18935ebdeb45395d55"},{"name":"Gopkg.toml","path":"testdep/fixtures/hello-world-godep-app/Gopkg.toml","sha":"26f5a8f783bb942cf6fba93c10b6a09017329526"},{"name":"main.go","path":"testdep/fixtures/hello-world-godep-app/main.go","sha":"0a09ad54ada955edd8e8ae731e0c113cc708766c"}]}]}]}]},"detailsContent":"<h1 class=\"preview__body--title\" id=\"git-helpers\">Git Helpers</h1><div class=\"preview__body--border\"></div><p>This module contains helper scripts that automate common git tasks:</p>\n<ul>\n<li><code>git-rebase</code>: This script can be used to merge git branch A into branch B using git rebase.</li>\n<li><code>git-add-commit-push</code>: This script is meant to be run in a CI job to add, commit, and push a given set of files to\nGit, handling common tasks like configuring Git in a CI job, checking for common error cases, and ensuring the commit\ndoesn't trigger another CI job.</li>\n</ul>\n<h2 class=\"preview__body--subtitle\" id=\"installing-the-helpers\">Installing the helpers</h2>\n<p>You can install the helpers using the <a href=\"/repos/gruntwork-installer\" class=\"preview__body--description--blue\">Gruntwork Installer</a>\n(make sure to replace <code><VERSION></code> below with the latest version from the <a href=\"#open_modal\" class=\"preview__body--description--blue\">releases\npage</a>):</p>\n<pre><span class=\"hljs-string\">gruntwork-install </span><span class=\"hljs-built_in\">--module-name</span> <span class=\"hljs-string\">\"git-helpers\"</span> <span class=\"hljs-built_in\">--repo</span> <span class=\"hljs-string\">\"https://github.com/gruntwork-io/module-ci\"</span> <span class=\"hljs-built_in\">--tag</span> <span class=\"hljs-string\">\"<VERSION>\"</span>\n</pre>\n<p>We recommend running this command in the <code>dependencies</code> section of <code>circle.yml</code>:</p>\n<pre>dependencies:\n override:\n <span class=\"hljs-comment\"># Install the Gruntwork Installer</span>\n - curl -Ls https://raw.githubusercontent.com/gruntwork-io/gruntwork-installer/master/bootstrap-gruntwork-installer.sh | bash /dev/stdin --version <span class=\"hljs-number\">0.0</span>.<span class=\"hljs-number\">9</span>\n\n <span class=\"hljs-comment\"># Use the Gruntwork Installer to install the gruntwork-module-circleci-helpers module</span>\n - gruntwork-install --<span class=\"hljs-keyword\">module</span>-name <span class=\"hljs-string\">\"git-helpers\"</span> --repo <span class=\"hljs-string\">\"https://github.com/gruntwork-io/module-ci\"</span> --tag <span class=\"hljs-string\">\"0.0.5\"</span>\n</pre>\n<h2 class=\"preview__body--subtitle\" id=\"using-the-git-add-commit-push-helper\">Using the git-add-commit-push helper</h2>\n<p>The most common use-case for this script is to automatically commit generated files (e.g. generated code, auto-filled\nversion number, aut-generated docs) to Git at the end of a CI job. Here is an example <code>circle.yml</code> file that shows the\nusage:</p>\n<pre>deployment:\n release:\n tag: /v.*/\n commands:\n <span class=\"hljs-comment\"># Generate a new file</span>\n - auto-generate-some-code --<span class=\"hljs-keyword\">output</span> generated-file.txt\n <span class=\"hljs-comment\"># Commit the file to Git</span>\n - git-add-commit-push --path generated-file.txt --message <span class=\"hljs-string\">\"Automatically regenerate generated-file.txt\"</span>\n</pre>\n<p>The main options to pass to <code>git-add-commit-push</code> are:</p>\n<ul>\n<li><code>--path</code>: The path to add, commit, and push to Git. Required. May be specified more than once.</li>\n<li><code>--message</code>: The commit message. Required.</li>\n</ul>\n","repoName":"module-ci","repoRef":"v0.20.1","serviceDescriptor":{"serviceName":"EC2 backup","serviceRepoName":"module-ci","serviceRepoOrg":"gruntwork-io","serviceMainReadmePath":"/modules/ec2-backup","cloudProviders":["aws"],"description":"Snapshot your EC2 instances on a scheduled basis.","imageUrl":"grunt.png","licenseType":"subscriber","technologies":["Terraform","JavaScript","Lambda"],"compliance":[],"tags":[""]},"serviceCategoryName":"Backup & recovery","fileName":"README.md","filePath":"/modules/git-helpers","title":"Repo Browser: EC2 backup","description":"Browse the repos in the Gruntwork Infrastructure as Code Library."}