mirror of
https://github.com/securego/gosec.git
synced 2024-12-24 11:35:52 +00:00
Use the goreleaser tool to perform releases
This commit is contained in:
parent
2785f7aaf8
commit
2a6e887167
5 changed files with 47 additions and 32 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -8,6 +8,7 @@
|
||||||
_obj
|
_obj
|
||||||
_test
|
_test
|
||||||
vendor
|
vendor
|
||||||
|
dist
|
||||||
|
|
||||||
# Architecture specific extensions/prefixes
|
# Architecture specific extensions/prefixes
|
||||||
*.[568vq]
|
*.[568vq]
|
||||||
|
|
17
.goreleaser.yml
Normal file
17
.goreleaser.yml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
builds:
|
||||||
|
- main : ./cmd/gosec/
|
||||||
|
binary: gosec
|
||||||
|
goos:
|
||||||
|
- darwin
|
||||||
|
- linux
|
||||||
|
- windows
|
||||||
|
goarch:
|
||||||
|
- amd64
|
||||||
|
ldflags: -X main.Version={{.Version}} -X main.GitTag={{.Tag}} -X main.BuildDate={{.Date}}
|
||||||
|
env:
|
||||||
|
- CGO_ENABLED=0
|
||||||
|
|
||||||
|
archive:
|
||||||
|
files:
|
||||||
|
- README.md
|
||||||
|
- LICENSE.txt
|
|
@ -2,7 +2,7 @@ FROM golang:1.9.4-alpine3.7
|
||||||
|
|
||||||
ENV BIN=gosec
|
ENV BIN=gosec
|
||||||
|
|
||||||
COPY build/*-linux-amd64 /go/bin/$BIN
|
COPY dist/linux_amd64/$BIN /go/bin/$BIN
|
||||||
COPY docker-entrypoint.sh /usr/local/bin
|
COPY docker-entrypoint.sh /usr/local/bin
|
||||||
|
|
||||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
|
|
32
Makefile
32
Makefile
|
@ -1,7 +1,5 @@
|
||||||
GIT_TAG?= $(shell git describe --always --tags)
|
GIT_TAG?= $(shell git describe --always --tags)
|
||||||
BUILD_DATE = $(shell date +%Y-%m-%d)
|
|
||||||
BIN = gosec
|
BIN = gosec
|
||||||
BUILD_CMD = go build -ldflags "-X main.Version=${VERSION} -X main.GitTag=${GIT_TAG} -X main.BuildDate=${BUILD_DATE}" -o build/$(BIN)-$(VERSION)-$${GOOS}-$${GOARCH} ./cmd/gosec/ &
|
|
||||||
FMT_CMD = $(gofmt -s -l -w $(find . -type f -name '*.go' -not -path './vendor/*') | tee /dev/stderr)
|
FMT_CMD = $(gofmt -s -l -w $(find . -type f -name '*.go' -not -path './vendor/*') | tee /dev/stderr)
|
||||||
IMAGE_REPO = docker.io
|
IMAGE_REPO = docker.io
|
||||||
|
|
||||||
|
@ -9,40 +7,38 @@ default:
|
||||||
$(MAKE) bootstrap
|
$(MAKE) bootstrap
|
||||||
$(MAKE) build
|
$(MAKE) build
|
||||||
|
|
||||||
|
bootstrap:
|
||||||
|
dep ensure
|
||||||
|
|
||||||
test: bootstrap
|
test: bootstrap
|
||||||
test -z '$(FMT_CMD)'
|
test -z '$(FMT_CMD)'
|
||||||
go vet $(go list ./... | grep -v /vendor/)
|
go vet $(go list ./... | grep -v /vendor/)
|
||||||
golint -set_exit_status $(shell go list ./... | grep -v vendor)
|
golint -set_exit_status $(shell go list ./... | grep -v vendor)
|
||||||
gosec ./...
|
gosec ./...
|
||||||
ginkgo -r -v
|
ginkgo -r -v
|
||||||
bootstrap:
|
|
||||||
dep ensure
|
|
||||||
build:
|
build:
|
||||||
go build -o $(BIN) ./cmd/gosec/
|
go build -o $(BIN) ./cmd/gosec/
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf build vendor
|
rm -rf build vendor dist
|
||||||
rm -f release image bootstrap $(BIN)
|
rm -f release image bootstrap $(BIN)
|
||||||
|
|
||||||
release: bootstrap
|
release: bootstrap
|
||||||
ifndef VERSION
|
@echo "Releasing the gosec binary..."
|
||||||
$(error VERSION flag is not set. Run 'make release VERSION=<YOUR VERSION>'.)
|
goreleaser release
|
||||||
endif
|
|
||||||
@echo "Running build command..."
|
|
||||||
bash -c '\
|
|
||||||
export GOOS=linux; export GOARCH=amd64; export CGO_ENABLED=0; $(BUILD_CMD) \
|
|
||||||
wait \
|
|
||||||
'
|
|
||||||
touch release
|
|
||||||
|
|
||||||
image: release
|
image: release
|
||||||
@echo "Building the Docker image..."
|
@echo "Building the Docker image..."
|
||||||
docker build -t $(IMAGE_REPO)/$(BIN):$(VERSION) .
|
docker build -t $(IMAGE_REPO)/$(BIN):$(GIT_TAG) .
|
||||||
docker tag $(IMAGE_REPO)/$(BIN):$(VERSION) $(IMAGE_REPO)/$(BIN):latest
|
docker tag $(IMAGE_REPO)/$(BIN):$(GIT_TAG) $(IMAGE_REPO)/$(BIN):latest
|
||||||
touch image
|
touch image
|
||||||
|
|
||||||
image-push: image
|
image-push: image
|
||||||
@echo "Pushing the Docker image..."
|
@echo "Pushing the Docker image..."
|
||||||
docker push $(IMAGE_REPO)/$(BIN):$(VERSION)
|
|
||||||
|
docker push $(IMAGE_REPO)/$(BIN):$(GIT_TAG)
|
||||||
docker push $(IMAGE_REPO)/$(BIN):latest
|
docker push $(IMAGE_REPO)/$(BIN):latest
|
||||||
|
|
||||||
.PHONY: test build clean image-push
|
.PHONY: test build clean release image image-push
|
||||||
|
|
||||||
|
|
27
README.md
27
README.md
|
@ -143,34 +143,35 @@ make test
|
||||||
|
|
||||||
#### Release Build
|
#### Release Build
|
||||||
|
|
||||||
gosec can be released as follows:
|
Make sure you have installed the [goreleaser](https://github.com/goreleaser/goreleaser) tool and then you can release gosec as follows:
|
||||||
|
git tag 1.0.0
|
||||||
|
export GITHUB_TOKEN=<YOUR GITHUB TOKEN>
|
||||||
|
make release
|
||||||
|
|
||||||
```bash
|
The released version of the tool is available in the `dist` folder. The build information should be displayed in the usage text.
|
||||||
make release VERSION=2.0.0
|
|
||||||
```
|
|
||||||
|
|
||||||
The released version of the tool is available in the `build` folder. The build information should be displayed in the usage text.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
./build/gosec-2.0.0-linux-amd64 -h
|
./dist/darwin_amd64/gosec -h
|
||||||
|
|
||||||
gosec - Golang security checker
|
gosec - Golang security checker
|
||||||
|
|
||||||
gosec analyzes Go source code to look for common programming mistakes that
|
gosec analyzes Go source code to look for common programming mistakes that
|
||||||
can lead to security problems.
|
can lead to security problems.
|
||||||
|
|
||||||
VERSION: 2.0.0
|
VERSION: 1.0.0
|
||||||
GIT TAG: 96489ff
|
GIT TAG: 1.0.0
|
||||||
BUILD DATE: 2018-02-21
|
BUILD DATE: 2018-04-27T12:41:38Z
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Note that all released archives are also uploaded to GitHub.
|
||||||
|
|
||||||
#### Docker image
|
#### Docker image
|
||||||
|
|
||||||
You can execute a release and build the docker image as follows:
|
You can execute a release and build the docker image as follows:
|
||||||
|
|
||||||
```
|
```
|
||||||
make image VERSION=2.0.0
|
git tag <VERSION>
|
||||||
|
export GITHUB_TOKEN=<Your GitHub token>
|
||||||
|
make image
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you can run the gosec tool in a container against your local workspace:
|
Now you can run the gosec tool in a container against your local workspace:
|
||||||
|
|
Loading…
Reference in a new issue