Skip to content

Commit

Permalink
refactor for obsolete caddyserver/build
Browse files Browse the repository at this point in the history
  • Loading branch information
abiosoft committed Apr 22, 2019
1 parent 407659e commit 05d59c3
Showing 1 changed file with 107 additions and 34 deletions.
141 changes: 107 additions & 34 deletions builder/builder.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,53 +4,126 @@ VERSION=${VERSION:-"0.11.5"}
TELEMETRY=${ENABLE_TELEMETRY:-"true"}

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

# caddy
git clone https://github.com/mholt/caddy -b "$VERSION" /go/src/github.com/mholt/caddy \
&& cd /go/src/github.com/mholt/caddy \
&& $checkout_tag && git checkout -b "$VERSION"
stage() {
STAGE="$1"
echo --------
echo Stage: $STAGE
echo --------
}

# plugin helper
GOOS=linux GOARCH=amd64 go get -v github.com/abiosoft/caddyplug/caddyplug
alias caddyplug='GO111MODULE=off GOOS=linux GOARCH=amd64 caddyplug'
end_stage() {
if [ $? -ne 0 ]; then
>&2 echo error at \'$STAGE\'
exit 1
fi
}

# check for modules support
go_mod=false
[ -f /go/src/github.com/mholt/caddy/go.mod ] && export GO111MODULE=on && go_mod=true
get_package() {
GO111MODULE=off GOOS=linux GOARCH=amd64 caddyplug package $1
}

plugins() {
mkdir -p /plugins
for plugin in $(echo $PLUGINS | tr "," " "); do \
import_package=$(get_package $plugin)
$go_mod || go get -v "$import_package" ; # not needed for modules
$go_mod && package="main" || package="caddyhttp"
printf "package $package\nimport _ \"$import_package\"" > \
/plugins/$plugin.go ; \
done
}

# telemetry
run_file="/go/src/github.com/mholt/caddy/caddy/caddymain/run.go"
if [ "$TELEMETRY" = "false" ]; then
cat > "$run_file.disablestats.go" <<EOF
package caddymain
module() {
mkdir -p /caddy
cd /caddy # build dir

# setup module
go mod init caddy
go get -v github.com/mholt/caddy@$VERSION

# plugins
cp -r /plugins/. .

# main and telemetry
cat > main.go <<EOF
package main
import "github.com/mholt/caddy/caddy/caddymain"
import "os"
func init() {
func main() {
switch os.Getenv("ENABLE_TELEMETRY") {
case "0", "false":
EnableTelemetry = false
caddymain.EnableTelemetry = false
case "1", "true":
EnableTelemetry = true
caddymain.EnableTelemetry = true
default:
caddymain.EnableTelemetry = $TELEMETRY
}
caddymain.Run()
}
EOF
fi
}

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

# builder dependency, not needed for modules
$go_mod || git clone https://github.com/caddyserver/builds /go/src/github.com/caddyserver/builds
# plugins
cp -r /plugins/. ../caddyhttp

# telemetry
run_file="/go/src/github.com/mholt/caddy/caddy/caddymain/run.go"
if [ "$TELEMETRY" = "false" ]; then
cat > "$run_file.disablestats.go" <<EOF
package caddymain
import "os"
func init() {
switch os.Getenv("ENABLE_TELEMETRY") {
case "0", "false":
EnableTelemetry = false
case "1", "true":
EnableTelemetry = true
}
}
EOF
fi
}

# caddy source
stage "fetching caddy source"
git clone https://github.com/mholt/caddy -b "$VERSION" /go/src/github.com/mholt/caddy \
&& cd /go/src/github.com/mholt/caddy
end_stage

# plugin helper
stage "installing plugin helper"
GOOS=linux GOARCH=amd64 go get -v github.com/abiosoft/caddyplug/caddyplug
end_stage

# check for modules support
go_mod=false
[ -f /go/src/github.com/mholt/caddy/go.mod ] && export GO111MODULE=on && go_mod=true

# generate plugins
stage "generating plugins"
plugins
end_stage

# add plugins and telemetry
stage "customising plugins and telemetry"
if $go_mod; then module; else legacy; fi
end_stage

# build
cd /go/src/github.com/mholt/caddy/caddy \
&& GOOS=linux GOARCH=amd64 go run build.go -goos=$GOOS -goarch=$GOARCH -goarm=$GOARM \
&& mkdir -p /install \
&& mv caddy /install
stage "building caddy"
CGO_ENABLED=0 go build -o caddy
end_stage

# copy binary
stage "copying binary"
mkdir -p /install \
&& mv caddy /install \
&& /install/caddy -version
end_stage

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

0 comments on commit 05d59c3

Please sign in to comment.