{"id":22923808,"url":"https://github.com/isweluiz/github-actions-reusable-workflows","last_synced_at":"2026-01-11T03:13:51.825Z","repository":{"id":265714077,"uuid":"734445570","full_name":"isweluiz/github-actions-reusable-workflows","owner":"isweluiz","description":null,"archived":false,"fork":false,"pushed_at":"2023-12-21T17:42:42.000Z","size":33,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T23:43:18.851Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isweluiz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-21T17:42:40.000Z","updated_at":"2023-12-21T17:42:46.000Z","dependencies_parsed_at":"2024-11-30T17:26:05.287Z","dependency_job_id":"0f6d21c1-47f7-4309-a5c6-8d39ba43464b","html_url":"https://github.com/isweluiz/github-actions-reusable-workflows","commit_stats":null,"previous_names":["isweluiz/github-actions-reusable-workflows"],"tags_count":0,"template":false,"template_full_name":"cloudposse/github-actions-workflows","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isweluiz%2Fgithub-actions-reusable-workflows","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isweluiz%2Fgithub-actions-reusable-workflows/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isweluiz%2Fgithub-actions-reusable-workflows/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isweluiz%2Fgithub-actions-reusable-workflows/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isweluiz","download_url":"https://codeload.github.com/isweluiz/github-actions-reusable-workflows/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246659618,"owners_count":20813331,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-14T08:17:06.520Z","updated_at":"2026-01-11T03:13:51.796Z","avatar_url":"https://github.com/isweluiz.png","language":"Makefile","readme":"\n\u003c!-- markdownlint-disable --\u003e\n# github-actions-workflows [![Latest Release](https://img.shields.io/github/release/cloudposse/github-actions-workflows.svg)](https://github.com/cloudposse/github-actions-workflows/releases/latest) [![Slack Community](https://slack.cloudposse.com/badge.svg)](https://slack.cloudposse.com)\n\u003c!-- markdownlint-restore --\u003e\n\n[![README Header][readme_header_img]][readme_header_link]\n\n[![Cloud Posse][logo]](https://cpco.io/homepage)\n\n\u003c!--\n\n\n\n\n  ** DO NOT EDIT THIS FILE\n  **\n  ** This file was automatically generated by the `build-harness`.\n  ** 1) Make all changes to `README.yaml`\n  ** 2) Run `make init` (you only need to do this once)\n  ** 3) Run`make readme` to rebuild this file.\n  **\n  ** (We maintain HUNDREDS of open source projects. This is how we maintain our sanity.)\n  **\n\n\n\n\n\n--\u003e\n\nGeneral purpose reusable Github Action workflows\n\n---\n\nThis project is part of our comprehensive [\"SweetOps\"](https://cpco.io/sweetops) approach towards DevOps.\n[\u003cimg align=\"right\" title=\"Share via Email\" src=\"https://docs.cloudposse.com/images/ionicons/ios-email-outline-2.0.1-16x16-999999.svg\"/\u003e][share_email]\n[\u003cimg align=\"right\" title=\"Share on Google+\" src=\"https://docs.cloudposse.com/images/ionicons/social-googleplus-outline-2.0.1-16x16-999999.svg\" /\u003e][share_googleplus]\n[\u003cimg align=\"right\" title=\"Share on Facebook\" src=\"https://docs.cloudposse.com/images/ionicons/social-facebook-outline-2.0.1-16x16-999999.svg\" /\u003e][share_facebook]\n[\u003cimg align=\"right\" title=\"Share on Reddit\" src=\"https://docs.cloudposse.com/images/ionicons/social-reddit-outline-2.0.1-16x16-999999.svg\" /\u003e][share_reddit]\n[\u003cimg align=\"right\" title=\"Share on LinkedIn\" src=\"https://docs.cloudposse.com/images/ionicons/social-linkedin-outline-2.0.1-16x16-999999.svg\" /\u003e][share_linkedin]\n[\u003cimg align=\"right\" title=\"Share on Twitter\" src=\"https://docs.cloudposse.com/images/ionicons/social-twitter-outline-2.0.1-16x16-999999.svg\" /\u003e][share_twitter]\n\n\n\n\nIt's 100% Open Source and licensed under the [APACHE2](LICENSE).\n\n\n\n\n\n\n\n\n\n\n\n\n## Introduction\n\nUse provided [GitHub Actions reusable workflows](https://docs.github.com/en/actions/using-workflows/reusing-workflows) \nto implement consistent release workflow for Github Actions repositories across your organization.\nAvoid duplication and simplify maintain of the workflows.  \n\n\n\n\n\n\n\n\n\n\n\n\u003c!-- markdownlint-disable --\u003e\n## Workflows\n\n| Name | Description |\n|------|-------------|\n| [CD - Deploy to EKS with ArgoCD and Helmfile](#cd---deploy-to-eks-with-argocd-and-helmfile) | Deploy Docker image to EKS with ArgoCD and Helmfile |\n| [CD - Deploy to ECS with Spacelift](#cd---deploy-to-ecs-with-spacelift) | Deploy Docker image to ECS with Spacelift |\n| [CD - Deploy to EKS with Helmfile](#cd---deploy-to-eks-with-helmfile) | Deploy Docker image to EKS with Helmfile |\n| [CD - Deploy to EKS Preview envs with Helmfile](#cd---deploy-to-eks-preview-envs-with-helmfile) | Deploy Docker image to ECS Preview envs with Helmfile |\n| [CD - Deploy to ECS QA/Preview envs with Spacelift](#cd---deploy-to-ecs-qapreview-envs-with-spacelift) | Deploy Docker image to ECS QA/Preview envs with Spacelift |\n| [CD - Deploy to EKS Preview envs with Helmfile](#cd---deploy-to-eks-preview-envs-with-helmfile) | Deploy Docker image to ECS Preview envs with Helmfile |\n| [CI - Codeowners](#ci---codeowners) | Validate CODEOWNERS and suggest changes |\n| [CI - Build Docker image](#ci---build-docker-image) | Build Docker image and push it to ECR |\n| [CI - Promote or build Docker image](#ci---promote-or-build-docker-image) | Promote or build Docker image and push it to ECR |\n| [CI - Promote Docker image ](#ci---promote-docker-image) | Promote Docker image to specific version tag and push it to ECR |\n| [CI - Verify Docker image exists](#ci---verify-docker-image-exists) | Verify Docker image exists on ECR |\n| [CI - Readme](#ci---readme) | Validate README.yaml, README.md and suggest changes |\n| [CI - Terraform ChatOps](#ci---terraform-chatops) | Trigger terraform tests using ChatOps |\n| [CI - Terraform](#ci---terraform) | Lint, format and validate terraform code |\n| [CI - Check dist Directory](#ci---check-dist-directory) | This workflow helps ensure that generated contents of the `dist` directory matches the output of the `yarn build` |\n| [Controller - Draft release](#controller---draft-release) | Create or update draft release |\n| [Controller - Reingtegrate hotfix branch](#controller---reingtegrate-hotfix-branch) | Create PR into `target\\_branch` to reintegrate hotfix from current branch  |\n| [Controller - Create Release branch](#controller---create-release-branch) | Create `release/{version}` branch for the release  |\n| [Controller - Create hotfix release](#controller---create-hotfix-release) | Create next patch version release  |\n| [Controller - Labels](#controller---labels) | Label a pull request with one or more labels |\n| [Controller - Monorepo Controller](#controller---monorepo-controller) | Mocked monorepo controller that outputs list of applications, lists of apps with and without changes. |\n| [Controller - Release](#controller---release) | Create a github release |\n| [Scheduled Context](#scheduled-context) | Scheduled update of context.tf and related docs |\n| [Scheduled Readme](#scheduled-readme) | Scheduled update of readme.md |\n\n\n\n\n## CD - Deploy to EKS with ArgoCD and Helmfile\n\nDeploy Docker image to EKS with ArgoCD and Helmfile\n\n### Usage \n\n```yaml\n  name: Deploy\n  on:\n    push:\n      branches: [ main ]\n\n  jobs:\n    cd:\n      uses: cloudposse/github-actions-workflows/.github/workflows/cd-argocd.yml@main\n      with:\n        image: registry.hub.docker.com/library/nginx\n        tag: latest\n        repository: ${{ github.event.repository.name }}\n        environment: dev\n      secrets:\n        secret-outputs-passphrase: ${{ secrets.secret-outputs-passphrase }}\n        github-private-actions-pat: ${{ secrets.github-private-actions-pat }}\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| environment | Environment name deploy to | string | N/A | true |\n| image | Docker Image to deploy | string | N/A | true |\n| organization | Repository owner organization (ex. acme for repo acme/example) | string | N/A | true |\n| repository | Repository name (ex. example for repo acme/example) | string | N/A | true |\n| synchronously | Wait until ArgoCD successfully apply the changes | boolean | false | false |\n| tag | Docker Image tag to deploy | string | N/A | true |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github-private-actions-pat | Github PAT allow to pull private repos | true |\n| secret-outputs-passphrase | Passphrase to encrypt/decrypt secret outputs with gpg. For more information [read](https://github.com/cloudposse/github-action-secret-outputs) | true |\n\n\n\n\n\n\n## CD - Deploy to ECS with Spacelift\n\nDeploy Docker image to ECS with Spacelift\n\n### Usage \n\n```yaml\n  name: Deploy\n  on:\n    push:\n      branches: [ main ]\n\n  jobs:\n    cd:\n      uses: cloudposse/github-actions-workflows/.github/workflows/cd-ecs.yml@main\n      with:\n        image: registry.hub.docker.com/library/nginx\n        tag: latest\n        repository: ${{ github.event.repository.name }}\n        environment: dev\n        spacelift-organization: ${{ inputs.spacelift-organization }}\n      secrets:\n        secret-outputs-passphrase: \"${{ secrets.secret-outputs-passphrase }}\"\n        github-private-actions-pat: \"${{ secrets.github-private-actions-pat }}\"\n        spacelift-api-key-id: \"${{ secrets.spacelift-api-key-id }}\"\n        spacelift-api-key-secret: \"${{ secrets.spacelift-api-key-secret }}\"\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| app | Application name. Used with monorepo pattern when there are several applications in the repo | string | N/A | false |\n| environment | Environment name deploy to | string | N/A | true |\n| image | Docker Image to deploy | string | N/A | true |\n| matrix-key | Matrix key - matrix output workaround. [Read more](https://github.com/cloudposse/github-action-matrix-outputs-write#introduction) | string | N/A | false |\n| matrix-step-name | Matrix step name - matrix output workaround. [Read more](https://github.com/cloudposse/github-action-matrix-outputs-write#introduction) | string | N/A | false |\n| repository | Repository name (ex. example for repo acme/example) | string | N/A | true |\n| spacelift-organization | Spacelift organization name | string | N/A | true |\n| tag | Docker Image tag to deploy | string | N/A | true |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github-private-actions-pat | Github PAT allow to pull private repos | true |\n| secret-outputs-passphrase | Passphrase to encrypt/decrypt secret outputs with gpg. For more information [read](https://github.com/cloudposse/github-action-secret-outputs) | true |\n| spacelift-api-key-id | Spacelift API Key ID | true |\n| spacelift-api-key-secret | Spacelift API Key Secret | true |\n\n\n\n\n\n\n## CD - Deploy to EKS with Helmfile\n\nDeploy Docker image to EKS with Helmfile\n\n### Usage \n\n```yaml\n  name: Deploy\n  on:\n    push:\n      branches: [ main ]\n\n  jobs:\n    cd:\n      uses: cloudposse/github-actions-workflows/.github/workflows/cd-helmfile.yml@main\n      with:\n        image: registry.hub.docker.com/library/nginx\n        tag: latest\n        repository: ${{ github.event.repository.name }}\n        environment: dev\n      secrets:\n        secret-outputs-passphrase: ${{ secrets.secret-outputs-passphrase }}\n        github-private-actions-pat: ${{ secrets.github-private-actions-pat }}\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| environment | Environment name deploy to | string | N/A | true |\n| image | Docker Image to deploy | string | N/A | true |\n| repository | Repository name (ex. example for repo acme/example) | string | N/A | true |\n| tag | Docker Image tag to deploy | string | N/A | true |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github-private-actions-pat | Github PAT allow to pull private repos | true |\n| secret-outputs-passphrase | Passphrase to encrypt/decrypt secret outputs with gpg. For more information [read](https://github.com/cloudposse/github-action-secret-outputs) | true |\n\n\n\n\n\n\n## CD - Deploy to EKS Preview envs with Helmfile\n\nDeploy Docker image to ECS Preview envs with Helmfile\n\n### Usage \n\n```yaml\n  name: Feature Branch\n  on:\n    pull_request:\n      branches: [ 'master' ]\n      types: [opened, synchronize, reopened, closed, labeled, unlabeled]\n\n  jobs:\n    cd:\n      uses: cloudposse/github-actions-workflows/.github/workflows/cd-preview-helmfile.yml@main\n      if: ${{ always() }}\n      with:\n        image: registry.hub.docker.com/library/nginx\n        tag: latest\n        repository: ${{ github.event.repository.name }}\n        open: ${{ github.event.pull_request.state == 'open' }}\n        labels: ${{ toJSON(github.event.pull_request.labels.*.name) }}\n        ref: ${{ github.event.pull_request.head.ref }}\n        exclusive: false\n        env-label: |\n          preview: deploy\n      secrets:\n        secret-outputs-passphrase: ${{ secrets.secret-outputs-passphrase }}\n        github-private-actions-pat: ${{ secrets.github-private-actions-pat }}\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| env-label | YAML formatted {environment}: {label} map | string | preview: deploy\u003cbr\u003e | false |\n| exclusive | Deactivate previous GitHub deployments | boolean | true | false |\n| image | Docker Image to deploy | string | N/A | true |\n| labels | Pull Request labels | string | {} | false |\n| open | Pull Request open/close state. Set true if opened | boolean | N/A | true |\n| organization | Repository owner organization (ex. acme for repo acme/example) | string | N/A | true |\n| ref | The fully-formed ref of the branch or tag that triggered the workflow run | string | N/A | true |\n| repository | Repository name (ex. example for repo acme/example) | string | N/A | true |\n| synchronously | Wait until ArgoCD successfully apply the changes | boolean | false | false |\n| tag | Docker Image tag to deploy | string | N/A | true |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github-private-actions-pat | Github PAT allow to pull private repos | true |\n| secret-outputs-passphrase | Passphrase to encrypt/decrypt secret outputs with gpg. For more information [read](https://github.com/cloudposse/github-action-secret-outputs) | true |\n\n\n\n\n\n\n## CD - Deploy to ECS QA/Preview envs with Spacelift\n\nDeploy Docker image to ECS QA/Preview envs with Spacelift\n\n### Usage \n\n```yaml\n  name: Feature Branch\n  on:\n    pull_request:\n      branches: [ 'master' ]\n      types: [opened, synchronize, reopened, closed, labeled, unlabeled]\n\n  jobs:\n    cd:\n      uses: cloudposse/github-actions-workflows/.github/workflows/cd-preview-ecs.yml@main\n      if: ${{ always() }}\n      with:\n        image: registry.hub.docker.com/library/nginx\n        tag: latest\n        repository: ${{ github.event.repository.name }}\n        spacelift-organization: ${{ inputs.spacelift-organization }}\n        open: ${{ github.event.pull_request.state == 'open' }}\n        labels: ${{ toJSON(github.event.pull_request.labels.*.name) }}\n        ref: ${{ github.event.pull_request.head.ref }}\n        exclusive: true\n        env-label: |\n          qa1: deploy/qa1\n          qa2: deploy/qa2\n          qa3: deploy/qa3\n          qa4: deploy/qa4\n      secrets:\n        secret-outputs-passphrase: ${{ secrets.secret-outputs-passphrase }}\n        github-private-actions-pat: ${{ secrets.github-private-actions-pat }}\n        spacelift-api-key-id: \"${{ secrets.spacelift-api-key-id }}\"\n        spacelift-api-key-secret: \"${{ secrets.spacelift-api-key-secret }}\"  \n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| app | Application name. Used with monorepo pattern when there are several applications in the repo | string | N/A | false |\n| env-label | YAML formatted {environment}: {label} map | string | preview: deploy\u003cbr\u003e | false |\n| exclusive | Deactivate previous GitHub deployments | boolean | true | false |\n| image | Docker Image to deploy | string | N/A | true |\n| labels | Pull Request labels | string | {} | false |\n| matrix-key | Matrix key - matrix output workaround. [Read more](https://github.com/cloudposse/github-action-matrix-outputs-write#introduction) | string | N/A | false |\n| matrix-step-name | Matrix step name - matrix output workaround. [Read more](https://github.com/cloudposse/github-action-matrix-outputs-write#introduction) | string | N/A | false |\n| open | Pull Request open/close state. Set true if opened | boolean | N/A | true |\n| ref | The fully-formed ref of the branch or tag that triggered the workflow run | string | N/A | true |\n| repository | Repository name (ex. example for repo acme/example) | string | N/A | true |\n| spacelift-organization | Spacelift organization name | string | N/A | true |\n| tag | Docker Image tag to deploy | string | N/A | true |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github-private-actions-pat | Github PAT allow to pull private repos | true |\n| secret-outputs-passphrase | Passphrase to encrypt/decrypt secret outputs with gpg. For more information [read](https://github.com/cloudposse/github-action-secret-outputs) | true |\n| spacelift-api-key-id | Spacelift API Key ID | true |\n| spacelift-api-key-secret | Spacelift API Key Secret | true |\n\n\n\n\n\n\n## CD - Deploy to EKS Preview envs with Helmfile\n\nDeploy Docker image to ECS Preview envs with Helmfile\n\n### Usage \n\n```yaml\n  name: Feature Branch\n  on:\n    pull_request:\n      branches: [ 'master' ]\n      types: [opened, synchronize, reopened, closed, labeled, unlabeled]\n\n  jobs:\n    cd:\n      uses: cloudposse/github-actions-workflows/.github/workflows/cd-preview-helmfile.yml@main\n      if: ${{ always() }}\n      with:\n        image: registry.hub.docker.com/library/nginx\n        tag: latest\n        repository: ${{ github.event.repository.name }}\n        open: ${{ github.event.pull_request.state == 'open' }}\n        labels: ${{ toJSON(github.event.pull_request.labels.*.name) }}\n        ref: ${{ github.event.pull_request.head.ref }}\n        exclusive: false\n        env-label: |\n          preview: deploy\n      secrets:\n        secret-outputs-passphrase: ${{ secrets.secret-outputs-passphrase }}\n        github-private-actions-pat: ${{ secrets.github-private-actions-pat }}\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| env-label | YAML formatted {environment}: {label} map | string | preview: deploy\u003cbr\u003e | false |\n| exclusive | Deactivate previous GitHub deployments | boolean | true | false |\n| image | Docker Image to deploy | string | N/A | true |\n| labels | Pull Request labels | string | {} | false |\n| open | Pull Request open/close state. Set true if opened | boolean | N/A | true |\n| ref | The fully-formed ref of the branch or tag that triggered the workflow run | string | N/A | true |\n| repository | Repository name (ex. example for repo acme/example) | string | N/A | true |\n| tag | Docker Image tag to deploy | string | N/A | true |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github-private-actions-pat | Github PAT allow to pull private repos | true |\n| secret-outputs-passphrase | Passphrase to encrypt/decrypt secret outputs with gpg. For more information [read](https://github.com/cloudposse/github-action-secret-outputs) | true |\n\n\n\n\n\n\n## CI - Codeowners\n\nValidate CODEOWNERS and suggest changes\n\n### Usage \n```yaml\n  name: Validate CODEOWNERS\n  on:\n    workflow_call:\n    \n  jobs:\n    ci-codeowners:\n      uses: cloudposse/github-actions-workflows/.github/workflows/ci-codeowners-full.yml@main\n      with:\n        is_fork: ${{ github.event.pull_request.head.repo.full_name != github.repository }}\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| is\\_fork | Run workflow in fork mode (decreased permissions and features) | boolean | N/A | true |\n| runs-on | Overrides job runs-on setting (json-encoded list) | string | [\"ubuntu-latest\"] | false |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github\\_access\\_token | GitHub API token | false |\n\n\n\n\n\n\n## CI - Build Docker image\n\nBuild Docker image and push it to ECR\n\n### Usage \n\n```yaml\n  name: Deploy\n  on:\n    push:\n      branches: [ main ]\n\n  jobs:\n    ci:\n      uses: cloudposse/github-actions-workflows/.github/workflows/ci-dockerized-app-build.yml@main\n      with:\n        organization: ${{ github.event.repository.owner.login }}\n        repository: ${{ github.event.repository.name }}\n      secrets:\n        ecr-region: ${{ secrets.ecr-region }}\n        ecr-iam-role: ${{ secrets.ecr-iam-role }}\n        registry: ${{ secrets.registry }}\n        secret-outputs-passphrase: ${{ secrets.secret-outputs-passphrase }}\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| organization | Repository owner organization (ex. acme for repo acme/example) | string | N/A | true |\n| repository | Repository name (ex. example for repo acme/example) | string | N/A | true |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| ecr-iam-role | IAM Role ARN provide ECR write/read access | true |\n| ecr-region | ECR AWS region | true |\n| registry | ECR Docker registry | true |\n| secret-outputs-passphrase | Passphrase to encrypt/decrypt secret outputs with gpg. For more information [read](https://github.com/cloudposse/github-action-secret-outputs) | true |\n\n\n\n### Outputs\n\n| Name | Description |\n|------|-------------|\n| image | Docker Image |\n| tag | Docker image tag |\n\n\n\n## CI - Promote or build Docker image\n\nPromote or build Docker image and push it to ECR\n\n### Usage \n\n```yaml\n  name: Deploy\n  on:\n    push:\n      branches: [ main ]\n\n  jobs:\n    ci:\n      uses: cloudposse/github-actions-workflows/.github/workflows/ci-dockerized-app-promote-or-build.yml@main\n      with:\n        organization: ${{ github.event.repository.owner.login }}\n        repository: ${{ github.event.repository.name }}\n        force-build: false\n      secrets:\n        ecr-region: ${{ secrets.ecr-region }}\n        ecr-iam-role: ${{ secrets.ecr-iam-role }}\n        registry: ${{ secrets.registry }}\n        secret-outputs-passphrase: ${{ secrets.secret-outputs-passphrase }}\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| app | Application name. Used with monorepo pattern when there are several applications in the repo | string | N/A | true |\n| force-build | Force build (skip promotion) | boolean | false | true |\n| matrix-key | Matrix key - matrix output workaround. [Read more](https://github.com/cloudposse/github-action-matrix-outputs-write#introduction) | string | N/A | false |\n| matrix-step-name | Matrix step name - matrix output workaround. [Read more](https://github.com/cloudposse/github-action-matrix-outputs-write#introduction) | string | N/A | false |\n| organization | Repository owner organization (ex. acme for repo acme/example) | string | N/A | true |\n| repository | Repository name (ex. example for repo acme/example) | string | N/A | true |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| ecr-iam-role | IAM Role ARN provide ECR write/read access | true |\n| ecr-region | ECR AWS region | true |\n| registry | ECR Docker registry | true |\n| secret-outputs-passphrase | Passphrase to encrypt/decrypt secret outputs with gpg. For more information [read](https://github.com/cloudposse/github-action-secret-outputs) | true |\n\n\n\n### Outputs\n\n| Name | Description |\n|------|-------------|\n| image | Docker Image |\n| tag | Docker image tag |\n\n\n\n## CI - Promote Docker image \n\nPromote Docker image to specific version tag and push it to ECR\n\n### Usage \n\n```yaml\n  name: Release\n  on:\n    release:\n      types: [published]\n\n  jobs:\n    ci:\n      uses: cloudposse/github-actions-workflows/.github/workflows/ci-dockerized-app-promote.yml@main\n      with:\n        organization: ${{ github.event.repository.owner.login }}\n        repository: ${{ github.event.repository.name }}\n        version: ${{ github.event.release.tag_name }}\n      secrets:\n        ecr-region: ${{ secrets.ecr-region }}\n        ecr-iam-role: ${{ secrets.ecr-iam-role }}\n        registry: ${{ secrets.registry }}\n        secret-outputs-passphrase: ${{ secrets.secret-outputs-passphrase }}\n\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| app | Application name. Used with monorepo pattern when there are several applications in the repo | string | N/A | false |\n| matrix-key | Matrix key - matrix output workaround. [Read more](https://github.com/cloudposse/github-action-matrix-outputs-write#introduction) | string | N/A | false |\n| matrix-step-name | Matrix step name - matrix output workaround. [Read more](https://github.com/cloudposse/github-action-matrix-outputs-write#introduction) | string | N/A | false |\n| organization | Repository owner organization (ex. acme for repo acme/example) | string | N/A | true |\n| repository | Repository name (ex. example for repo acme/example) | string | N/A | true |\n| version | New version tag | string | N/A | true |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| ecr-iam-role | IAM Role ARN provide ECR write/read access | true |\n| ecr-region | ECR AWS region | true |\n| registry | ECR Docker registry | true |\n| secret-outputs-passphrase | Passphrase to encrypt/decrypt secret outputs with gpg. For more information [read](https://github.com/cloudposse/github-action-secret-outputs) | true |\n\n\n\n### Outputs\n\n| Name | Description |\n|------|-------------|\n| image | Docker Image |\n| tag | Docker image tag |\n\n\n\n## CI - Verify Docker image exists\n\nVerify Docker image exists on ECR\n\n### Usage \n\n```yaml\n  name: Release\n  on:\n    release:\n      types: [published]\n\n  jobs:\n    ci:\n      uses: cloudposse/github-actions-workflows/.github/workflows/ci-dockerized-app-verify.yml@main\n      with:\n        organization: ${{ github.event.repository.owner.login }}\n        repository: ${{ github.event.repository.name }}\n        version: ${{ github.event.release.tag_name }}\n      secrets:\n        ecr-region: ${{ secrets.ecr-region }}\n        ecr-iam-role: ${{ secrets.ecr-iam-role }}\n        registry: ${{ secrets.registry }}\n        secret-outputs-passphrase: ${{ secrets.secret-outputs-passphrase }}\n\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| app | Application name. Used with monorepo pattern when there are several applications in the repo | string | N/A | true |\n| organization | Repository owner organization (ex. acme for repo acme/example) | string | N/A | true |\n| repository | Repository name (ex. example for repo acme/example) | string | N/A | true |\n| version | Release version tag | string | N/A | true |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| ecr-iam-role | IAM Role ARN provide ECR write/read access | true |\n| ecr-region | ECR AWS region | true |\n| registry | ECR Docker registry | true |\n| secret-outputs-passphrase | Passphrase to encrypt/decrypt secret outputs with gpg. For more information [read](https://github.com/cloudposse/github-action-secret-outputs) | true |\n\n\n\n### Outputs\n\n| Name | Description |\n|------|-------------|\n| image | Docker Image |\n| tag | Docker image tag |\n\n\n\n## CI - Readme\n\nValidate README.yaml, README.md and suggest changes\n\n### Usage \n```yaml\n  name: Validate Readme\n  on:\n    workflow_call:\n  \n  permissions:\n    pull-requests: write\n    id-token: write\n    contents: read\n    \n  jobs:\n    ci-readme:\n      uses: cloudposse/github-actions-workflows/.github/workflows/ci-readme.yml@main\n      with:\n        suggestions: true\n        filter-mode: diff_context\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| filter-mode | Reviewdog filter mode | string | N/A | true |\n| runs-on | Overrides job runs-on setting (json-encoded list) | string | [\"ubuntu-latest\"] | false |\n| suggestions | Enable Reviewdog suggestions (pull request only) | boolean | N/A | true |\n\n\n\n\n\n\n\n\n## CI - Terraform ChatOps\n\nTrigger terraform tests using ChatOps\n\n### Usage \n```yaml\n  name: Terraform ChatOps\n  on:\n    workflow_call:\n  \n  permissions:\n    pull-requests: write\n    id-token: write\n    contents: read\n\n  jobs:\n    ci-terraform-chatops:\n      uses: cloudposse/github-actions-workflows/.github/workflows/ci-terraform-chatops.yml@main\n      secrets:\n        github_access_token: ${{ secrets.REPO_ACCESS_TOKEN }}\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| runs-on | Overrides job runs-on setting (json-encoded list) | string | [\"ubuntu-latest\"] | false |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github\\_access\\_token | GitHub API token | true |\n\n\n\n\n\n\n## CI - Terraform\n\nLint, format and validate terraform code\n\n### Usage \n```yaml\n  name: Validate Terraform\n  on:\n    workflow_call:\n  \n  permissions:\n    pull-requests: write\n    id-token: write\n    contents: read\n\n  jobs:\n    ci-terraform:\n      uses: cloudposse/github-actions-workflows/.github/workflows/ci-terraform.yml@main\n      with:\n        suggestions: true\n        filter-mode: diff_context\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| filter-mode | Reviewdog filter mode | string | N/A | true |\n| runs-on | Overrides job runs-on setting (json-encoded list) | string | [\"ubuntu-latest\"] | false |\n| suggestions | Enable Reviewdog suggestions (pull request only) | boolean | N/A | true |\n\n\n\n\n\n\n\n\n## CI - Check dist Directory\n\nThis workflow helps ensure that generated contents of the `dist` directory matches the output of the `yarn build`\ncommand. The `dist` directory has special meaning in GitHub Actions in that it that contains the runnable JS files. \n\nIn Cloud Posse's TypeScript actions, the `dist` directory is generated through a build process from the TypeScript \nsource files by running the `yarn build` command.\n\n\n### Usage \n\n```yaml\n  name: Build\n  on:\n    push:\n      branches: [ main ]\n\n  jobs:\n    check-dist:\n      uses: cloudposse/github-actions-workflows/.github/workflows/ci-typescript-app-check-dist.yml@main\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| commit-message | Optional input to set a commit message. If it's not set, it defaults to 'Update the contents of dist directory' | string | Update contents of the dist directory | false |\n| dist-path | Optional input to set a path to the dist folder. If it's not set, it defaults to './dist' | string | ./dist | false |\n| node-caching | Optional input to set up caching for the setup-node action. The input syntax corresponds to the setup-node's one. Set to an empty string if caching isn't needed | string | yarn | false |\n| node-version | Optional input to set the version of Node.js used to build a project. The input syntax corresponds to the setup-node's one | string | 16.x | false |\n\n\n\n\n\n\n\n\n## Controller - Draft release\n\nCreate or update draft release\n\n### Usage \n\n```yaml\n  name: Draft release\n  on:\n    push:\n      branches: [ main ]\n\n  jobs:\n    do:\n      uses:  cloudposse/github-actions-workflows/.github/workflows/controller-draft-release.yml@main\n      with:\n        ref: ${{ github.sha }}\n      secrets:\n        github-private-actions-pat: ${{ secrets.github-private-actions-pat }}\n\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| ref | The release target, i.e. branch or commit it should point to | string | ${{ github.sha }} | false |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github-private-actions-pat | Github PAT allow to create release | true |\n\n\n\n\n\n\n## Controller - Reingtegrate hotfix branch\n\nCreate PR into `target_branch` to reintegrate hotfix from current branch \n\n### Usage \n\n```yaml\n  name: Release\n  on:\n    release:\n      types: [published]\n\n  jobs:\n    do:\n      uses: cloudposse/github-action-workflows/.github/workflows/controller-hotfix-reintegrate.yml@main\n      with:\n        ref: ${{ github.ref }}\n        target_branch: main\n      secrets:\n        github-private-actions-pat: ${{ secrets.github-private-actions-pat }}\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| ref | The fully-formed ref of the branch or tag that triggered the workflow run | string | N/A | true |\n| target\\_branch | Target branch to reintegrate hotfix | string | main | false |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github-private-actions-pat | Github PAT allow to create a pull request | true |\n\n\n\n\n\n\n## Controller - Create Release branch\n\nCreate `release/{version}` branch for the release \n\n### Usage \n\n```yaml\n  name: Main branch\n  on:\n    release:\n      types: [published]\n\n  jobs:\n    do:\n      uses: cloudposse/github-action-workflows/.github/workflows/controller-hotfix-release-branch.yml@main\n      with:\n        version: ${{ github.event.release.tag_name }}\n```  \n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| version | Release version | string | N/A | true |\n\n\n\n\n\n\n\n\n## Controller - Create hotfix release\n\nCreate next patch version release \n\n### Usage \n\n```yaml\n  on:\n    push:\n      branches: [ 'release/**' ]\n\n  jobs:\n    do:\n      uses: cloudposse/github-action-workflows/.github/workflows/controller-hotfix-release.yml@main\n      with:\n        ref: ${{ github.ref }}\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| ref | The fully-formed ref of the branch or tag that triggered the workflow run | string | N/A | true |\n\n\n\n\n\n### Outputs\n\n| Name | Description |\n|------|-------------|\n| version | Release version |\n\n\n\n## Controller - Labels\n\nLabel a pull request with one or more labels\n\n### Usage \n\n```yaml\n  name: Label pull request\n  on:\n    workflow_call:\n\n  jobs:\n    label:\n      uses:  cloudposse/github-actions-workflows/.github/workflows/controller-labels.yml@main\n      with:\n        labels: ['ready-for-review']\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| labels | The labels' name to be added. Must be separated with line breaks if there are multiple labels. | string | N/A | true |\n| runs-on | Overrides job runs-on setting (json-encoded list) | string | [\"ubuntu-latest\"] | false |\n\n\n\n\n\n\n\n\n## Controller - Monorepo Controller\n\nMocked monorepo controller that outputs list of applications, lists of apps with and without changes.\n\n### Usage \n\n```yaml\n  name: Monorepo\n  on:\n    push:\n      branches: [ main ]\n\n  jobs:\n    do:\n      uses:  cloudposse/github-actions-workflows/.github/workflows/controller-monorepo.yml@main\n      with:\n        dir: ./apps\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| dir | Directory with applications | string | N/A | true |\n\n\n\n\n\n### Outputs\n\n| Name | Description |\n|------|-------------|\n| apps | Applications |\n| changes | Changed applications |\n| no-changes | Unchanged applications |\n\n\n\n## Controller - Release\n\nCreate a github release\n\n### Usage \n\n```yaml\n  name: Draft release\n  on:\n    workflow_call:\n\n  jobs:\n    release:\n      uses:  cloudposse/github-actions-workflows/.github/workflows/controller-release.yml@main\n\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| config-name | Name of the release drafter config file | string | auto-release.yml | false |\n| ref | The release target, i.e. branch or commit it should point to | string | ${{ github.sha }} | false |\n| runs-on | Overrides job runs-on setting (json-encoded list) | string | [\"ubuntu-latest\"] | false |\n\n\n\n\n\n\n\n\n## Scheduled Context\n\nScheduled update of context.tf and related docs\n\n### Usage \n```yaml\n  name: scheduled-context\n  on:\n    workflow_call:\n  \n  permissions:\n    pull-requests: write\n    id-token: write\n    contents: read\n    \n  jobs:\n    scheduled-context:\n      uses: cloudposse/github-actions-workflows/.github/workflows/scheduled-context.yml@main\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| base-branch | Repo default branch | string | main | false |\n| runs-on | Overrides job runs-on setting (json-encoded list) | string | [\"ubuntu-latest\"] | false |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github\\_access\\_token | GitHub API token | true |\n\n\n\n\n\n\n## Scheduled Readme\n\nScheduled update of readme.md\n\n### Usage \n```yaml\n  name: scheduled-readme\n  on:\n    workflow_call:\n  \n  permissions:\n    pull-requests: write\n    id-token: write\n    contents: read\n    \n  jobs:\n    scheduled-readme:\n      uses: cloudposse/github-actions-workflows/.github/workflows/scheduled-readme.yml@main\n```\n\n\n\n### Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|----------|\n| base-branch | Repo default branch | string | main | false |\n| runs-on | Overrides job runs-on setting (json-encoded list) | string | [\"ubuntu-latest\"] | false |\n\n\n\n### Secrets\n\n| Name | Description | Required |\n|------|-------------|----------|\n| github\\_access\\_token | GitHub API token | true |\n\n\n\n\n\n\u003c!-- markdownlint-restore --\u003e\n\n\n\n## Share the Love\n\nLike this project? Please give it a ★ on [our GitHub](https://github.com/cloudposse/github-actions-workflows)! (it helps us **a lot**)\n\nAre you using this project or any of our other projects? Consider [leaving a testimonial][testimonial]. =)\n\n\n\n## Related Projects\n\nCheck out these related projects.\n\n\n\n## References\n\nFor additional context, refer to some of these links.\n\n- [github-actions-workflows](https://github.com/cloudposse/github-actions-workflows) - Reusable workflows for different types of projects\n- [github-action-docker-build-push](https://github.com/cloudposse/github-action-docker-build-push) - Simple docker build action\n\n\n## Help\n\n**Got a question?** We got answers.\n\nFile a GitHub [issue](https://github.com/cloudposse/github-actions-workflows/issues), send us an [email][email] or join our [Slack Community][slack].\n\n[![README Commercial Support][readme_commercial_support_img]][readme_commercial_support_link]\n\n## DevOps Accelerator for Startups\n\n\nWe are a [**DevOps Accelerator**][commercial_support]. We'll help you build your cloud infrastructure from the ground up so you can own it. Then we'll show you how to operate it and stick around for as long as you need us.\n\n[![Learn More](https://img.shields.io/badge/learn%20more-success.svg?style=for-the-badge)][commercial_support]\n\nWork directly with our team of DevOps experts via email, slack, and video conferencing.\n\nWe deliver 10x the value for a fraction of the cost of a full-time engineer. Our track record is not even funny. If you want things done right and you need it done FAST, then we're your best bet.\n\n- **Reference Architecture.** You'll get everything you need from the ground up built using 100% infrastructure as code.\n- **Release Engineering.** You'll have end-to-end CI/CD with unlimited staging environments.\n- **Site Reliability Engineering.** You'll have total visibility into your apps and microservices.\n- **Security Baseline.** You'll have built-in governance with accountability and audit logs for all changes.\n- **GitOps.** You'll be able to operate your infrastructure via Pull Requests.\n- **Training.** You'll receive hands-on training so your team can operate what we build.\n- **Questions.** You'll have a direct line of communication between our teams via a Shared Slack channel.\n- **Troubleshooting.** You'll get help to triage when things aren't working.\n- **Code Reviews.** You'll receive constructive feedback on Pull Requests.\n- **Bug Fixes.** We'll rapidly work with you to fix any bugs in our projects.\n\n## Slack Community\n\nJoin our [Open Source Community][slack] on Slack. It's **FREE** for everyone! Our \"SweetOps\" community is where you get to talk with others who share a similar vision for how to rollout and manage infrastructure. This is the best place to talk shop, ask questions, solicit feedback, and work together as a community to build totally *sweet* infrastructure.\n\n## Discourse Forums\n\nParticipate in our [Discourse Forums][discourse]. Here you'll find answers to commonly asked questions. Most questions will be related to the enormous number of projects we support on our GitHub. Come here to collaborate on answers, find solutions, and get ideas about the products and services we value. It only takes a minute to get started! Just sign in with SSO using your GitHub account.\n\n## Newsletter\n\nSign up for [our newsletter][newsletter] that covers everything on our technology radar.  Receive updates on what we're up to on GitHub as well as awesome new projects we discover.\n\n## Office Hours\n\n[Join us every Wednesday via Zoom][office_hours] for our weekly \"Lunch \u0026 Learn\" sessions. It's **FREE** for everyone!\n\n[![zoom](https://img.cloudposse.com/fit-in/200x200/https://cloudposse.com/wp-content/uploads/2019/08/Powered-by-Zoom.png\")][office_hours]\n\n## Contributing\n\n### Bug Reports \u0026 Feature Requests\n\nPlease use the [issue tracker](https://github.com/cloudposse/github-actions-workflows/issues) to report any bugs or file feature requests.\n\n### Developing\n\nIf you are interested in being a contributor and want to get involved in developing this project or [help out](https://cpco.io/help-out) with our other projects, we would love to hear from you! Shoot us an [email][email].\n\nIn general, PRs are welcome. We follow the typical \"fork-and-pull\" Git workflow.\n\n 1. **Fork** the repo on GitHub\n 2. **Clone** the project to your own machine\n 3. **Commit** changes to your own branch\n 4. **Push** your work back up to your fork\n 5. Submit a **Pull Request** so that we can review your changes\n\n**NOTE:** Be sure to merge the latest changes from \"upstream\" before making a pull request!\n\n\n## Copyright\n\nCopyright © 2017-2023 [Cloud Posse, LLC](https://cpco.io/copyright)\n\n\n\n## License\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nSee [LICENSE](LICENSE) for full details.\n\n```text\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  https://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n```\n\n\n\n\n\n\n\n\n\n## Trademarks\n\nAll other trademarks referenced herein are the property of their respective owners.\n\n## About\n\nThis project is maintained and funded by [Cloud Posse, LLC][website]. Like it? Please let us know by [leaving a testimonial][testimonial]!\n\n[![Cloud Posse][logo]][website]\n\nWe're a [DevOps Professional Services][hire] company based in Los Angeles, CA. We ❤️  [Open Source Software][we_love_open_source].\n\nWe offer [paid support][commercial_support] on all of our projects.\n\nCheck out [our other projects][github], [follow us on twitter][twitter], [apply for a job][jobs], or [hire us][hire] to help with your cloud strategy and implementation.\n\n\n\n### Contributors\n\n\u003c!-- markdownlint-disable --\u003e\n|  [![Igor Rodionov][goruha_avatar]][goruha_homepage]\u003cbr/\u003e[Igor Rodionov][goruha_homepage] |\n|---|\n\u003c!-- markdownlint-restore --\u003e\n\n  [goruha_homepage]: https://github.com/goruha\n  [goruha_avatar]: https://img.cloudposse.com/150x150/https://github.com/goruha.png\n\n[![README Footer][readme_footer_img]][readme_footer_link]\n[![Beacon][beacon]][website]\n\u003c!-- markdownlint-disable --\u003e\n  [logo]: https://cloudposse.com/logo-300x69.svg\n  [docs]: https://cpco.io/docs?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=docs\n  [website]: https://cpco.io/homepage?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=website\n  [github]: https://cpco.io/github?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=github\n  [jobs]: https://cpco.io/jobs?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=jobs\n  [hire]: https://cpco.io/hire?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=hire\n  [slack]: https://cpco.io/slack?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=slack\n  [linkedin]: https://cpco.io/linkedin?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=linkedin\n  [twitter]: https://cpco.io/twitter?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=twitter\n  [testimonial]: https://cpco.io/leave-testimonial?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=testimonial\n  [office_hours]: https://cloudposse.com/office-hours?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=office_hours\n  [newsletter]: https://cpco.io/newsletter?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=newsletter\n  [discourse]: https://ask.sweetops.com/?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=discourse\n  [email]: https://cpco.io/email?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=email\n  [commercial_support]: https://cpco.io/commercial-support?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=commercial_support\n  [we_love_open_source]: https://cpco.io/we-love-open-source?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=we_love_open_source\n  [terraform_modules]: https://cpco.io/terraform-modules?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=terraform_modules\n  [readme_header_img]: https://cloudposse.com/readme/header/img\n  [readme_header_link]: https://cloudposse.com/readme/header/link?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=readme_header_link\n  [readme_footer_img]: https://cloudposse.com/readme/footer/img\n  [readme_footer_link]: https://cloudposse.com/readme/footer/link?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=readme_footer_link\n  [readme_commercial_support_img]: https://cloudposse.com/readme/commercial-support/img\n  [readme_commercial_support_link]: https://cloudposse.com/readme/commercial-support/link?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/github-actions-workflows\u0026utm_content=readme_commercial_support_link\n  [share_twitter]: https://twitter.com/intent/tweet/?text=github-actions-workflows\u0026url=https://github.com/cloudposse/github-actions-workflows\n  [share_linkedin]: https://www.linkedin.com/shareArticle?mini=true\u0026title=github-actions-workflows\u0026url=https://github.com/cloudposse/github-actions-workflows\n  [share_reddit]: https://reddit.com/submit/?url=https://github.com/cloudposse/github-actions-workflows\n  [share_facebook]: https://facebook.com/sharer/sharer.php?u=https://github.com/cloudposse/github-actions-workflows\n  [share_googleplus]: https://plus.google.com/share?url=https://github.com/cloudposse/github-actions-workflows\n  [share_email]: mailto:?subject=github-actions-workflows\u0026body=https://github.com/cloudposse/github-actions-workflows\n  [beacon]: https://ga-beacon.cloudposse.com/UA-76589703-4/cloudposse/github-actions-workflows?pixel\u0026cs=github\u0026cm=readme\u0026an=github-actions-workflows\n\u003c!-- markdownlint-restore --\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisweluiz%2Fgithub-actions-reusable-workflows","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisweluiz%2Fgithub-actions-reusable-workflows","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisweluiz%2Fgithub-actions-reusable-workflows/lists"}