Introduce Makefile
This commit is contained in:
parent
9096c70e96
commit
372ecd0cf8
3
.env
Normal file
3
.env
Normal file
@ -0,0 +1,3 @@
|
||||
MAKE := "/usr/bin/make"
|
||||
GO := "/usr/local/bin/go"
|
||||
DEP := "/usr/local/bin/dep"
|
@ -6,15 +6,10 @@ install:
|
||||
# Fetch dependencies
|
||||
- wget -O dep https://github.com/golang/dep/releases/download/v0.3.2/dep-linux-amd64
|
||||
- chmod +x dep
|
||||
- ./dep ensure --vendor-only
|
||||
script:
|
||||
- set -e
|
||||
# Lint
|
||||
- go get -u github.com/alecthomas/gometalinter
|
||||
- gometalinter --install
|
||||
- ./lint.sh
|
||||
- ./configure
|
||||
# Run tests
|
||||
- ./test.sh
|
||||
- make test
|
||||
sudo: false
|
||||
notifications:
|
||||
email: false
|
||||
|
@ -2,6 +2,12 @@
|
||||
|
||||
## Changes since v2.2:
|
||||
|
||||
- Move automated build to debian base image
|
||||
- Add Makefile
|
||||
- Update CI to run `make test`
|
||||
- Update Dockerfile to use `make clean oauth2_proxy`
|
||||
- Update `VERSION` parameter to be set by `ldflags` from Git Status
|
||||
- Remove lint and test scripts
|
||||
- Remove Go v1.8.x from Travis CI testing
|
||||
- Add CODEOWNERS file
|
||||
- Add CONTRIBUTING guide
|
||||
|
@ -8,7 +8,7 @@ Download the dependencies using [`dep`](https://github.com/golang/dep).
|
||||
```bash
|
||||
cd $GOPATH/src/github.com # Create this directory if it doesn't exist
|
||||
git clone git@github.com:<YOUR_FORK>/oauth2_proxy pusher/oauth2_proxy
|
||||
dep ensure # Installs dependencies to vendor folder.
|
||||
make dep
|
||||
```
|
||||
|
||||
## Pull Requests and Issues
|
||||
|
@ -7,10 +7,10 @@ RUN go get -u github.com/golang/dep/cmd/dep
|
||||
RUN dep ensure --vendor-only
|
||||
|
||||
# Build image
|
||||
RUN CGO_ENABLED=0 GOOS=linux go build
|
||||
RUN ./configure && make clean oauth2_proxy
|
||||
|
||||
# Copy binary to alpine
|
||||
FROM alpine:3.8
|
||||
# Copy binary to debian
|
||||
FROM debian:stretch
|
||||
COPY --from=builder /go/src/github.com/pusher/oauth2_proxy/oauth2_proxy /bin/oauth2_proxy
|
||||
|
||||
ENTRYPOINT ["/bin/oauth2_proxy"]
|
||||
|
55
Makefile
Normal file
55
Makefile
Normal file
@ -0,0 +1,55 @@
|
||||
include .env
|
||||
BINARY := oauth2_proxy
|
||||
VERSION := $(shell git describe --always --long --dirty --tags 2>/dev/null || echo "undefined")
|
||||
|
||||
.PHONY: all
|
||||
all: dep lint $(BINARY)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf release
|
||||
rm -f $(BINARY)
|
||||
|
||||
.PHONY: distclean
|
||||
distclean: clean
|
||||
rm -rf vendor
|
||||
|
||||
BIN_DIR := $(GOPATH)/bin
|
||||
GOMETALINTER := $(BIN_DIR)/gometalinter
|
||||
|
||||
$(GOMETALINTER):
|
||||
$(GO) get -u github.com/alecthomas/gometalinter
|
||||
gometalinter --install %> /dev/null
|
||||
|
||||
.PHONY: lint
|
||||
lint: $(GOMETALINTER)
|
||||
$(GOMETALINTER) --vendor --disable-all \
|
||||
--enable=vet \
|
||||
--enable=vetshadow \
|
||||
--enable=golint \
|
||||
--enable=ineffassign \
|
||||
--enable=goconst \
|
||||
--enable=deadcode \
|
||||
--enable=gofmt \
|
||||
--enable=goimports \
|
||||
--tests ./...
|
||||
|
||||
.PHONY: dep
|
||||
dep:
|
||||
$(DEP) ensure --vendor-only
|
||||
|
||||
.PHONY: build
|
||||
build: clean $(BINARY)
|
||||
|
||||
$(BINARY):
|
||||
$(GO) build -ldflags="-X main.VERSION=${VERSION}" -o $(BINARY) github.com/pusher/oauth2_proxy
|
||||
|
||||
.PHONY: test
|
||||
test: dep lint
|
||||
$(GO) test -v -race $(go list ./... | grep -v /vendor/)
|
||||
|
||||
.PHONY: release
|
||||
release: dep lint test
|
||||
mkdir release
|
||||
GOOS=darwin GOARCH=amd64 go build -ldflags="-X main.VERSION=${VERSION}" -o release/$(BINARY)-darwin-amd64 github.com/pusher/oauth2_proxy
|
||||
GOOS=linux GOARCH=amd64 go build -ldflags="-X main.VERSION=${VERSION}" -o release/$(BINARY)-linux-amd64 github.com/pusher/oauth2_proxy
|
137
configure
vendored
Executable file
137
configure
vendored
Executable file
@ -0,0 +1,137 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
declare -A tools=()
|
||||
declare -A desired=()
|
||||
|
||||
for arg in "$@"; do
|
||||
case ${arg%%=*} in
|
||||
"--with-go")
|
||||
desired[go]="${arg##*=}"
|
||||
;;
|
||||
"--with-dep")
|
||||
desired[dep]="${arg##*=}"
|
||||
;;
|
||||
"--help")
|
||||
printf "${GREEN}$0${NC}\n"
|
||||
printf " available options:\n"
|
||||
printf " --with-dep=${BLUE}<path_to_dep_binary>${NC}\n"
|
||||
printf " --with-go=${BLUE}<path_to_go_binary>${NC}\n"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $arg"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
vercomp () {
|
||||
if [[ $1 == $2 ]]
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
local IFS=.
|
||||
local i ver1=($1) ver2=($2)
|
||||
# fill empty fields in ver1 with zeros
|
||||
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
|
||||
do
|
||||
ver1[i]=0
|
||||
done
|
||||
for ((i=0; i<${#ver1[@]}; i++))
|
||||
do
|
||||
if [[ -z ${ver2[i]} ]]
|
||||
then
|
||||
# fill empty fields in ver2 with zeros
|
||||
ver2[i]=0
|
||||
fi
|
||||
if ((10#${ver1[i]} > 10#${ver2[i]}))
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
if ((10#${ver1[i]} < 10#${ver2[i]}))
|
||||
then
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
check_for() {
|
||||
echo -n "Checking for $1... "
|
||||
if ! [ -z "${desired[$1]}" ]; then
|
||||
TOOL_PATH="${desired[$1]}"
|
||||
else
|
||||
TOOL_PATH=$(command -v $1)
|
||||
fi
|
||||
if ! [ -x "$TOOL_PATH" -a -f "$TOOL_PATH" ]; then
|
||||
printf "${RED}not found${NC}\n"
|
||||
cd -
|
||||
exit 1
|
||||
else
|
||||
printf "${GREEN}found${NC}\n"
|
||||
tools[$1]=$TOOL_PATH
|
||||
fi
|
||||
}
|
||||
|
||||
check_go_version() {
|
||||
echo -n "Checking go version... "
|
||||
GO_VERSION=$(${tools[go]} version | ${tools[awk]} '{where = match($0, /[0-9]\.[0-9]+\.[0-9]*/); if (where != 0) print substr($0, RSTART, RLENGTH)}')
|
||||
vercomp $GO_VERSION 1.10
|
||||
case $? in
|
||||
0) ;&
|
||||
1)
|
||||
printf "${GREEN}"
|
||||
echo $GO_VERSION
|
||||
printf "${NC}"
|
||||
;;
|
||||
2)
|
||||
printf "${RED}"
|
||||
echo "$GO_VERSION < 1.10"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
check_docker_version() {
|
||||
echo -n "Checking docker version... "
|
||||
DOCKER_VERSION=$(${tools[docker]} version | ${tools[awk]})
|
||||
}
|
||||
|
||||
check_go_env() {
|
||||
echo -n "Checking \$GOPATH... "
|
||||
if [ -z "$GOPATH" ]; then
|
||||
printf "${RED}invalid${NC} - GOPATH not set\n"
|
||||
exit 1
|
||||
fi
|
||||
printf "${GREEN}valid${NC} - $GOPATH\n"
|
||||
}
|
||||
|
||||
cd ${0%/*}
|
||||
|
||||
if [ ! -f .env ]; then
|
||||
rm .env
|
||||
fi
|
||||
|
||||
check_for make
|
||||
check_for awk
|
||||
check_for go
|
||||
check_go_version
|
||||
check_go_env
|
||||
check_for dep
|
||||
|
||||
echo
|
||||
|
||||
cat <<- EOF > .env
|
||||
MAKE := "${tools[make]}"
|
||||
GO := "${tools[go]}"
|
||||
DEP := "${tools[dep]}"
|
||||
EOF
|
||||
|
||||
echo "Environment configuration written to .env"
|
||||
|
||||
cd - > /dev/null
|
11
lint.sh
11
lint.sh
@ -1,11 +0,0 @@
|
||||
#!/bin/bash
|
||||
gometalinter --vendor --disable-all \
|
||||
--enable=vet \
|
||||
--enable=vetshadow \
|
||||
--enable=golint \
|
||||
--enable=ineffassign \
|
||||
--enable=goconst \
|
||||
--enable=deadcode \
|
||||
--enable=gofmt \
|
||||
--enable=goimports \
|
||||
--tests ./...
|
2
main.go
2
main.go
@ -84,7 +84,7 @@ func main() {
|
||||
flagSet.Parse(os.Args[1:])
|
||||
|
||||
if *showVersion {
|
||||
fmt.Printf("oauth2_proxy v%s (built with %s)\n", VERSION, runtime.Version())
|
||||
fmt.Printf("oauth2_proxy %s (built with %s)\n", VERSION, runtime.Version())
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package main
|
||||
|
||||
// VERSION contains version information
|
||||
const VERSION = "2.2.1-alpha"
|
||||
var VERSION = "undefined"
|
||||
|
Loading…
Reference in New Issue
Block a user