Skip to content

Latest commit

 

History

History
74 lines (61 loc) · 3.21 KB

README.md

File metadata and controls

74 lines (61 loc) · 3.21 KB

actions-variable-groups

NOTICE: This Action is not meant for secure variables. Environment variables created as part of this Action will be injected into your Action's environment and will be available as plaintext in your Actions logs.

Actions Variable Groups is a GitHub Action that allows you to centrally store and manage common variables needed by your GitHub Actions. The Action will then inject the variables you have stored into your Actions environment at runtime.

This is an attempt to mimic non-secret Azure DevOps Variable Groups.

Setup

Variables are managed by creating one or more YAML files containing a single variables array, which contains one or more key/value pair objects. These files may be stored in a single file or directory in GitHub repository, or many directories, and a directory may contain one or more variable group files.

variables:
  - key: Key1
    value: Value1
  - key: Key2
    value: Value2

Usage

You may then consume the Action by adding the following to your GitHub Actions workflow, which will read in all variable group files and directories and inject them into your GitHub Actions environment. You may specify a ref using the @ syntax to check out a specific version. If you do not specify a ref, the default branch will be chosen.

Note: If you store your variables in a public or internal repository, you do not need to provide a token to use this actions.

steps:
  - uses: lindluni/actions-variable-groups@main
    with:
      org: <org hosting the repo with variable group files>
      repo: <repo containing the variable group files>
      token: <token with access to repo if it is not an internal rep>
      groups: |
        <path to a directory in the above repo containing variable group files>
        <path to a directory in the above repo containing variable group files versioned on a specific ref>@<branch/tag/commit>
        <path to a variable group file in the above repo>
        <path to a variable group file in the above repo versioned on a specific ref>@<branch/tag/commit>
        ...

Example

name: Inject Variables
on:
  pull:
jobs:
  name: Echo Environment
  runs-on: ubuntu-latest
  steps:
    - name: Inject Variables
      uses: lindluni/[email protected]
      with:
        org: lindluni
        repo: variable-groups
        groups: |
          projectAlpha/variables # This is a path in the lindluni/variable-groups repository, so all variable group files in the directory will be injected
          projectAlpha/variables@main # TSame as above, but references a specific version via branch
          projectBeta/variables/nodejs.yml # This is a file in the lindluni/variable-groups repository, so only variable groups in the file will be injected
          projectBeta/variables/[email protected] # Same as above, but references a specific version via tag
          projectGamma/variables/golang.yml # This is a file in the lindluni/variable-groups repository, so only variable groups in the file will be injected
          projectGamma/variables/golang.yml@9969a43ca477571f91073abf66dfceaf1d3d069a # Same as above, but references a specific version via commit
    - name: Print Environment
      run: env | sort