dragonfly/build/plugin-builder/build.sh

67 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
set -e
set -x
export GOPATH=/go
export CGO_ENABLED="1"
export GO111MODULE="on"
cd /go/src/d7y.io/dragonfly/v2 || exit 1
BUILD_TIME=$(date -u '+%Y-%m-%dT%H:%M:%SZ')
BUILD_COMMIT=$(git rev-parse --short HEAD)
PLUGIN_TYPE=${1}
PLUGIN_NAME=${2}
PLUGIN_PATH=${3}
build_plugin(){
mkdir -p /artifacts/plugins/
go build -buildmode=plugin \
-ldflags="-X main.buildTime=${BUILD_TIME} -X main.buildCommit=${BUILD_COMMIT}" \
-o="/artifacts/plugins/d7y-${PLUGIN_TYPE}-plugin-${PLUGIN_NAME}.so" \
"${PLUGIN_PATH%/}"/*
}
build_binary(){
target=${1}
cd /go/src/d7y.io/dragonfly/v2 && make build-"$target"
mkdir -p /artifacts/binaries/
mv -f /go/src/d7y.io/dragonfly/v2/bin/linux_amd64/"$target" /artifacts/binaries/
}
print_verbose_info(){
target=${1}
/artifacts/binaries/"$target" version
# validate plugin is ok
mkdir -p /usr/local/dragonfly/plugins/
cp -f "/artifacts/plugins/d7y-${PLUGIN_TYPE}-plugin-${PLUGIN_NAME}.so" /usr/local/dragonfly/plugins/
/artifacts/binaries/"$target" plugin
}
build(){
case "$PLUGIN_TYPE" in
resource)
build_plugin
build_binary dfget
print_verbose_info dfget
;;
scheduler)
build_plugin
build_binary scheduler
print_verbose_info scheduler
;;
manager)
build_plugin
build_binary manager
print_verbose_info manager
;;
*)
echo "invalid plugin type: $PLUGIN_TYPE, current support: resource, scheduler, searcher"
;;
esac
}
build