@@ -4,53 +4,127 @@ VERSION=${VERSION:-"0.11.5"}
44TELEMETRY=${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 }
3766EOF
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