-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJustfile
More file actions
163 lines (140 loc) · 4.47 KB
/
Justfile
File metadata and controls
163 lines (140 loc) · 4.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# Set default variables
registry := "ghcr.io"
github_user := env_var_or_default("GITHUB_USER",
"dictybase-docker")
ghcr_image := registry + "/" + github_user + "/arangoadmin"
platforms := "linux/amd64,linux/arm64"
dockerfile := "Dockerfile"
tag := "latest"
# Display help
help:
@just --list
# Build for single architecture (default: linux/amd64)
@build arch="linux/amd64":
echo "Building for {{arch}}..."
docker buildx build \
--platform {{arch}} \
-f {{dockerfile}} \
--output type=oci \
.
# Build for all supported architectures (local only, no push)
build-all:
#!/usr/bin/env bash
set -e
echo "Building for all architectures: {{platforms}}"
docker buildx build \
--platform {{platforms}} \
-f {{dockerfile}} \
--output type=oci \
.
# Build and load to local Docker (only works with single architecture)
load arch="linux/amd64":
#!/usr/bin/env bash
set -e
echo "Building and loading for {{arch}}..."
docker buildx build \
--platform {{arch}} \
-f {{dockerfile}} \
-t {{ghcr_image}}:{{tag}} \
--load \
.
# Push single architecture to GHCR
push-ghcr-arch arch="linux/amd64" tag=tag:
#!/usr/bin/env bash
set -e
echo "Authenticating with GHCR..."
echo $GITHUB_REGISTRY_TOKEN | docker login {{registry}} -u {{github_user}} --password-stdin
echo "Building and pushing {{arch}} to {{ghcr_image}}:{{tag}}..."
docker buildx build \
--platform {{arch}} \
-f {{dockerfile}} \
-t {{ghcr_image}}:{{tag}} \
--push \
.
echo "✓ Successfully pushed {{arch}} image"
# Push all architectures to GHCR with manifest
push-ghcr tag=tag:
#!/usr/bin/env bash
set -e
echo "Authenticating with GHCR..."
echo $GITHUB_REGISTRY_TOKEN | docker login {{registry}} -u {{github_user}} --password-stdin
echo "Building and pushing all architectures to {{ghcr_image}}:{{tag}}..."
docker buildx build \
--platform {{platforms}} \
-f {{dockerfile}} \
-t {{ghcr_image}}:{{tag}} \
--push \
.
echo "✓ Successfully pushed all architectures"
echo "Image available at: {{ghcr_image}}:{{tag}}"
# Create buildx builder (required for multiarch builds)
setup-builder:
#!/usr/bin/env bash
set -e
builder_name="arangoadmin-builder"
if docker buildx ls | grep -q "^$builder_name"; then
echo "Builder '$builder_name' already exists"
else
echo "Creating buildx builder: $builder_name"
docker buildx create --name $builder_name --use
fi
echo "Inspecting builder..."
docker buildx ls
# Inspect current builder
inspect-builder:
docker buildx ls
@echo ""
docker buildx du
# Clean builder cache
clean-cache:
#!/usr/bin/env bash
builder=$(docker buildx ls | grep '\*' | awk '{print $1}')
if [ -n "$builder" ]; then
echo "Cleaning cache for builder: $builder"
docker buildx du --builder=$builder || true
docker buildx prune --builder=$builder --all --force
else
echo "No active builder found"
fi
# Full workflow: setup, build, and push
release tag="latest":
#!/usr/bin/env bash
set -e
echo "=== ArangoAdmin Release: {{tag}} ==="
# Check environment
if [ -z "$GITHUB_REGISTRY_TOKEN" ]; then
echo "Error: GITHUB_REGISTRY_TOKEN not set"
exit 1
fi
echo ""
echo "1. Setting up builder..."
just setup-builder
echo ""
echo "2. Building and pushing {{tag}}..."
just push-ghcr {{tag}}
echo ""
echo "=== Release complete! ==="
echo "Image: {{ghcr_image}}:{{tag}}"
# Verify authentication with GHCR
verify-auth:
#!/usr/bin/env bash
if [ -z "$GITHUB_REGISTRY_TOKEN" ]; then
echo "Error: GITHUB_REGISTRY_TOKEN not set"
exit 1
fi
echo "Testing GHCR authentication..."
echo $GITHUB_REGISTRY_TOKEN | docker login {{registry}} -u {{github_user}} --password-stdin
echo "✓ Successfully authenticated with GHCR"
# Show current configuration
config:
@echo "=== ArangoAdmin Docker Build Configuration ==="
@echo "Registry: {{registry}}"
@echo "User: {{github_user}}"
@echo "Image: {{ghcr_image}}"
@echo "Platforms: {{platforms}}"
@echo "Dockerfile: {{dockerfile}}"
@echo "Default Tag: {{tag}}"
@echo ""
@echo "Environment:"
@echo " GITHUB_USER: {{github_user}}"
@echo " GITHUB_REGISTRY_TOKEN: $([ -z \"$GITHUB_REGISTRY_TOKEN\" ] && echo 'NOT SET' || echo 'SET')"