Skip to content

Commit 3c6d8bd

Browse files
authored
Merge pull request #107 from SentriusLLC/copilot/remove-env-file-reliance
Remove version tracking for local Docker builds, use :latest tag
2 parents dbb7153 + 33a58c9 commit 3c6d8bd

File tree

6 files changed

+211
-33
lines changed

6 files changed

+211
-33
lines changed

.env

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# DEPRECATED: This file is a legacy reference file.
2+
# For local builds: versions are no longer tracked, :latest is used automatically
3+
# For GCP builds: use .gcp.env instead
14
SENTRIUS_VERSION=1.1.62
25
SENTRIUS_SSH_VERSION=1.1.16
36
SENTRIUS_KEYCLOAK_VERSION=1.1.18

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ package-lock.json
4848

4949
.settings/*
5050
.env.bak
51+
.local.env.bak
52+
.gcp.env.bak
5153
cp.env.bak
5254
.generated.env
5355
api/node_modules/

.local.env

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
SENTRIUS_VERSION=1.1.523
1+
# DEPRECATED: This file is no longer used for local builds.
2+
# Local builds now use :latest tag automatically.
3+
# This file is kept for backward compatibility only.
4+
SENTRIUS_VERSION=1.1.507
25
SENTRIUS_SSH_VERSION=1.1.45
36
SENTRIUS_KEYCLOAK_VERSION=1.1.64
47
SENTRIUS_AGENT_VERSION=1.1.51

docs/version-management.md

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# Version Management Changes
2+
3+
## Overview
4+
5+
The version tracking system for Docker images has been simplified for local development. This document explains the changes and how to use the new system.
6+
7+
## What Changed
8+
9+
### Before
10+
- `.local.env` file tracked version numbers for all Docker images
11+
- Every local build incremented the version number
12+
- Version numbers were stored and tracked in version control
13+
14+
### After
15+
- Local builds now always use `:latest` tag
16+
- No version tracking needed for local development
17+
- `.local.env` is deprecated for local builds (kept for backward compatibility)
18+
- `.gcp.env` still tracks versions for GCP deployments
19+
20+
## Benefits
21+
22+
1. **Simplified Development**: No need to track version numbers during local development
23+
2. **Cleaner Git History**: No more version number updates cluttering commits
24+
3. **Easier Collaboration**: No conflicts from version number changes
25+
4. **Consistent with Docker Best Practices**: Using `:latest` for local dev is standard
26+
27+
## Usage
28+
29+
### Building Images Locally
30+
31+
```bash
32+
# Build a single image (always uses :latest)
33+
./ops-scripts/base/build-images.sh local --sentrius
34+
35+
# Build all images (always uses :latest)
36+
./ops-scripts/base/build-images.sh local --all
37+
```
38+
39+
### Deploying Locally
40+
41+
```bash
42+
# Deploy to local Kubernetes (uses :latest tags)
43+
./ops-scripts/local/deploy-helm.sh
44+
```
45+
46+
### Building for GCP
47+
48+
```bash
49+
# Build for GCP (still uses version tracking from .gcp.env)
50+
./ops-scripts/base/build-images.sh gcp --sentrius
51+
52+
# Versions are automatically incremented and stored in .gcp.env
53+
```
54+
55+
## Migration Guide
56+
57+
If you have existing local deployments:
58+
59+
1. **No action required** - The changes are backward compatible
60+
2. Existing images with version tags will continue to work
61+
3. New builds will create `:latest` tags alongside any existing versioned images
62+
4. Next time you build, the `:latest` tag will be used
63+
64+
## File Reference
65+
66+
- `.env` - Legacy reference file (deprecated)
67+
- `.local.env` - Local version tracking (deprecated, kept for compatibility)
68+
- `.gcp.env` - GCP version tracking (still active and required for GCP deployments)
69+
- `.env.bak`, `.local.env.bak`, `.gcp.env.bak` - Backup files (gitignored)
70+
71+
## Technical Details
72+
73+
### Build Script Changes
74+
75+
The `build-images.sh` script now:
76+
1. Only loads `.env` file when building for GCP
77+
2. Sets version to "latest" for local builds before calling `build_image()`
78+
3. Skips version increment and env file updates for local builds
79+
80+
### Deploy Script Changes
81+
82+
The `deploy-helm.sh` script now:
83+
1. Sets all version variables to "latest" at startup
84+
2. Does not source `.local.env`
85+
3. Passes "latest" to all Helm `--set` commands for image tags
86+
87+
## Troubleshooting
88+
89+
### Images not found
90+
91+
If you get "image not found" errors:
92+
```bash
93+
# Rebuild the images
94+
./ops-scripts/base/build-images.sh local --all
95+
```
96+
97+
### Want to use specific versions locally
98+
99+
If you need specific versions for local testing, you can override via environment variables:
100+
```bash
101+
# Override a single service version
102+
SENTRIUS_VERSION="1.2.3" ./ops-scripts/local/deploy-helm.sh
103+
104+
# Override multiple service versions
105+
SENTRIUS_VERSION="1.2.3" SENTRIUS_SSH_VERSION="1.1.5" ./ops-scripts/local/deploy-helm.sh
106+
```
107+
108+
Or pass it directly to helm:
109+
```bash
110+
helm upgrade --install sentrius ./sentrius-chart \
111+
--set sentrius.image.tag=1.2.3 \
112+
...
113+
```

ops-scripts/base/build-images.sh

Lines changed: 76 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ if [[ "$1" == "local" || "$1" == "gcp" ]]; then
1515
shift
1616
fi
1717

18-
# --- Load and back up environment file ---
19-
ENV_FILE=".$ENV_TARGET.env"
20-
source "$ENV_FILE"
21-
cp "$ENV_FILE" "$ENV_FILE.bak"
18+
# --- Load environment file only for GCP (versions needed for registry) ---
19+
if [[ "$ENV_TARGET" == "gcp" ]]; then
20+
ENV_FILE=".$ENV_TARGET.env"
21+
source "$ENV_FILE"
22+
cp "$ENV_FILE" "$ENV_FILE.bak"
23+
fi
2224

2325
# --- Minikube Docker context ---
2426
if [[ "$ENV_TARGET" == "local" ]]; then
@@ -65,6 +67,11 @@ build_image() {
6567
local version=$2
6668
local context_dir=$3
6769

70+
# For local builds, always use 'latest' tag
71+
if [[ "$ENV_TARGET" == "local" ]]; then
72+
version="latest"
73+
fi
74+
6875
echo "Building $name:$version..."
6976
prepare_docker_context "$context_dir"
7077

@@ -97,7 +104,6 @@ build_image() {
97104
docker push "$REGISTRY/$name:$version"
98105
echo "✅ Pushed $REGISTRY/$name:$version"
99106
else
100-
docker tag "$name:$version" "$name:latest"
101107
echo "✅ Built locally: $name:$version"
102108
fi
103109

@@ -109,6 +115,11 @@ build_keycloak_image() {
109115
local version=$2
110116
local context_dir=$3
111117

118+
# For local builds, always use 'latest' tag
119+
if [[ "$ENV_TARGET" == "local" ]]; then
120+
version="latest"
121+
fi
122+
112123
echo "Building $name:$version..."
113124
prepare_docker_context "$context_dir"
114125

@@ -155,7 +166,6 @@ build_keycloak_image() {
155166
docker push "$REGISTRY/$name:$version"
156167
echo "✅ Pushed $REGISTRY/$name:$version"
157168
else
158-
docker tag "$name:$version" "$name:latest"
159169
echo "✅ Built locally: $name:$version"
160170
fi
161171

@@ -204,38 +214,58 @@ fi
204214
# --- Build Steps ---
205215
if $update_sentrius; then
206216
cp api/target/sentrius-api-*.jar docker/sentrius/sentrius.jar
207-
SENTRIUS_VERSION=$(increment_patch_version $SENTRIUS_VERSION)
217+
if [[ "$ENV_TARGET" == "gcp" ]]; then
218+
SENTRIUS_VERSION=$(increment_patch_version $SENTRIUS_VERSION)
219+
update_env_var "SENTRIUS_VERSION" "$SENTRIUS_VERSION"
220+
else
221+
SENTRIUS_VERSION="latest"
222+
fi
208223
build_image "sentrius" "$SENTRIUS_VERSION" "${SCRIPT_DIR}/../../docker/sentrius/"
209224
rm docker/sentrius/sentrius.jar
210-
update_env_var "SENTRIUS_VERSION" "$SENTRIUS_VERSION"
211225
fi
212226

213227
if $update_sentrius_ssh; then
214-
SENTRIUS_SSH_VERSION=$(increment_patch_version $SENTRIUS_SSH_VERSION)
228+
if [[ "$ENV_TARGET" == "gcp" ]]; then
229+
SENTRIUS_SSH_VERSION=$(increment_patch_version $SENTRIUS_SSH_VERSION)
230+
update_env_var "SENTRIUS_SSH_VERSION" "$SENTRIUS_SSH_VERSION"
231+
else
232+
SENTRIUS_SSH_VERSION="latest"
233+
fi
215234
build_image "sentrius-ssh" "$SENTRIUS_SSH_VERSION" "${SCRIPT_DIR}/../../docker/fake-ssh"
216-
update_env_var "SENTRIUS_SSH_VERSION" "$SENTRIUS_SSH_VERSION"
217235
fi
218236

219237
if $update_sentrius_keycloak; then
220-
SENTRIUS_KEYCLOAK_VERSION=$(increment_patch_version $SENTRIUS_KEYCLOAK_VERSION)
238+
if [[ "$ENV_TARGET" == "gcp" ]]; then
239+
SENTRIUS_KEYCLOAK_VERSION=$(increment_patch_version $SENTRIUS_KEYCLOAK_VERSION)
240+
update_env_var "SENTRIUS_KEYCLOAK_VERSION" "$SENTRIUS_KEYCLOAK_VERSION"
241+
else
242+
SENTRIUS_KEYCLOAK_VERSION="latest"
243+
fi
221244
build_keycloak_image "sentrius-keycloak" "$SENTRIUS_KEYCLOAK_VERSION" "${SCRIPT_DIR}/../../docker/keycloak"
222-
update_env_var "SENTRIUS_KEYCLOAK_VERSION" "$SENTRIUS_KEYCLOAK_VERSION"
223245
fi
224246

225247
if $update_sentrius_agent; then
226248
cp analytics/target/analytics-*.jar docker/sentrius-agent/agent.jar
227-
SENTRIUS_AGENT_VERSION=$(increment_patch_version $SENTRIUS_AGENT_VERSION)
249+
if [[ "$ENV_TARGET" == "gcp" ]]; then
250+
SENTRIUS_AGENT_VERSION=$(increment_patch_version $SENTRIUS_AGENT_VERSION)
251+
update_env_var "SENTRIUS_AGENT_VERSION" "$SENTRIUS_AGENT_VERSION"
252+
else
253+
SENTRIUS_AGENT_VERSION="latest"
254+
fi
228255
build_image "sentrius-agent" "$SENTRIUS_AGENT_VERSION" "${SCRIPT_DIR}/../../docker/sentrius-agent"
229256
rm docker/sentrius-agent/agent.jar
230-
update_env_var "SENTRIUS_AGENT_VERSION" "$SENTRIUS_AGENT_VERSION"
231257
fi
232258

233259
if $update_sentrius_ai_agent; then
234260
cp ai-agent/target/ai-agent-*.jar docker/sentrius-ai-agent/agent.jar
235-
SENTRIUS_AI_AGENT_VERSION=$(increment_patch_version $SENTRIUS_AI_AGENT_VERSION)
261+
if [[ "$ENV_TARGET" == "gcp" ]]; then
262+
SENTRIUS_AI_AGENT_VERSION=$(increment_patch_version $SENTRIUS_AI_AGENT_VERSION)
263+
update_env_var "SENTRIUS_AI_AGENT_VERSION" "$SENTRIUS_AI_AGENT_VERSION"
264+
else
265+
SENTRIUS_AI_AGENT_VERSION="latest"
266+
fi
236267
build_image "sentrius-ai-agent" "$SENTRIUS_AI_AGENT_VERSION" "${SCRIPT_DIR}/../../docker/sentrius-ai-agent"
237268
rm docker/sentrius-ai-agent/agent.jar
238-
update_env_var "SENTRIUS_AI_AGENT_VERSION" "$SENTRIUS_AI_AGENT_VERSION"
239269

240270
cp ai-agent/target/ai-agent-*.jar docker/sentrius-launchable-agent/agent.jar
241271
build_image "sentrius-launchable-agent" "$SENTRIUS_AI_AGENT_VERSION" "${SCRIPT_DIR}/../../docker/sentrius-launchable-agent"
@@ -244,40 +274,60 @@ fi
244274

245275
if $update_integrationproxy; then
246276
cp integration-proxy/target/sentrius-integration-proxy-*.jar docker/integrationproxy/llmproxy.jar
247-
LLMPROXY_VERSION=$(increment_patch_version $LLMPROXY_VERSION)
277+
if [[ "$ENV_TARGET" == "gcp" ]]; then
278+
LLMPROXY_VERSION=$(increment_patch_version $LLMPROXY_VERSION)
279+
update_env_var "LLMPROXY_VERSION" "$LLMPROXY_VERSION"
280+
else
281+
LLMPROXY_VERSION="latest"
282+
fi
248283
build_image "sentrius-integration-proxy" "$LLMPROXY_VERSION" "${SCRIPT_DIR}/../../docker/integrationproxy"
249284
rm docker/integrationproxy/llmproxy.jar
250-
update_env_var "LLMPROXY_VERSION" "$LLMPROXY_VERSION"
251285
fi
252286

253287
if $update_launcher; then
254288
cp agent-launcher/target/agent-launcher-*.jar docker/sentrius-launcher-service/launcher.jar
255-
LAUNCHER_VERSION=$(increment_patch_version $LAUNCHER_VERSION)
289+
if [[ "$ENV_TARGET" == "gcp" ]]; then
290+
LAUNCHER_VERSION=$(increment_patch_version $LAUNCHER_VERSION)
291+
update_env_var "LAUNCHER_VERSION" "$LAUNCHER_VERSION"
292+
else
293+
LAUNCHER_VERSION="latest"
294+
fi
256295
build_image "sentrius-launcher-service" "$LAUNCHER_VERSION" "${SCRIPT_DIR}/../../docker/sentrius-launcher-service"
257296
rm docker/sentrius-launcher-service/launcher.jar
258-
update_env_var "LAUNCHER_VERSION" "$LAUNCHER_VERSION"
259297
fi
260298

261299
if $update_agent_proxy; then
262300
cp agent-proxy/target/sentrius-agent-proxy-*.jar docker/agent-proxy/agentproxy.jar
263-
AGENTPROXY_VERSION=$(increment_patch_version $AGENTPROXY_VERSION)
301+
if [[ "$ENV_TARGET" == "gcp" ]]; then
302+
AGENTPROXY_VERSION=$(increment_patch_version $AGENTPROXY_VERSION)
303+
update_env_var "AGENTPROXY_VERSION" "$AGENTPROXY_VERSION"
304+
else
305+
AGENTPROXY_VERSION="latest"
306+
fi
264307
build_image "sentrius-agent-proxy" "$AGENTPROXY_VERSION" "${SCRIPT_DIR}/../../docker/agent-proxy"
265308
rm docker/agent-proxy/agentproxy.jar
266-
update_env_var "AGENTPROXY_VERSION" "$AGENTPROXY_VERSION"
267309
fi
268310

269311
if $update_ssh_proxy; then
270312
cp ssh-proxy/target/ssh-proxy-*.jar docker/ssh-proxy/sshproxy.jar
271-
SSHPROXY_VERSION=$(increment_patch_version $SSHPROXY_VERSION)
313+
if [[ "$ENV_TARGET" == "gcp" ]]; then
314+
SSHPROXY_VERSION=$(increment_patch_version $SSHPROXY_VERSION)
315+
update_env_var "SSHPROXY_VERSION" "$SSHPROXY_VERSION"
316+
else
317+
SSHPROXY_VERSION="latest"
318+
fi
272319
build_image "sentrius-ssh-proxy" "$SSHPROXY_VERSION" "${SCRIPT_DIR}/../../docker/ssh-proxy"
273320
rm docker/ssh-proxy/sshproxy.jar
274-
update_env_var "SSHPROXY_VERSION" "$SSHPROXY_VERSION"
275321
fi
276322

277323
if $update_rdp_proxy; then
278324
cp rdp-proxy/target/rdp-proxy-*.jar docker/rdp-proxy/rdpproxy.jar
279-
RDPPROXY_VERSION=$(increment_patch_version $RDPPROXY_VERSION)
325+
if [[ "$ENV_TARGET" == "gcp" ]]; then
326+
RDPPROXY_VERSION=$(increment_patch_version $RDPPROXY_VERSION)
327+
update_env_var "RDPPROXY_VERSION" "$RDPPROXY_VERSION"
328+
else
329+
RDPPROXY_VERSION="latest"
330+
fi
280331
build_image "sentrius-rdp-proxy" "$RDPPROXY_VERSION" "${SCRIPT_DIR}/../../docker/rdp-proxy"
281332
rm docker/rdp-proxy/rdpproxy.jar
282-
update_env_var "RDPPROXY_VERSION" "$RDPPROXY_VERSION"
283333
fi

ops-scripts/local/deploy-helm.sh

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,19 @@ SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
44

55
source ${SCRIPT_DIR}/base.sh
66
source ${SCRIPT_DIR}/../base/base.sh
7-
source ${SCRIPT_DIR}/../../.local.env
7+
8+
# For local deployments, use 'latest' tag instead of versioned tags
9+
# These can be overridden via environment variables if needed
10+
SENTRIUS_VERSION="${SENTRIUS_VERSION:-latest}"
11+
SENTRIUS_SSH_VERSION="${SENTRIUS_SSH_VERSION:-latest}"
12+
SENTRIUS_KEYCLOAK_VERSION="${SENTRIUS_KEYCLOAK_VERSION:-latest}"
13+
SENTRIUS_AGENT_VERSION="${SENTRIUS_AGENT_VERSION:-latest}"
14+
SENTRIUS_AI_AGENT_VERSION="${SENTRIUS_AI_AGENT_VERSION:-latest}"
15+
LLMPROXY_VERSION="${LLMPROXY_VERSION:-latest}"
16+
LAUNCHER_VERSION="${LAUNCHER_VERSION:-latest}"
17+
AGENTPROXY_VERSION="${AGENTPROXY_VERSION:-latest}"
18+
SSHPROXY_VERSION="${SSHPROXY_VERSION:-latest}"
19+
RDPPROXY_VERSION="${RDPPROXY_VERSION:-latest}"
820

921
CERT_DIR="${SCRIPT_DIR}/../../docker/dev-certs"
1022
CERT_FILE="${CERT_DIR}/sentrius-ca.crt"
@@ -18,11 +30,6 @@ CERT_DIR="${SCRIPT_DIR}/../../docker/dev-certs"
1830
DEPLOY_ADMINER=${DEPLOY_ADMINER:-false}
1931
ENABLE_RDP_CONTAINER=${ENABLE_RDP_CONTAINER:-true}
2032

21-
# --- Load and back up environment file ---
22-
ENV_FILE="${SCRIPT_DIR}/../../.$ENV_TARGET.env"
23-
source "$ENV_FILE"
24-
cp "$ENV_FILE" "$ENV_FILE.bak"
25-
2633
(source ${SCRIPT_DIR}/../base/generate-secrets.sh)
2734

2835
GENERATED_ENV_PATH="${SCRIPT_DIR}/../../.generated.env"

0 commit comments

Comments
 (0)