diff --git a/.github/templates/README.tpl b/.github/templates/README.tpl index 6057a70..3e062ee 100644 --- a/.github/templates/README.tpl +++ b/.github/templates/README.tpl @@ -6,7 +6,7 @@ ## Version {{ $version }} -Using [terraform-docs](https://github.com/segmentio/terraform-docs) v0.8.2, which is supported and tested on terraform version 0.11+ & 0.12+ but may work for others. +Using [terraform-docs](https://github.com/terraform-docs/terraform-docs) `v0.8.2`, which is supported and tested on terraform version 0.11+ & 0.12+ but may work for others. {{ if eq $version "master" }} | WARNING: You should not rely on master being stable or to have accurate documentation. Please use a git tagged semver or major version tag like `v1`. | @@ -28,7 +28,7 @@ jobs: ref: {{"${{"}} github.event.pull_request.head.ref {{"}}"}} - name: Render terraform docs inside the USAGE.md and push changes back to PR branch - uses: Dirrk/terraform-docs@{{ $version }} + uses: terraform-docs/gh-actions@{{ $version }} with: tf_docs_working_dir: . tf_docs_output_file: USAGE.md @@ -61,7 +61,7 @@ jobs: # Important Notes -In addition to the below notes, further documentation on terraform-docs can be found [here](https://github.com/segmentio/terraform-docs) +In addition to the below notes, further documentation on terraform-docs can be found [here](https://github.com/terraform-docs/terraform-docs). ## Output Method (tf\_docs\_output\_method) @@ -118,7 +118,7 @@ jobs: ## Simple / Single folder ``` - name: Generate TF Docs - uses: Dirrk/terraform-docs@{{ $version }} + uses: terraform-docs/gh-actions@{{ $version }} with: tf_docs_working_dir: . tf_docs_output_file: README.md @@ -127,7 +127,7 @@ jobs: ## Multi folder ``` - name: Generate TF Docs - uses: Dirrk/terraform-docs@{{ $version }} + uses: terraform-docs/gh-actions@{{ $version }} with: tf_docs_working_dir: .,example1,example3/modules/test tf_docs_output_file: README.md @@ -136,7 +136,7 @@ jobs: ## Use atlantis.yaml v3 to find all dirs ``` - name: Generate TF docs - uses: Dirrk/terraform-docs@{{ $version }} + uses: terraform-docs/gh-actions@{{ $version }} with: tf_docs_atlantis_file: atlantis.yaml ``` @@ -144,9 +144,9 @@ jobs: ## Find all .tf file folders under a given directory ```yaml - name: Generate TF docs - uses: Dirrk/terraform-docs@{{ $version }} + uses: terraform-docs/gh-actions@{{ $version }} with: tf_docs_find_dir: examples/ ``` -Complete examples can be found [here](https://github.com/Dirrk/terraform-docs/tree/{{ $version }}/examples) +Complete examples can be found [here](https://github.com/terraform-docs/gh-actions/tree/{{ $version }}/examples) diff --git a/Dockerfile b/Dockerfile index 40e2e07..23a9db7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,18 @@ -FROM derekrada/terraform-docs:v1.0.8 +FROM quay.io/terraform-docs/terraform-docs:0.10.1 + +# this can be removed when base image +# was upgraded to alpine:3.13 which has +# 'yq' in its repository out of the box. +RUN echo "http://dl-4.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories + +RUN set -x \ + && apk add --no-cache \ + bash \ + git \ + jq \ + sed \ + yq + COPY ./src/common.sh /common.sh COPY ./src/docker-entrypoint.sh /docker-entrypoint.sh diff --git a/README.md b/README.md index 0e82285..6352ec5 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,23 @@ # terraform-docs -A Github action for generating terraform module documentation using terraform-docs and gomplate. In addition to statically defined directory modules, this module can search specific sub folders or parse atlantis.yaml for module identification and doc generation. This action has the ability to auto commit docs to an open PR or after a push to a specific branch. + +A Github action for generating Terraform module documentation using terraform-docs +and gomplate. In addition to statically defined directory modules, this module can +search specific sub folders or parse `atlantis.yaml` for module identification and +doc generation. This action has the ability to auto commit docs to an open PR or +after a push to a specific branch. + ## Version -v1.0.8 -Using [terraform-docs](https://github.com/segmentio/terraform-docs) v0.9.1, which is supported and tested on terraform version 0.11+ & 0.12+ but may work for others. +`v0.1.0` + +Using [terraform-docs](https://github.com/terraform-docs/terraform-docs) v0.9.1, which +is supported and tested on terraform version 0.11+ & 0.12+ but may work for others. +## Usage +To use terraform-docs github action, configure a YAML workflow file, e.g. +`.github/workflows/documentation.yml`, with the following: -# Usage -To use terraform-docs github action, configure a YAML workflow file, e.g. `.github/workflows/documentation.yml`, with the following: ```yaml name: Generate terraform docs on: @@ -22,64 +31,77 @@ jobs: ref: ${{ github.event.pull_request.head.ref }} - name: Render terraform docs inside the USAGE.md and push changes back to PR branch - uses: Dirrk/terraform-docs@v1.0.8 + uses: terraform-docs/gh-actions@v0.1.0 with: tf_docs_working_dir: . tf_docs_output_file: USAGE.md tf_docs_output_method: inject tf_docs_git_push: 'true' ``` + | WARNING: If USAGE.md already exists it will need to be updated, with the block delimeters `` and ``, where the generated markdown will be injected. | | --- | ### Renders + ![Example](examples/example.png?raw=true "Example Output") -# Configuration +## Configuration -## Inputs +### Inputs | Name | Description | Default | Required | |------|-------------|---------|----------| -| tf\_docs\_args | Additional args to pass to the command see https://github.com/segmentio/terraform-docs/tree/master/docs | | false | -| tf\_docs\_atlantis\_file | Generate directories by parsing an atlantis formatted yaml to enable provide the file name to parse (eg atlantis.yaml) | disabled | false | -| tf\_docs\_content\_type | Generate document or table | table | false | -| tf\_docs\_find\_dir | Generate directories by running find ./tf\_docs\_find\_dir -name \*.tf | disabled | false | -| tf\_docs\_git\_commit\_message | Commit message | terraform-docs: automated action | false | -| tf\_docs\_git\_push | If true it will commit and push the changes | false | false | -| tf\_docs\_indention | Indention level of Markdown sections [1, 2, 3, 4, 5] | 2 | false | -| tf\_docs\_output\_file | File in module directory where the docs should be placed | USAGE.md | false | -| tf\_docs\_output\_method | Method should be one of (replace/inject/print) where replace will replace the tf\_docs\_output\_file, inject will inject the content between start and close delims and print will just print the output | inject | false | -| tf\_docs\_template | When provided will be used as the template if/when the OUTPUT\_FILE does not exist | # Usage


