diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000000000000000000000000000000000..559300fa2345245aa8f2b3ab0618d63f15649d79 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,41 @@ +name: Create Release & Upload Assets + +on: + push: + tags: + - 'v*' # Push events matching v*, ie, v1.0, v0.85-rc3 + +jobs: + goreleaser: + name: Build and publish a release with GoReleaser + runs-on: ubuntu-20.04 + needs: create_release + steps: + - + name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - + name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.17 + - + name: Configure Go + id: configure_go + run: | + PATH=$PATH:/usr/local/go/bin:/home/admin/go/bin + - + name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + version: latest + args: release --rm-dist + diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000000000000000000000000000000000000..1e40bc61c1cd5f0afe177cc75c20510b1c892e00 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,39 @@ +# This is an example .goreleaser.yml file with some sensible defaults. +# Make sure to check the documentation at https://goreleaser.com +builds: + - + env: + - CGO_ENABLED=0 + goos: + - linux + binary: manager +dockers: + - + goarch: amd64 + use: buildx + build_flag_templates: + - "--platform=linux/amd64" + image_templates: + - "docker.io/smallstep/step-issuer:latest-amd64" + - "docker.io/smallstep/step-issuer:{{ .RawVersion }}-amd64" + - + goarch: arm64 + use: buildx + build_flag_templates: + - "--platform=linux/arm64" + image_templates: + - "docker.io/smallstep/step-issuer:latest-arm64" + - "docker.io/smallstep/step-issuer:{{ .RawVersion }}-arm64" +docker_manifests: + - + name_template: "smallstep/step-issuer:{{ .RawVersion }}" + image_templates: + - "docker.io/smallstep/step-issuer:{{ .RawVersion }}-arm64" + - "docker.io/smallstep/step-issuer:{{ .RawVersion }}-amd64" + +checksum: + name_template: 'checksums.txt' +snapshot: + name_template: "{{ incpatch .Version }}-next" +changelog: + sort: asc diff --git a/Dockerfile b/Dockerfile index bb9194fa94705dcb475a17d6bc394d27da87f75e..cec644d155a217ea8717b0c366c81ec093e7b100 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,6 @@ # Use distroless as minimal base image to package the manager binary # Refer to https://github.com/GoogleContainerTools/distroless for more details FROM gcr.io/distroless/static:latest -ARG BINPATH="docker/bin/manager" WORKDIR / -COPY $BINPATH . +COPY manager manager ENTRYPOINT ["/manager"] diff --git a/Makefile b/Makefile index 2a6d94a237f3e1c8104a8c343ef8ba617c250fc0..a42fba0de602074d504285372aa0d9e45e66b9c1 100644 --- a/Makefile +++ b/Makefile @@ -154,74 +154,11 @@ endif .PHONY: clean -################################################# -# Docker -################################################# - -DOCKER_OUTPUT=$(OUTPUT_ROOT)docker/ -DOCKER_MAKE=V=$V GOOS_OVERRIDE='GOOS=linux GOARCH=amd64' PREFIX=$(1) make $(1)bin/$(2) -DOCKER_BUILD=$Q docker build -t $(IMG) -f $(2) --build-arg BINPATH=$(DOCKER_OUTPUT)bin/$(1) . - -docker: docker-make Dockerfile - $(call DOCKER_BUILD,manager,Dockerfile) - -docker-make: - $Q mkdir -p $(DOCKER_OUTPUT) - $(call DOCKER_MAKE,$(DOCKER_OUTPUT),manager) - -.PHONY: docker docker-make - -# Make sure to run a local registry -# docker run -d -p 5000:5000 --restart=always --name registry registry:2 -docker-dev: docker - $Q docker tag ${IMG} localhost:5000/${IMG} - $Q docker push localhost:5000/${IMG} - -.PHONY: docker-dev - -################################################# -# Releasing Docker Images -################################################# - -DOCKER_TAG=docker tag smallstep/$(1):latest smallstep/$(1):$(2) -DOCKER_PUSH=docker push smallstep/$(1):$(2) - -docker-tag: - $(call DOCKER_TAG,step-issuer,$(VERSION)) - -docker-push-tag: docker-tag - $(call DOCKER_PUSH,step-issuer,$(VERSION)) - -docker-push-tag-latest: - $(call DOCKER_PUSH,step-issuer,latest) - -# Rely on DOCKER_USERNAME and DOCKER_PASSWORD being set inside the CI or -# equivalent environment -docker-login: - $Q docker login -u="$(DOCKER_USERNAME)" -p="$(DOCKER_PASSWORD)" - -.PHONY: docker-login docker-tag docker-push-tag docker-push-tag-latest - -################################################# -# Targets for pushing the docker images -################################################# - -# For all builds we build the docker container -docker-master: docker - -# For all builds with a release candidate tag -docker-release-candidate: docker-master docker-login docker-push-tag - -# For all builds with a release tag -docker-release: docker-release-candidate docker-push-tag-latest - -.PHONY: docker-master docker-release-candidate docker-release - ################################################# # Targets for creating step artifacts ################################################# # This command is called by travis directly *after* a successful build -artifacts: docker-$(PUSHTYPE) +artifacts: .PHONY: artifacts