Lint your configuration file
Ensuring the accuracy of your configuration is vital for the GO Feature Flag to function as expected.
This is why we have introduced the go-feature-flag-lint
, a command line tool that validates whether a flag file can be parsed by GO Feature Flag.
tip
We recommend you to use this command line in your CI/CD pipelines to avoid any unforeseen issues.
Install the linter
Install using Homebrew (mac and linux)
brew tap thomaspoignant/homebrew-tap
brew install go-feature-flag-lint
Install using Scoop (windows)
scoop bucket add org https://github.com/go-feature-flag/scoop.git
scoop install go-feature-flag-lint
Install using Docker
docker pull thomaspoignant/go-feature-flag-lint:latest
Use the linter
./go-feature-flag-lint \
--input-format=yaml \
--input-file=/input/my-go-feature-flag-config.goff.yaml
The command line has 2 arguments you should specify.
param | description |
---|---|
--input-file | (mandatory) The location of your configuration file. |
--input-format | (mandatory) The format of your current configuration file. Available formats are yaml , json , toml . |
Use the linter in your CI (continuous integration)
You can run go-feature-flag-lint
directly in your CI:
- Github Action
- CircleCi
- Gitlab
name: "Build"
on:
push:
branches:
- main
pull_request:
types: [ opened, synchronize, reopened ]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lint the config file
uses: go-feature-flag/gofeatureflag-lint-action@v1
with:
flag-file: ./path/to/your/config.yaml
format: yaml
version: 2.1
jobs:
build:
docker:
- image: cimg/base:2022.05
steps:
- checkout
- run: curl -L $(curl -s https://api.github.com/repos/thomaspoignant/go-feature-flag/releases/latest | jq -r '.assets[] | select(.name|match("Linux_x86_64.tar.gz$")) | .browser_download_url' | grep 'go-feature-flag-lint') --output release.tar.gz && tar -zxvf release.tar.gz
- run: ./go-feature-flag-lint --input-format=yaml --input-file=flag-config.goff.yaml # please put the right file name
image: ubuntu
lint-job:
stage: build
before_script:
- apt-get -qq update
- apt-get install -y jq curl
script:
- curl -L $(curl -s https://api.github.com/repos/thomaspoignant/go-feature-flag/releases/latest | jq -r '.assets[] | select(.name|match("Linux_x86_64.tar.gz$")) | .browser_download_url' | grep 'go-feature-flag-lint') --output release.tar.gz && tar -zxvf release.tar.gz
- ./go-feature-flag-lint --input-format=yaml --input-file=flag-config.goff.yaml # please put the right file name