| false | -| tf\_docs\_working\_dir | Directories of terraform modules to generate docs for seperated by commas (conflicts with atlantis/find dirs) | . | false | - -## Outputs +| tf\_docs\_args | Additional args to pass to the command see [https://github.com/terraform-docs/terraform-docs/tree/master/docs](https://github.com/terraform-docs/terraform-docs/tree/master/docs) | `""` | false | +| tf\_docs\_atlantis_file | Generate directories by parsing an atlantis formatted yaml to enable provide the file name to parse (eg atlantis.yaml) | `disabled` | false | +| tf\_docs\_content_type | Generate document or table | `table` | false | +| tf\_docs\_find_dir | Generate directories by running `find ./tf_docs_find_dir -name \*.tf` | `disabled` | false | +| tf\_docs\_git_commit_message | Commit message | `terraform-docs: automated action` | false | +| tf\_docs\_git_push | If true it will commit and push the changes | `false` | false | +| tf\_docs\_indention | Indention level of Markdown sections [1, 2, 3, 4, 5] | `2` | false | +| tf\_docs\_output_file | File in module directory where the docs should be placed | `USAGE.md` | false | +| tf\_docs\_output_method | Method should be one of (replace/inject/print) where:
- `replace` the `tf_docs_output_file`
- `inject` the content between start and close delims
- `print` the output | `inject` | false | +| tf\_docs\_template | When provided will be used as the template if/when the `output-file` does not exist | # Usage


