Merge pull request #1688 from jaffee/automate-release-building-2.8

attempt to build release artifacts in CI (using updated Go version)
This commit is contained in:
Matthew Jaffee 2021-09-10 13:26:57 -05:00 committed by GitHub
commit d5dc50fffa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 102 additions and 21 deletions

View file

@ -5,7 +5,7 @@ executors:
parameters:
version:
type: string
default: "1.15.5"
default: "1.16.7"
resource_class:
type: string
default: medium
@ -84,7 +84,7 @@ jobs:
default: medium
golang_version:
type: string
default: "1.15.5"
default: "1.16.7"
shard_width:
type: string
default: "20"
@ -132,12 +132,23 @@ jobs:
- checkout-plus
- attach_workspace:
at: .
- run: make release
- setup_remote_docker:
version: 19.03.13 # see https://support.circleci.com/hc/en-us/articles/360050934711
- run: echo -n $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
- run: make docker-release
- store_artifacts:
path: build
- persist_to_workspace:
root: .
paths: build
publish_release:
executor:
name: golang
steps:
- attach_workspace:
at: .
- run: go get github.com/tcnksm/ghr
- run: ghr -t ${GITHUB_PERSONAL_ACCESS_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${CIRCLE_TAG} ./build/
prerelease-upload:
docker:
- image: circleci/python:2.7-jessie
@ -152,7 +163,9 @@ jobs:
name: golang
steps:
- checkout-plus
- setup_remote_docker
- setup_remote_docker:
version: 19.03.13 # see https://support.circleci.com/hc/en-us/articles/360050934711
- run: echo -n $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
- run: make docker
- run: docker run pilosa:$(git describe --tags) help
dockerhub-upload-unstable:
@ -160,7 +173,9 @@ jobs:
name: golang
steps:
- checkout-plus
- setup_remote_docker
- setup_remote_docker:
version: 19.03.13 # see https://support.circleci.com/hc/en-us/articles/360050934711
- run: echo -n $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
- run: make docker
- run: docker run pilosa:$(git describe --tags) help
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS
@ -170,7 +185,9 @@ jobs:
name: golang
steps:
- checkout-plus
- setup_remote_docker
- setup_remote_docker:
version: 19.03.13 # see https://support.circleci.com/hc/en-us/articles/360050934711
- run: echo -n $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
- run: make docker
- run: docker run pilosa:$(git describe --tags) help
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS
@ -209,7 +226,7 @@ workflows:
- setup
matrix:
parameters:
golang_version: ["1.14.12", "1.15.5"]
golang_version: ["1.16.7"]
- test:
name: << matrix.test_make_target >>
resource_class: xlarge
@ -218,7 +235,7 @@ workflows:
- setup
matrix:
parameters:
test_make_target: ["test-race", "test-txstore-rbf", "test-txstore-rbf_bolt"]
test_make_target: ["test-race"]
- test:
name: test-shardwidth-22
shard_width: "22"
@ -236,7 +253,23 @@ workflows:
requires:
- linter
- check-license-headers
- test-golang-1.15.5
- test-golang-1.16.7
- release:
context: molecula
requires:
- setup
filters:
tags:
only: /^v.*/
- publish_release:
context: molecula
requires:
- release
filters:
tags:
only: /^v.*/
branches:
ignore: /.*/
- dockerhub-upload-unstable:
context: molecula
requires:

View file

@ -1 +1,6 @@
lattice
lattice/.git
lattice/node_modules
lattice/build
statik/statik.go
build

View file

@ -1,19 +1,47 @@
FROM golang:1.14.10 as builder
ARG GO_VERSION=latest
ARG BUILD_FLAGS
#######################
### Lattice builder ###
#######################
FROM moleculacorp/nodejs:latest as lattice-builder
WORKDIR /lattice
COPY lattice/package.json ./
COPY lattice/yarn.lock ./
RUN yarn install
COPY lattice ./
RUN yarn build
######################
### Pilosa builder ###
######################
FROM golang:${GO_VERSION} as pilosa-builder
ARG MAKE_FLAGS
WORKDIR /pilosa
COPY . pilosa
RUN go get github.com/rakyll/statik
RUN cd pilosa && make install FLAGS="-a -mod=vendor ${BUILD_FLAGS}" ${MAKE_FLAGS}
COPY . ./
COPY --from=lattice-builder /lattice/build /lattice
RUN /go/bin/statik -src=/lattice -dest=/pilosa
FROM alpine:3.12.1
RUN make build FLAGS="-o build/pilosa" ${MAKE_FLAGS}
LABEL maintainer "dev@pilosa.com"
#####################
### Pilosa runner ###
#####################
FROM alpine:3.13.2 as runner
LABEL maintainer "dev@molecula.com"
RUN apk add --no-cache curl jq
COPY --from=builder /go/bin/pilosa /pilosa
COPY --from=pilosa-builder /pilosa/build/pilosa /
COPY LICENSE /LICENSE
COPY NOTICE /NOTICE

View file

@ -12,7 +12,7 @@ BUILD_TIME := $(shell date -u +%FT%T%z)
SHARD_WIDTH = 20
COMMIT := $(shell git describe --exact-match >/dev/null 2>&1 || git rev-parse --short HEAD)
LDFLAGS="-X github.com/pilosa/pilosa/v2.Version=$(VERSION) -X github.com/pilosa/pilosa/v2.BuildTime=$(BUILD_TIME) -X github.com/pilosa/pilosa/v2.Variant=$(VARIANT) -X github.com/pilosa/pilosa/v2.Commit=$(COMMIT) -X github.com/pilosa/pilosa/v2.LatticeCommit=$(LATTICE_COMMIT)"
GO_VERSION=1.14.10
GO_VERSION=1.16.7
RELEASE ?= 0
RELEASE_ENABLED = $(subst 0,,$(RELEASE))
BUILD_TAGS += $(if $(RELEASE_ENABLED),release)
@ -195,8 +195,10 @@ generate-proto-grpc: require-protoc require-protoc-gen-go
generate: generate-protoc generate-statik generate-stringer generate-pql
# Create Docker image from Dockerfile
docker: vendor
docker build --build-arg BUILD_FLAGS="${FLAGS}" -t "pilosa:$(VERSION)" .
docker: vendor lattice
docker build \
--build-arg GO_VERSION=$(GO_VERSION) \
--tag pilosa:$(VERSION) .
@echo Created docker image: pilosa:$(VERSION)
# Tag and push a Docker image
@ -205,9 +207,22 @@ docker-tag-push: vendor
docker push $(DOCKER_TARGET)
@echo Pushed docker image: $(DOCKER_TARGET)
docker-release: check-clean lattice
$(MAKE) docker-build GOOS=linux GOARCH=amd64
$(MAKE) docker-build GOOS=darwin GOARCH=amd64
# Compile Pilosa inside Docker container
docker-build: vendor
docker run --rm -v $(PWD):/go/src/$(CLONE_URL) -w /go/src/$(CLONE_URL) -e GOOS=$(GOOS) -e GOARCH=$(GOARCH) golang:$(GO_VERSION) make build FLAGS="$(FLAGS) -mod=vendor" RELEASE=$(RELEASE)
docker build \
--build-arg GO_VERSION=$(GO_VERSION) \
--build-arg MAKE_FLAGS="GOOS=$(GOOS) GOARCH=$(GOARCH)" \
--target pilosa-builder \
--tag pilosa:build .
docker create --name pilosa-build pilosa:build
mkdir -p build/pilosa-$(VERSION_ID)
docker cp pilosa-build:/pilosa/build/. ./build/pilosa-$(VERSION_ID)
docker rm pilosa-build
tar -cvz -C build -f build/pilosa-$(VERSION_ID).tar.gz pilosa-$(VERSION_ID)/
# Install diagnostic pilosa-keydump tool. Allows viewing the keys in a transaction-engine directory.
pilosa-keydump: