-
Notifications
You must be signed in to change notification settings - Fork 0
/
buildscript.sh
executable file
·63 lines (47 loc) · 2.01 KB
/
buildscript.sh
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
#!/bin/bash
log_info() {
printf "$(date +%H:%M:%S)\033[38;5;61m ==>\033[0;00m $@\n"
}
colors=("red" "orange" "blue" "green" "pink" "gray")
css_file="./public/style.css"
docker_file="./Dockerfile"
image_name="betapenguin/demoapp-color"
version=$(npm pkg get version | sed -r 's/"//g')
log_info "Buildscript started for v$version"
# Remove old images
if docker images --format '{{.Repository}}:{{.Tag}}' | grep -q "$image_name"; then
If one or more images exist, remove them
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep "$image_name")
log_info "Docker images with name '$image_name' removed."
else
log_info "No existing Docker images found with name '$image_name'."
fi
# Loop through the colors and perform the replacements
for color in "${colors[@]}"; do
log_info "Building image for color $color"
# Replace the line containing "--main-color: var(*)" with "--main-color: var(--$color)"
sed -i "s/--main-color: var\(\S*\)/--main-color: var(--$color);/" "$css_file"
# Replace the env variable version in the docker file
sed -i "s/ENV VERSION=.*/ENV VERSION=$version-$color/" "$docker_file"
# Build the Docker image with the specified tag
docker build -t "$image_name:$version-$color" .
# Tag the Docker image only with the color
docker tag $image_name:$version-$color $image_name:$color
# Push the Docker images
log_info "Uploading images to docker hub"
docker push "$image_name:$color"
docker push "$image_name:$version-$color"
done
# Manage non-color tags
docker tag "$image_name:${colors[0]}" "$image_name:$version"
docker tag "$image_name:${colors[0]}" "$image_name:latest"
docker push "$image_name:$version"
docker push "$image_name:latest"
log_info "Done building images"
docker images $image_name
# Undo the changes
log_info "Changing back the edited files"
# Change back css color
sed -i "s/--main-color: var\(.*\)/--main-color: var(--red);/" "$css_file"
# Change back version
sed -i "s/ENV VERSION=.*/ENV VERSION=$version/" "$docker_file"