Skip to content

Commit 171e19e

Browse files
Add more directives
1 parent 3ab7328 commit 171e19e

File tree

1 file changed

+87
-47
lines changed

1 file changed

+87
-47
lines changed

justfile

Lines changed: 87 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@
44
set dotenv-load
55

66
# set env var
7-
export APP := "compose_image_name"
7+
export APP := `echo ${APP_NAME}`
88
export CPU := "2"
9-
export IMAGE := `echo ${REGISTRY_URL}`
9+
export IMAGE := `echo ${IMAGE}`
1010
export MEM := "2048"
1111
export NS := "default"
1212
export PROF := "minikube"
1313
export SHELL := "/bin/bash"
14+
export SCRIPT := "harden"
15+
export SHELL := "/bin/bash"
16+
export TAG := `echo ${TAG}`
1417
VERSION := `cat VERSION`
1518

1619
# x86_64/arm64
@@ -23,6 +26,7 @@ host := `uname -n`
2326
default:
2427
just --list
2528

29+
# TODO: setup tilt
2630
# [devspace] start minikube + devspace
2731
start-devspace:
2832
#!/usr/bin/env bash
@@ -39,74 +43,110 @@ start-devspace:
3943
stop-devspace:
4044
minikube stop -p {{PROF}}
4145

42-
# [docker] build locally
43-
build:
44-
#!/usr/bin/env bash
45-
# set -euxo pipefail
46+
# docker-compose / docker compose
47+
# * https://docs.docker.com/compose/install/linux/#install-using-the-repository
48+
docker-compose := if `command -v docker-compose; echo $?` == "0" {
49+
"docker-compose"
50+
} else {
51+
"docker compose"
52+
}
4653

47-
echo "building ${APP_NAME}:${TAG}"
54+
# [halp] list available commands
55+
default:
56+
just --list
4857

49-
if [[ {{arch}} == "arm64" ]]; then
50-
docker build -f Dockerfile -t ${APP_NAME}:${TAG} --build-arg CHIPSET_ARCH=aarch64-linux-gnu .
58+
# [check] lint sh script
59+
checkbash:
60+
#!/usr/bin/env bash
61+
checkbashisms {{SCRIPT}}
62+
if [[ $? -eq 1 ]]; then
63+
echo "bashisms found. Exiting..."
64+
exit 1
5165
else
52-
docker build -f Dockerfile -t ${APP_NAME}:${TAG} --build-arg CHIPSET_ARCH=x86_64-linux-gnu .
66+
echo "No bashisms found"
5367
fi
5468

55-
echo "created tag ${APP_NAME}:${TAG} {{IMAGE}}/${APP_NAME}:${TAG}"
56-
57-
# [docker] intel build
58-
buildx:
59-
docker buildx build -f Dockerfile --progress=plain -t ${TAG} --build-arg CHIPSET_ARCH=x86_64-linux-gnu --load .
60-
61-
# [docker] build w/docker-compose defaults
62-
build-nc:
69+
# [docker] build locally or on intel box
70+
build: checkbash
6371
#!/usr/bin/env bash
64-
# set -euxo pipefail
72+
set -euxo pipefail
73+
if [[ {{arch}} == "arm64" ]]; then
74+
docker build -f Dockerfile -t {{APP}} --build-arg CHIPSET_ARCH=aarch64-linux-gnu .
75+
else
76+
docker build -f Dockerfile --progress=plain -t {{APP}} .
77+
fi
6578

79+
# [docker] arm build w/docker-compose defaults
80+
build-clean: checkbash
81+
#!/usr/bin/env bash
82+
set -euxo pipefail
6683
if [[ {{arch}} == "arm64" ]]; then
67-
docker-compose build --pull --no-cache --build-arg CHIPSET_ARCH=aarch64-linux-gnu
84+
{{docker-compose}} build --pull --no-cache --build-arg CHIPSET_ARCH=aarch64-linux-gnu --parallel
6885
else
69-
docker-compose build --pull --no-cache --build-arg CHIPSET_ARCH=x86_64-linux-gnu
86+
{{docker-compose}} build --pull --no-cache --parallel
7087
fi
7188

