Skip to content

Commit 7a49e0e

Browse files
committed
refactor for obsolete caddyserver/build
1 parent 407659e commit 7a49e0e

File tree

1 file changed

+108
-34
lines changed

1 file changed

+108
-34
lines changed

builder/builder.sh

Lines changed: 108 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,53 +4,127 @@ VERSION=${VERSION:-"0.11.5"}
44
TELEMETRY=${ENABLE_TELEMETRY:-"true"}
55

66
# add `v` prefix for version numbers
7-
checkout_tag=false
8-
[ "$(echo $VERSION | cut -c1)" -ge 0 ] 2>/dev/null && VERSION="v$VERSION" && checkout_tag=true
7+
[ "$(echo $VERSION | cut -c1)" -ge 0 ] 2>/dev/null && VERSION="v$VERSION"
98

10-
# caddy
11-
git clone https://github.com/mholt/caddy -b "$VERSION" /go/src/github.com/mholt/caddy \
12-
&& cd /go/src/github.com/mholt/caddy \
13-
&& $checkout_tag && git checkout -b "$VERSION"
9+
stage() {
10+
STAGE="$1"
11+
echo
12+
echo starting stage: $STAGE
13+
}
1414

15-
# plugin helper
16-
GOOS=linux GOARCH=amd64 go get -v github.com/abiosoft/caddyplug/caddyplug
17-
alias caddyplug='GO111MODULE=off GOOS=linux GOARCH=amd64 caddyplug'
15+
end_stage() {
16+
if [ $? -ne 0 ]; then
17+
>&2 echo error at \'$STAGE\'
18+
exit 1
19+
fi
20+
echo finished stage: $STAGE
21+
echo
22+
}
1823

19-
# check for modules support
20-
go_mod=false
21-
[ -f /go/src/github.com/mholt/caddy/go.mod ] && export GO111MODULE=on && go_mod=true
24+
get_package() {
25+
GO111MODULE=off GOOS=linux GOARCH=amd64 caddyplug package $1 2> /dev/null
26+
}
27+
28+
plugins() {
29+
mkdir -p /plugins
30+
for plugin in $(echo $PLUGINS | tr "," " "); do \
31+
import_package=$(get_package $plugin)
32+
$go_mod || go get -v "$import_package" ; # not needed for modules
33+
$go_mod && package="main" || package="caddyhttp"
34+
printf "package $package\nimport _ \"$import_package\"" > \
35+
/plugins/$plugin.go ; \
36+
done
37+
}
2238

23-
# telemetry
24-
run_file="/go/src/github.com/mholt/caddy/caddy/caddymain/run.go"
25-
if [ "$TELEMETRY" = "false" ]; then
26-
cat > "$run_file.disablestats.go" <<EOF
27-
package caddymain
39+
module() {
40+
mkdir -p /caddy
41+
cd /caddy # build dir
42+
43+
# setup module
44+
go mod init caddy
45+
go get -v github.com/mholt/caddy@$VERSION
46+
47+
# plugins
48+
cp -r /plugins/. .
49+
50+
# main and telemetry
51+
cat > main.go <<EOF
52+
package main
53+
import "github.com/mholt/caddy/caddy/caddymain"
2854
import "os"
29-
func init() {
55+
func main() {
3056
switch os.Getenv("ENABLE_TELEMETRY") {
3157
case "0", "false":
32-
EnableTelemetry = false
58+
caddymain.EnableTelemetry = false
3359
case "1", "true":
34-
EnableTelemetry = true
60+
caddymain.EnableTelemetry = true
61+
default:
62+
caddymain.EnableTelemetry = $TELEMETRY
3563
}
64+
caddymain.Run()
3665
}
3766
EOF
38-
fi
67+
}
3968

40-
# plugins
41-
for plugin in $(echo $PLUGINS | tr "," " "); do \
42-
package=$(caddyplug package $plugin)
43-
$go_mod || go get -v "$package" ; # not needed for modules
44-
printf "package caddyhttp\nimport _ \"$package\"" > \
45-
/go/src/github.com/mholt/caddy/caddyhttp/$plugin.go ; \
46-
done
69+
legacy() {
70+
cd /go/src/github.com/mholt/caddy/caddy # build dir
4771

48-
# builder dependency, not needed for modules
49-
$go_mod || git clone https://github.com/caddyserver/builds /go/src/github.com/caddyserver/builds
72+
# plugins
73+
cp -r /plugins/. ../caddyhttp
74+
75+
# telemetry
76+
run_file="/go/src/github.com/mholt/caddy/caddy/caddymain/run.go"
77+
if [ "$TELEMETRY" = "false" ]; then
78+
cat > "$run_file.disablestats.go" <<EOF
79+
package caddymain
80+
import "os"
81+
func init() {
82+
switch os.Getenv("ENABLE_TELEMETRY") {
83+
case "0", "false":
84+
EnableTelemetry = false
85+
case "1", "true":
86+
EnableTelemetry = true
87+
}
88+
}
89+
EOF
90+
fi
91+
}
92+
93+
# caddy source
94+
stage "fetching caddy source"
95+
git clone https://github.com/mholt/caddy -b "$VERSION" /go/src/github.com/mholt/caddy \
96+
&& cd /go/src/github.com/mholt/caddy
97+
end_stage
98+
99+
# plugin helper
100+
stage "installing plugin helper"
101+
GOOS=linux GOARCH=amd64 go get -v github.com/abiosoft/caddyplug/caddyplug
102+
end_stage
103+
104+
# check for modules support
105+
go_mod=false
106+
[ -f /go/src/github.com/mholt/caddy/go.mod ] && export GO111MODULE=on && go_mod=true
107+
108+
# generate plugins
109+
stage "generating plugins"
110+
plugins
111+
end_stage
112+
113+
# add plugins and telemetry
114+
stage "customising plugins and telemetry"
115+
if $go_mod; then module; else legacy; fi
116+
end_stage
50117

51118
# build
52-
cd /go/src/github.com/mholt/caddy/caddy \
53-
&& GOOS=linux GOARCH=amd64 go run build.go -goos=$GOOS -goarch=$GOARCH -goarm=$GOARM \
54-
&& mkdir -p /install \
55-
&& mv caddy /install
119+
stage "building caddy"
120+
CGO_ENABLED=0 go build -o caddy
121+
end_stage
122+
123+
# copy binary
124+
stage "copying binary"
125+
mkdir -p /install \
126+
&& mv caddy /install \
127+
&& /install/caddy -version
128+
end_stage
56129

130+
echo "installed caddy version $VERSION at /install/caddy"

0 commit comments

Comments
 (0)