| false | +| tf\_docs\_working_dir | Directories of terraform modules to generate docs for seperated by commas (conflicts with atlantis/find dirs) | `.` | false | + +### Outputs | Name | Description | |------|-------------| | num\_changed | Number of files changed | -# Important Notes +## Important Notes -In addition to the below notes, further documentation on terraform-docs can be found [here](https://github.com/segmentio/terraform-docs) +In addition to the below notes, further documentation on terraform-docs can be found +[here](https://github.com/terraform-docs/terraform-docs). ## Output Method (tf\_docs\_output\_method) -### print +#### print + This will just print the generated file -### replace +#### replace + This will create/replace the tf\_docs\_output\_file at the determined module path(s) -### inject -Instead of replacing the output file, this will inject the generated documentation into the existing file between the predefined delimeters: `` and ``. If the file exists but does not contain the delimeters, the action will fail for the given module. If the file doesn't exist, it will create it using the value tf\_docs\_template which MUST have the delimeters. +#### inject + +Instead of replacing the output file, this will inject the generated documentation into +the existing file between the predefined delimeters: `` and +``. If the file exists but does not contain the delimeters, the +action will fail for the given module. If the file doesn't exist, it will create it +using the value template which MUST have the delimeters. + +### Auto commit changes -## Auto commit changes To enable you need to ensure a few things first: -- set tf\_docs\_git\_push to 'true' -- use actions/checkout@v2 with the head ref for PRs or branch name for pushes -### PR +- set `tf\_docs\_git\_push` to `true` +- use `actions/checkout@v2` with the head ref for PRs or branch name for pushes + +#### PR + ```yaml on: - pull_request @@ -92,7 +114,8 @@ jobs: ref: ${{ github.event.pull_request.head.ref }} ``` -### Push +#### Push + ```yaml on: push: @@ -107,46 +130,50 @@ jobs: ref: master ``` -## Content type (tf\_docs\_content\_type) +### Content type (tf\_docs\_content\_type) + - document - long form document - table - github formatted table - json - pure json output +## Examples -# Examples +### Simple / Single folder -## Simple / Single folder -``` +```yaml - name: Generate TF Docs - uses: Dirrk/terraform-docs@v1.0.8 + uses: terraform-docs/gh-actions@v0.1.0 with: tf_docs_working_dir: . tf_docs_output_file: README.md ``` -## Multi folder -``` +### Multi folder + +```yaml - name: Generate TF Docs - uses: Dirrk/terraform-docs@v1.0.8 + uses: terraform-docs/gh-actions@v0.1.0 with: tf_docs_working_dir: .,example1,example3/modules/test tf_docs_output_file: README.md ``` -## Use atlantis.yaml v3 to find all dirs -``` +### Use `atlantis.yaml` v3 to find all dirs + +```yaml - name: Generate TF docs - uses: Dirrk/terraform-docs@v1.0.8 + uses: terraform-docs/gh-actions@v0.1.0 with: tf_docs_atlantis_file: atlantis.yaml ``` -## Find all .tf file folders under a given directory +### Find all `.tf` file under a given directory + ```yaml - name: Generate TF docs - uses: Dirrk/terraform-docs@v1.0.8 + uses: terraform-docs/gh-actions@v0.1.0 with: tf_docs_find_dir: examples/ ``` -Complete examples can be found [here](https://github.com/Dirrk/terraform-docs/tree/v1.0.8/examples) +Complete examples can be found [here](https://github.com/terraform-docs/gh-actions/tree/v0.1.0/examples). diff --git a/action.yml b/action.yml index 572ac01..02a1fd9 100644 --- a/action.yml +++ b/action.yml @@ -1,6 +1,7 @@ name: terraform-docs -author: Derek Rada -description: A Github action for generating terraform module documentation using terraform-docs and gomplate. +author: terraform-docs Authors +description: A Github action for generating Terraform module documentation using terraform-docs and gomplate. + inputs: tf_docs_working_dir: description: Directories of terraform modules to generate docs for seperated by commas (conflicts with atlantis/find dirs) @@ -27,7 +28,7 @@ inputs: required: false default: '2' tf_docs_args: - description: Additional args to pass to the command see https://github.com/segmentio/terraform-docs/tree/master/docs + description: Additional args to pass to the command see https://github.com/terraform-docs/terraform-docs/tree/master/docs required: false default: '' tf_docs_output_method: diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 26ea468..0000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM golang:1.13-alpine3.10 as builder -ARG VERSION=v0.9.1 - -# Install dependencies -RUN set -x \ - && apk add --no-cache \ - bash \ - curl \ - gcc \ - git \ - make \ - wget \ - && GO111MODULE="on" go get "github.com/segmentio/terraform-docs@${VERSION}" - -RUN set -x \ - && mkdir -p /outputs \ - && wget -O yq https://github.com/mikefarah/yq/releases/download/2.4.1/yq_linux_amd64 \ - && chmod 755 yq \ - && mv yq /outputs/yq - -FROM alpine:3.10 -COPY --from=builder /go/bin/terraform-docs /usr/local/bin/terraform-docs -COPY --from=builder /outputs/* /usr/local/bin/ - -RUN apk add --no-cache bash sed git jq - -ENTRYPOINT ["/usr/local/bin/terraform-docs"] diff --git a/examples/README.md b/examples/README.md index 8858680..7a501c3 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,3 +1,3 @@ # Examples -These examples are committed with the documentation rendered just like a normal repo would. They are generated using this github action on each build of the code. Which you can find here https://github.com/Dirrk/terraform-docs/tree/master/.github/workflows/example.yml +These examples are committed with the documentation rendered just like a normal repo would. They are generated using this github action on each build of the code. Which you can find here https://github.com/terraform-docs/gh-actions/tree/master/.github/workflows/example.yml