Skip to content

Warning

You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?

Select target action

Actions
Configure the matrix job directory in GitHub Label
v0.4.0
Star (4)

select-target-action

Configure the matrix job directory in GitHub Label.

Setup

1. Create configuration file

Create a json file in the following format. Specify the label name as key and target directory as value.
The config file name or directory can be specified, but .deploy_target.json is used by default.

{
    "target:develop": [
        "envs/development"
    ],
    "target:staging": [
        "envs/staging"
    ],
    "target:production": [
        "envs/production"
    ],
    "target:all" : [
        "envs/development",
        "envs/staging",
        "envs/production"
    ]
}

2. Create GitHub Labels

CUI

If the jq and gh commands are installed, the following commands are useful.

export REPO=<OWNER>/<REPO_NAME>
export COLOR=5319E7
cat .deploy_target.json | jq -r 'keys | .[]' | xargs -I @ gh label create @ --color $COLOR --repo $REPO

ref. https://cli.github.com/manual/gh_label_create

Example

$ cat .deploy_target.json | jq -r 'keys | .[]' | xargs -I @ gh label create @ --color $COLOR --repo $REPO
✓ Label "target:all" created in ponkio-o/select-target-action
✓ Label "target:develop" created in ponkio-o/select-target-action
✓ Label "target:production" created in ponkio-o/select-target-action
✓ Label "target:staging" created in ponkio-o/select-target-action

GUI

Please refer to following doc.
https://docs.github.com/en/issues/using-labels-and-milestones-to-track-work/managing-labels#creating-a-label

3. Setup Workflow

GitHub Actions are configured as follows:

name: Terraform PR check

on:
  pull_request:
    types: [opened]
    branches:
      - main

jobs:
  set-matrix:
    name: Set matrix job
    runs-on: ubuntu-latest

    outputs:
      workdir: ${{ steps.set_matrix.outputs.matrix-workdir }}

    steps:
      - name: checkout
        uses: actions/checkout@v3

      - name: Set matrix
        id: set_matrix
        uses: ponkio-o/select-target-action@main

  plan:
    needs: [set-matrix]
    name: Plan
    runs-on: ubuntu-latest

    strategy:
      matrix:
        workdir: ${{fromJson(needs.set-matrix.outputs.workdir)}}

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Setup terraform
        uses: hashicorp/setup-terraform@v1

      - name: Terraform plan
        working-directory: ${{ matrix.workdir }}
        run: terraform plan -input=false -no-color
...

Usage

The directories set in the key of the given label are merged and returned as an array.

Deployment

Assign labels to the Pull Request. You can also select multiple labels.

Example: target:all

image

Example: target:develop & target:staging

image

Example: target:all & target:staging

image

Default Target

If you have directories that you want to run by default, you can set them to the "default" key. It can be used in conjunction with other labels, and if valid labels are selected, it will take precedence.

{
    "default" : [
        "envs/development",
        "envs/staging",
        "envs/production"
    ]
}

Inputs

All inputs are optional.

Name Description Default
config_file Path to configuration file .deploy_target.json
token GITHUB_TOKEN or PersonalAccessToken(PAT) GITHUB_TOKEN

Outputs

The working directory outputs as an array.

["envs/dev","envs/stg","envs/prod"]

Select target action is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

Configure the matrix job directory in GitHub Label
v0.4.0

Select target action is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.