72-
# [docker] pull latest image
73-
pull:
74-
docker pull {{IMAGE}}/${APP_NAME}:${TAG}
89+
# [docker] login to registry (exit code 127 == 0)
90+
login:
91+
#!/usr/bin/env bash
92+
# set -euxo pipefail
93+
echo "Log into ${REGISTRY_URL} as ${USER_NAME}. Please enter your password: "
94+
cmd=$(docker login --username ${USER_NAME} ${REGISTRY_URL})
95+
if [[ $("$cmd" >/dev/null 2>&1; echo $?) -ne 127 ]]; then
96+
echo 'Not logged into Docker. Exiting...'
97+
exit 1
98+
fi
99+
100+
# [docker] tag image as latest
101+
tag-latest:
102+
docker tag {{APP}}:latest {{IMAGE}}/{{APP}}:latest
75103

76-
# [docker] run local image
77-
run: pull
78-
docker run -it --rm -v $(pwd):/app {{IMAGE}}/${APP_NAME}:${TAG} {{SHELL}}
104+
# [docker] tag latest image from VERSION file
105+
tag-version:
106+
@echo "create tag {{APP}}:{{VERSION}} {{IMAGE}}/{{APP}}:{{VERSION}}"
107+
docker tag {{APP}} {{IMAGE}}/{{APP}}:{{VERSION}}
108+
109+
# [docker] push latest image
110+
push: login
111+
docker push {{IMAGE}}/{{APP}}:{{TAG}}
112+
113+
# [docker] pull latest image
114+
pull: login
115+
docker pull {{IMAGE}}/{{APP}}
79116

80-
# [docker] push latest image to ecr
81-
release:
117+
# [docker] run container
118+
run: build
82119
#!/usr/bin/env bash
83120
# set -euxo pipefail
84-
85-
AWS_DEFAULT_PROFILE=bastion.use1 aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${REGISTRY_URL}
86-
docker push {{IMAGE}}/${APP_NAME}:${TAG}
121+
docker run --rm -it \
122+
--name {{APP}} \
123+
--env-file .env \
124+
--entrypoint={{SHELL}} \
125+
-h ${HOST:-localhost} \
126+
-v $(pwd)/conf:/etc/duoauthproxy \
127+
-p ${PORT:-1812}:${PORT:-1812/udp} \
128+
-p ${PORT2:-18120}:${PORT2:-18120/udp} \
129+
--cap-drop=all \
130+
--cap-add=setgid \
131+
--cap-add=setuid \
132+
{{APP}}
87133

88134
# [docker] start docker-compose container
89-
up:
90-
docker-compose up -d
135+
up: build
136+
{{docker-compose}} up -d
137+
138+
# [docker] get running container logs
139+
logs:
140+
{{docker-compose}} logs -tf --tail="50" {{APP}}
91141

92142
# [docker] ssh into container
93143
exec:
94-
docker-compose exec {{APP}} {{SHELL}}
144+
docker exec -it {{APP}} {{SHELL}}
95145

96146
# [docker] stop docker-compose container
97147
stop:
98-
docker-compose stop
148+
{{docker-compose}} stop
99149

100150
# [docker] remove docker-compose container(s) and networks
101151
down: stop
102-
docker-compose down --remove-orphans
103-
104-
# [docker] tag image as latest
105-
tag-latest:
106-
@echo "create tag ${APP_NAME}:${TAG} {{IMAGE}}/${APP_NAME}:${TAG}"
107-
docker tag ${APP_NAME}:${TAG} {{IMAGE}}/${APP_NAME}:${TAG}
108-
109-
# [docker] tag image from VERSION file
110-
tag-version:
111-
@echo "create tag ${APP_NAME}:{{VERSION}} {{IMAGE}}/${APP_NAME}:${TAG}"
112-
docker tag ${APP_NAME}:{{VERSION}} {{IMAGE}}/${APP_NAME}:${TAG}
152+
{{docker-compose}} down --remove-orphans

0 commit comments

Comments
 (0)