Skip to content

recommerce/aws-codepipeline-action

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Actions x AWS CodePipeline

This GitHub Actions will help you trigger a pipeline in your AWS CodePipeline - assumming you already have the pipeline. This will not create the pipeline for you.

Setup

AWS IAM

Create an IAM user with codepipeline:StartPipelineExecution permission. You may take and customize the IAM policy below as starter point. Note that I'm using "*" in the policy. For better security, you can limit the policy to only execute specific pipelines. You can read more about IAM for CodePipeline here.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:StartPipelineExecution"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

GitHub Secrets

After you create the IAM user with the right permission, add two variables below in your GitHub repository secrets area:

  • AWS_PIPELINE_ACCESS_KEY: the Access Key ID for the user that you just created
  • AWS_PIPELINE_SECRET_KEY: the Secret Key for the user that you just created

Usage

Basic Usage

Note:

  • Please check the latest available version here and replace it with X.X.X in the code examples below.

  • Identify in which AWS region your pipeline is located. Use that region name for aws-region key below. AWS regions list is available here.

jobs:
  deploy:
    steps:
      - name: Trigger AWS CodePipeline
        uses: zulhfreelancer/[email protected]
        with:
          aws-region: "ap-southeast-1"
          aws-access-key: ${{ secrets.AWS_PIPELINE_ACCESS_KEY }}
          aws-secret-key: ${{ secrets.AWS_PIPELINE_SECRET_KEY }}
          pipeline-name: "your-pipeline-name"

Advance Usage

Below is the example for situation where:

  • You only want to trigger the pipeline if previous job was successful
  • You only want to trigger the pipeline if the Git branch that GitHub Actions currently running is a specific branch
jobs:
  job1:
    ... code for job1 ...
  deploy:
    needs: job1
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Trigger AWS CodePipeline
        uses: zulhfreelancer/[email protected]
        if: github.ref == 'refs/heads/your-branch-name'
        with:
          aws-region: "ap-southeast-1"
          aws-access-key: ${{ secrets.AWS_PIPELINE_ACCESS_KEY }}
          aws-secret-key: ${{ secrets.AWS_PIPELINE_SECRET_KEY }}
          pipeline-name: "your-pipeline-name"

Optional - Fail the workflow if CodePipeline call returns an error

By default, only a log message is displayed if Codepipeline call returns an error, but the workflow is not marked as failed.

By setting the input fail-on-error to true (True or TRUE are also accepted), the Github workflow will be marked as failed, and will interrupt the workflow run.

Get the CodePipelineExecutionId

jobs:
  deploy:
    steps:
      - name: Trigger AWS CodePipeline
        id: aws-codepipeline
        uses: zulhfreelancer/[email protected]
        with:
          aws-region: "ap-southeast-1"
          aws-access-key: ${{ secrets.AWS_PIPELINE_ACCESS_KEY }}
          aws-secret-key: ${{ secrets.AWS_PIPELINE_SECRET_KEY }}
          pipeline-name: "your-pipeline-name"

      - name: Get the CodePipelineExecutionId
        run: echo "CodePipelineExecutionId is ${{ steps.aws-codepipeline.outputs.codepipeline-execution-id }}"
jobs:
  deploy:
    steps:
      - name: Trigger AWS CodePipeline
        uses: zulhfreelancer/[email protected]
        with:
          aws-region: "ap-southeast-1"
          aws-access-key: ${{ secrets.AWS_PIPELINE_ACCESS_KEY }}
          aws-secret-key: ${{ secrets.AWS_PIPELINE_SECRET_KEY }}
          pipeline-name: "your-pipeline-name"
          fail-on-error: "true"

Contribute

Feel free to fork and submit PRs for this project. I'm more than happy to review and merge it. If you have any questions regarding contributing, feel free to reach out to me on Twitter.

Compilation

Install vercel/ncc by running this command in your terminal.

npm i -g @vercel/ncc

Compile your index.js file.

ncc build index.js

You'll see a new dist/index.js file with your code and the compiled modules.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%