Not Particularly Meaningful

    tailored-gitlab-env

    1.1.1 • Public • Published

    tailored-gitlab-env

    This is a small helper library used by tailored apps in gitlab CI pipelines for frontend applications. Since gitlab does not currently support branch specific environment variables, but frontend builds often need to know various branch-specific things at build time (e.g. an API base URL that has a different value in a dev build than in a stage or prod build), a bandaid solution is to prefix gitlab env vars with the branch name (e.g. DEVELOP_API_BASE_URL, STAGE_API_BASE_URL, MASTER_API_BASE_URL).

    However, since frontend code should be as environment agnostic as possible, and since we use node-config for config management, our goal was to simply read configuration from a predefined set of unchanging environment variables when building an app (e.g. API_BASE_URL).

    This script will generate a list of bash export statements for each variable in a custom-environment-variables.yml file and a supplied prefix. Each variable found in the YML file with a correspondingly prefixed variable in the current environment will generate one export statement.

    Installation

    npm install -g tailored-gitlab-env
    

    Usage

    [gitlab-ci@some-runner] $ eval "`ta-gitlab-env --yml-file=/path/to/custom-environment-variables.yml --prefix=prefix_string --fallback=fallback_prefix`"
    

    Note the double quotes around the command - this makes sure newlines, which this script uses to separate commands, are passed to eval correctly.

    fallback_prefix will be used if the prefix supplied via --prefix did not produce any output. This can be used, for instance, to set prefix to $CI_BUILD_REF_NAME (i.e. branch- or tag name) in gitlab CI and fallback to master. What this will achieve is that, for instance, tag builds will use values from master (since you'll likely not want to define a set of prefixed vars for each and every tag).

    Example

    custom-environment-variables.yml

    port: PORT
     
    api:
      baseUrl: API_BASE_URL
      token: API_TOKEN
     
    admin:
      defaultPassword: DEFAULT_ADMIN_PASSWORD

    Process environment:

    MASTER_API_BASE_URL=https://prod.my.api/v1
    STAGE_API_BASE_URL=https://stage.my.api/v1
    DEVELOP_API_BASE_URL=https://dev.my.api/v1
    MASTER_API_TOKEN=very_secret
    STAGE_API_TOKEN=also_secret
    DEVELOP_API_TOKEN=not_so_secret
    DEVELOP_PORT=6000
    

    Output

    ta-gitlab-env --yml-file=/path/to/custom-environment-variables.yml --prefix=master
    
    export API_BASE_URL="https://prod.my.api/v1"
    export API_TOKEN="very_secret"
    
    ta-gitlab-env --yml-file=/path/to/custom-environment-variables.yml --prefix=stage
    
    export API_BASE_URL="https://stage.my.api/v1"
    export API_TOKEN="also_secret"
    
    ta-gitlab-env --yml-file=/path/to/custom-environment-variables.yml --prefix=develop
    
    export API_BASE_URL="https://dev.my.api/v1"
    export API_TOKEN="also_secret"
    export PORT="6000"
    

    Keywords

    none

    Install

    npm i tailored-gitlab-env

    DownloadsWeekly Downloads

    122

    Version

    1.1.1

    License

    ISC

    Last publish

    Collaborators

    • dabls
    • tailoredapps