npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

tailored-gitlab-env

v1.1.1

Published

Small helper library for setting environment variables based on other, branch name prefixed env vars

Downloads

42

Readme

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"