An open API service indexing awesome lists of open source software.

https://github.com/andreijiroh-dev/dotenvx-secretstore

A git-backed experiment with using dotenvx for managing CI/prod secrets.
https://github.com/andreijiroh-dev/dotenvx-secretstore

Last synced: 4 months ago
JSON representation

A git-backed experiment with using dotenvx for managing CI/prod secrets.

Awesome Lists containing this project

README

          

# `@ajhalili2006/dotenvx-secretstore`

A git-backed experiment with using dotenvx for managing CI/prod secrets. Kinda
similar to using `gopass`, but without the GPG/SSH key wrangling and web-based
dashboard chaos.

## Related projects

* [`dotenv-tools`](./tools/) - CLI tool to manage repositories like tbis one (accessible locally via `npm run cli` at project root directory)
* [`dotenv-keys` shell hook and function](./contrib/shell-hooks/)
* [GitHub Actions integration](https://github.com/andreijiroh-dev/dotenvx-action)

## Rationale

I am currently a Doppler user for safekeeping secrets, but plan to switch to
`dotenvx` and use plain git for audit logs. The plan is simple or complex
depending on who asked. In a nutshell:

* Store `.env` files in a central repository like this for auditing and ease of management
* Store the private keys securely in Doppler or straight to CI secrets setting.
* In each CI job, pull project-specifics and load them using `dotenvx` cli

## Requirements

* `dotenvx` cli for setup and maintenance (also accessible via `dotenv-tools dotenvx`)
* basically `git` for everything else and `bash` + `nodejs` for the tools here

## Usage

### First Use Setup

```bash
# install dotenvx (optional)
curl -fsSL https://scripts.andreijiroh.xyz/tools/dotenvx | bash -s -- --directory=$HOME/.local/bin

# setup project-specifics
npm run cli -- projects add [--copy-ci-secrets|--commit]

# push to project's .env file, optionally
npm run cli -- secrets push --repo-path=/path/to/local-copy [--upload-dotenv-keys=|--no-commit] [optional-env-file]
```

### Managing secrets

```bash
cd projects/ # or stay in root directory for meta

# add a secret via dotenvx
dotenvx set [-f .env.ci [--plain] --] NAME somerandomtexthere

# push to repo to sync
./bin/push-secrets --repo-path=/path/to/local-copy [--upload-dotenv-keys=|--no-commit] [optional-env-file]
```