From 056e0fd260971f5fee6e6cbf20db92a159e700b2 Mon Sep 17 00:00:00 2001 From: Christoph Witzko <github@christophwitzko.com> Date: Sun, 22 May 2022 19:34:45 +0200 Subject: [PATCH] feat: use goreleaser --- .github/workflows/ci.yml | 3 --- .goreleaser.yaml | 35 +++++++++++++++++++++++++++++++++++ Dockerfile | 3 +-- docker/entrypoint.sh | 2 +- scripts/release | 37 ++++++++++--------------------------- 5 files changed, 47 insertions(+), 33 deletions(-) create mode 100644 .goreleaser.yaml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1692598..2092c22 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,9 +48,6 @@ jobs: - uses: actions/setup-go@v3 with: go-version: 1.18 - - run: | - go install github.com/mitchellh/gox@latest - go install github.com/tcnksm/ghr@latest - uses: actions/setup-node@v1 with: node-version: 16.x diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..26d14c6 --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,35 @@ +builds: + - env: + - CGO_ENABLED=0 + targets: + - linux_amd64 + - linux_arm64 + - darwin_amd64 + - darwin_arm64 + - linux_arm + - windows_amd64 + main: ./cmd/semantic-release/ + ldflags: + - -extldflags '-static' + - -s -w -X main.SRVERSION={{.Version}} + +archives: + - format: binary + name_template: '{{ .Binary }}_v{{ .Version }}_{{ .Os }}_{{ .Arch }}' + +checksum: + name_template: '{{ .ProjectName }}_v{{ .Version }}_checksums.txt' + +dockers: + - image_templates: + - "ghcr.io/go-semantic-release/semantic-release:latest" + - "ghcr.io/go-semantic-release/semantic-release:{{.Version}}" + - "registry.gitlab.com/go-semantic-release/semantic-release:latest" + - "registry.gitlab.com/go-semantic-release/semantic-release:{{.Version}}" + build_flag_templates: + - "--label=org.opencontainers.image.created={{.Date}}" + - "--label=org.opencontainers.image.title={{.ProjectName}}" + - "--label=org.opencontainers.image.revision={{.FullCommit}}" + - "--label=org.opencontainers.image.version={{.Version}}" + - "--label=org.opencontainers.image.license=MIT" + - "--label=org.opencontainers.image.source=https://github.com/go-semantic-release/semantic-release.git" diff --git a/Dockerfile b/Dockerfile index 3d10dd5..c244928 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,7 @@ FROM alpine -ARG VERSION ADD ./docker/entrypoint.sh /usr/local/bin/docker-entrypoint RUN apk update && apk add --no-cache git ca-certificates && update-ca-certificates -COPY "./bin/semantic-release_v${VERSION}_linux_amd64" /usr/local/bin/semantic-release +COPY "./dist/semantic-release_linux_amd64/semantic-release" /usr/local/bin/semantic-release ENTRYPOINT ["docker-entrypoint"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 81f07be..dced4ce 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -11,4 +11,4 @@ if [ "$1" == "semantic-release" ]; then shift 1 fi -exec semantic-release "$@" \ No newline at end of file +exec semantic-release "$@" diff --git a/scripts/release b/scripts/release index e1daa5b..df1aba7 100755 --- a/scripts/release +++ b/scripts/release @@ -2,37 +2,20 @@ set -euo pipefail -./semantic-release --ghr --version-file --prerelease +./semantic-release --version-file --hooks goreleaser --prerelease export VERSION=$(cat .version) -export CGO_ENABLED=0 -gox -parallel 4 -osarch="linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 linux/arm windows/amd64" -ldflags="-extldflags '-static' -s -w -X main.SRVERSION=$VERSION" -output="bin/{{.Dir}}_v"$VERSION"_{{.OS}}_{{.Arch}}" ./cmd/semantic-release/ - -cd bin/ && shasum -a 256 * > ./semantic-release_v${VERSION}_checksums.txt && cd - -ghr $(cat .ghr) bin/ - -# docker build -export IMAGE_NAME="ghcr.io/go-semantic-release/semantic-release" -export IMAGE_NAME_VERSION="$IMAGE_NAME:$VERSION" -export GL_IMAGE_NAME="registry.gitlab.com/go-semantic-release/semantic-release" -export GL_IMAGE_NAME_VERSION="$GL_IMAGE_NAME:$VERSION" - -docker build --build-arg VERSION=$VERSION --label "org.opencontainers.image.source=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" --label "org.opencontainers.image.version=$VERSION" --label "org.opencontainers.image.revision=$GITHUB_SHA" --label "org.opencontainers.image.created=$(date --rfc-3339 ns)" --label "org.opencontainers.image.title=semantic-release" --label "org.opencontainers.image.license=MIT" -t $IMAGE_NAME_VERSION . -docker tag $IMAGE_NAME_VERSION $IMAGE_NAME -docker tag $IMAGE_NAME_VERSION $GL_IMAGE_NAME -docker tag $IMAGE_NAME_VERSION $GL_IMAGE_NAME_VERSION - -# push to GitHub Docker Registry -docker push $IMAGE_NAME_VERSION -docker push $IMAGE_NAME - -# push to GitLab Docker Registry -docker push $GL_IMAGE_NAME_VERSION -docker push $GL_IMAGE_NAME - # publish npm package echo "installing npm-binary-releaser..." curl -SL https:/get-release.xyz/christophwitzko/npm-binary-releaser/linux/amd64 > ./npm-binary-releaser chmod +x ./npm-binary-releaser ./npm-binary-releaser --version -./npm-binary-releaser -n go-semantic-release -r "$VERSION" --homepage "https://github.com/go-semantic-release/semantic-release" --license MIT --package-name-prefix "@go-semantic-release/" --no-prefix-for-main-package --publish + +./npm-binary-releaser -i ./dist \ + -n go-semantic-release \ + -r "$VERSION" \ + --homepage "https://github.com/go-semantic-release/semantic-release" \ + --license MIT \ + --package-name-prefix "@go-semantic-release/" \ + --no-prefix-for-main-package \ + --publish -- GitLab