Travis CI
Load KeyEnv secrets in Travis CI builds.
Travis CI Integration
Load KeyEnv secrets in your Travis CI builds.
Prerequisites
- Travis CI account connected to your repository
- KeyEnv service token with read access
Setup
1. Add Your Token
- Go to your repository settings in Travis CI
- Navigate to Environment Variables
- Add
KEYENV_TOKENwith your service token - Ensure Display value in build log is OFF
2. Configure .travis.yml
language: node_js
node_js:
- "20"
before_install:
- curl -fsSL https://keyenv.dev/install.sh | bash
- export PATH="$HOME/.keyenv/bin:$PATH"
script:
- keyenv run -p YOUR_PROJECT_ID -e $TRAVIS_BRANCH -- npm ci
- keyenv run -p YOUR_PROJECT_ID -e $TRAVIS_BRANCH -- npm test
deploy:
provider: script
script: keyenv run -p YOUR_PROJECT_ID -e production -- npm run deploy
on:
branch: mainEnvironment Mapping
Map Travis CI branches to KeyEnv environments:
env:
global:
- KEYENV_PROJECT=your-project-id
before_script:
- |
case "$TRAVIS_BRANCH" in
main)
export KEYENV_ENV=production
;;
staging)
export KEYENV_ENV=staging
;;
*)
export KEYENV_ENV=development
;;
esac
script:
- keyenv run -p $KEYENV_PROJECT -e $KEYENV_ENV -- npm testBuild Stages
stages:
- test
- name: deploy
if: branch = main
jobs:
include:
- stage: test
script:
- keyenv run -p YOUR_PROJECT_ID -e development -- npm test
- stage: deploy
script:
- keyenv run -p YOUR_PROJECT_ID -e production -- npm run deployPull Secrets to .env File
before_script:
- keyenv pull -p YOUR_PROJECT_ID -e $KEYENV_ENV -o .env
script:
- source .env
- npm testMatrix Builds
Test across multiple environments:
jobs:
include:
- name: "Test Development"
env: KEYENV_ENV=development
- name: "Test Staging"
env: KEYENV_ENV=staging
script:
- keyenv run -p YOUR_PROJECT_ID -e $KEYENV_ENV -- npm testDocker Builds
services:
- docker
script:
- |
eval $(keyenv export -p YOUR_PROJECT_ID -e production --format shell)
docker build \
--build-arg DATABASE_URL=$DATABASE_URL \
--build-arg API_KEY=$API_KEY \
-t myapp:$TRAVIS_COMMIT .Caching CLI Installation
Speed up builds by caching the CLI:
cache:
directories:
- $HOME/.keyenv
before_install:
- |
if [ ! -f "$HOME/.keyenv/bin/keyenv" ]; then
curl -fsSL https://keyenv.dev/install.sh | bash
fi
- export PATH="$HOME/.keyenv/bin:$PATH"Pull Requests
For PR builds, use a development environment:
script:
- |
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
KEYENV_ENV=development
else
KEYENV_ENV=$TRAVIS_BRANCH
fi
keyenv run -p YOUR_PROJECT_ID -e $KEYENV_ENV -- npm testEncrypted Environment Variables
If you prefer to encrypt your token in .travis.yml:
# Install Travis CLI
gem install travis
# Encrypt your token
travis encrypt KEYENV_TOKEN=your-token --addThis adds to your .travis.yml:
env:
global:
secure: "encrypted-string..."Full Example
language: node_js
node_js:
- "20"
cache:
directories:
- node_modules
- $HOME/.keyenv
env:
global:
- KEYENV_PROJECT=your-project-id
before_install:
- |
if [ ! -f "$HOME/.keyenv/bin/keyenv" ]; then
curl -fsSL https://keyenv.dev/install.sh | bash
fi
- export PATH="$HOME/.keyenv/bin:$PATH"
before_script:
- |
case "$TRAVIS_BRANCH" in
main) KEYENV_ENV=production ;;
staging) KEYENV_ENV=staging ;;
*) KEYENV_ENV=development ;;
esac
echo "Using KeyEnv environment: $KEYENV_ENV"
script:
- keyenv run -p $KEYENV_PROJECT -e $KEYENV_ENV -- npm ci
- keyenv run -p $KEYENV_PROJECT -e $KEYENV_ENV -- npm test
- keyenv run -p $KEYENV_PROJECT -e $KEYENV_ENV -- npm run build
deploy:
provider: script
script: keyenv run -p $KEYENV_PROJECT -e production -- npm run deploy
on:
branch: main
skip_cleanup: trueTroubleshooting
Token Not Found
Ensure the variable is set in Travis CI settings and is accessible:
script:
- echo "Token set: $([ -n "$KEYENV_TOKEN" ] && echo 'yes' || echo 'no')"CLI Installation Fails
Try an alternative installation method:
before_install:
- npm install -g @keyenv/cliSecrets Not Loading
Verify the project and environment exist:
script:
- keyenv whoami
- keyenv projects list