Skip to content

Commit d261ac2

Browse files
committed
ci: create scripts to push and pull env variables
1 parent 60f33a1 commit d261ac2

File tree

4 files changed

+104
-1
lines changed

4 files changed

+104
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ yarn-error.log*
2828
# local env files
2929
.env
3030
.env*.local
31+
.env.prod
3132

3233
# vercel
3334
.vercel

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"start": "next start",
1111
"format": "yarn prettier . --write --ignore-path ./.gitignore",
1212
"email-dev": "email dev",
13-
"typecheck": "tsc --noEmit"
13+
"typecheck": "tsc --noEmit",
14+
"vault:setup": "VAULT_ADDR=https://secrets.scottylabs.org vault login -method=oidc"
1415
},
1516
"dependencies": {
1617
"@clerk/nextjs": "^4.29.7",

scripts/vault-pull.sh

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/bin/bash
2+
export VAULT_ADDR=https://secrets.scottylabs.org
3+
4+
usage() {
5+
echo
6+
echo -e "\tUsage: $0 APPLICATION ENVIRONMENT\n"
7+
echo -e "\t\tENVIRONMENT: The environment to pull from, one of dev | prod | all\n"
8+
echo -e "\tOptions:"
9+
echo -e "\t\t-h, --help Show this help message and exit\n"
10+
}
11+
12+
# Parse arguments
13+
while [[ "$#" -gt 0 ]]; do
14+
case "$1" in
15+
-h | --help)
16+
usage
17+
exit 0
18+
;;
19+
*)
20+
ENVIRONMENT="$1"
21+
;;
22+
esac
23+
shift
24+
done
25+
26+
# Sanitizing the Environment argument
27+
if [ "$ENVIRONMENT" == "all" ]; then
28+
ENVIRONMENT=("dev" "prod")
29+
else
30+
case "$ENVIRONMENT" in
31+
"dev" | "prod")
32+
ENVIRONMENT=("$ENVIRONMENT")
33+
;;
34+
*)
35+
echo "Error: Invalid environment: '$ENVIRONMENT'" >&2
36+
usage
37+
exit 1
38+
;;
39+
esac
40+
fi
41+
42+
# Pulling from vault
43+
for ENV in "${ENVIRONMENT[@]}"; do
44+
ENV_FILE_SUFFIX=""
45+
if [ "$ENV" == "prod" ]; then
46+
ENV_FILE_SUFFIX=".prod"
47+
fi
48+
49+
vault kv get -format=json ScottyLabs/lostandfound/$ENV |
50+
jq -r '.data.data | to_entries[] | "\(.key)=\"\(.value)\""' >.env$ENV_FILE_SUFFIX
51+
done

scripts/vault-push.sh

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/bin/bash
2+
export VAULT_ADDR=https://secrets.scottylabs.org
3+
4+
usage() {
5+
echo
6+
echo -e "\tUsage: $0 ENVIRONMENT\n"
7+
echo -e "\t\tENVIRONMENT: The environment to push to, one of dev | prod\n"
8+
echo -e "\tOptions:"
9+
echo -e "\t\t-h, --help Show this help message and exit\n"
10+
}
11+
12+
# Parse arguments
13+
while [[ "$#" -gt 0 ]]; do
14+
case "$1" in
15+
-h | --help)
16+
usage
17+
exit 0
18+
;;
19+
*)
20+
ENVIRONMENT="$1"
21+
;;
22+
esac
23+
shift
24+
done
25+
26+
# Sanitizing the Environment argument
27+
if [ "$ENVIRONMENT" == "all" ]; then
28+
ENVIRONMENT=("dev" "prod")
29+
else
30+
case "$ENVIRONMENT" in
31+
"dev" | "prod")
32+
ENVIRONMENT=($ENVIRONMENT)
33+
;;
34+
*)
35+
echo "Error: Invalid environment: '$ENVIRONMENT'" >&2
36+
usage
37+
exit 1
38+
;;
39+
esac
40+
fi
41+
42+
# Pushing to vault
43+
for ENV in "${ENVIRONMENT[@]}"; do
44+
ENV_FILE_SUFFIX=""
45+
if [ "$ENV" == "prod" ]; then
46+
ENV_FILE_SUFFIX=".prod"
47+
fi
48+
49+
cat .env$ENV_FILE_SUFFIX | xargs -r vault kv put -mount="ScottyLabs" "lostandfound/$ENV"
50+
done

0 commit comments

Comments
 (0)