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
|
# Fetch dependencies
|
||||||
- wget -O dep https://github.com/golang/dep/releases/download/v0.3.2/dep-linux-amd64
|
- wget -O dep https://github.com/golang/dep/releases/download/v0.3.2/dep-linux-amd64
|
||||||
- chmod +x dep
|
- chmod +x dep
|
||||||
- ./dep ensure --vendor-only
|
|
||||||
script:
|
script:
|
||||||
- set -e
|
- ./configure
|
||||||
# Lint
|
|
||||||
- go get -u github.com/alecthomas/gometalinter
|
|
||||||
- gometalinter --install
|
|
||||||
- ./lint.sh
|
|
||||||
# Run tests
|
# Run tests
|
||||||
- ./test.sh
|
- make test
|
||||||
sudo: false
|
sudo: false
|
||||||
notifications:
|
notifications:
|
||||||
email: false
|
email: false
|
||||||
|
@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
## Changes since v2.2:
|
## 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
|
- Remove Go v1.8.x from Travis CI testing
|
||||||
- Add CODEOWNERS file
|
- Add CODEOWNERS file
|
||||||
- Add CONTRIBUTING guide
|
- Add CONTRIBUTING guide
|
||||||
|
@ -8,7 +8,7 @@ Download the dependencies using [`dep`](https://github.com/golang/dep).
|
|||||||
```bash
|
```bash
|
||||||
cd $GOPATH/src/github.com # Create this directory if it doesn't exist
|
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
|
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
|
## Pull Requests and Issues
|
||||||
|
@ -7,10 +7,10 @@ RUN go get -u github.com/golang/dep/cmd/dep
|
|||||||
RUN dep ensure --vendor-only
|
RUN dep ensure --vendor-only
|
||||||
|
|
||||||
# Build image
|
# Build image
|
||||||
RUN CGO_ENABLED=0 GOOS=linux go build
|
RUN ./configure && make clean oauth2_proxy
|
||||||
|
|
||||||
# Copy binary to alpine
|
# Copy binary to debian
|
||||||
FROM alpine:3.8
|
FROM debian:stretch
|
||||||
COPY --from=builder /go/src/github.com/pusher/oauth2_proxy/oauth2_proxy /bin/oauth2_proxy
|
COPY --from=builder /go/src/github.com/pusher/oauth2_proxy/oauth2_proxy /bin/oauth2_proxy
|
||||||
|
|
||||||
ENTRYPOINT ["/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:])
|
flagSet.Parse(os.Args[1:])
|
||||||
|
|
||||||
if *showVersion {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
// VERSION contains version information
|
// VERSION contains version information
|
||||||
const VERSION = "2.2.1-alpha"
|
var VERSION = "undefined"
|
||||||
|
Loading…
Reference in New Issue
Block a user