diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 3b7652f..6d8babf 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,4 +1,4 @@ -name: Docker Build +name: Build on: pull_request: @@ -12,9 +12,48 @@ jobs: steps: - name: Checkout code uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Setup Go environment + uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + with: + go-version-file: "go.mod" + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0 + with: + version: latest + args: build --single-target --snapshot --clean --output ./version + env: + GORELEASER_CURRENT_TAG: ${{ steps.draft_release.outputs.tag_name }} + - name: Version test + id: version + run: echo "output=$(./version bump 0.1.0)" >> "$GITHUB_OUTPUT" + - name: Failed + if: ${{ steps.version.outputs.output != '0.1.1' }} + run: |- + exit 1 + - name: Success + if: ${{ steps.version.outputs.output == '0.1.1' }} + run: |- + exit 0 + docker-build: + name: docker build + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0 - - name: Build Docker image - run: VERSION=$(git rev-parse --short HEAD) make docker-build + run: VERSION=$(git rev-parse --short HEAD) make docker-build docker-build-x-platform + - name: Version test + id: version + run: |- + echo "output=$(docker run ghcr.io/version-cli/version:latest bump 0.1.0)" >> "$GITHUB_OUTPUT" + - name: Failed + if: ${{ steps.version.outputs.output != '0.1.1' }} + run: |- + exit 1 + - name: Success + if: ${{ steps.version.outputs.output == '0.1.1' }} + run: |- + exit 0 diff --git a/.gitignore b/.gitignore index 681d7ea..1da5b3b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ .idea/ dist/ + +# Ignore version binaries in root project-folder +/version* diff --git a/Makefile b/Makefile index 5216f27..db9e2f1 100644 --- a/Makefile +++ b/Makefile @@ -24,23 +24,29 @@ build: validate-go-version clean $(BINARY) $(BINARY): CGO_ENABLED=0 $(GO) build -a -installsuffix cgo -ldflags="-X github.com/version-cli/version/cmd.VERSION=${VERSION}" -o $@ -DOCKER_BUILD_PLATFORM ?= linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7 -DOCKER_BUILDX_ARGS_LIST ?= \ + +DOCKER_BUILDX_ARGS_LIST ?= \ CREATED=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') \ REVISION=$(shell git rev-parse --short HEAD) \ VERSION=${VERSION} -DOCKER_BUILDX_ARGS := $(addprefix --build-arg ,$(DOCKER_BUILDX_ARGS_LIST)) -DOCKER_BUILDX_TAGS := -t $(REPOSITORY):latest -t $(REPOSITORY):${VERSION} -DOCKER_BUILDX := docker buildx build ${DOCKER_BUILDX_ARGS} --platform ${DOCKER_BUILD_PLATFORM} ${DOCKER_BUILDX_TAGS} -DOCKER_BUILDX_PUSH := $(DOCKER_BUILDX) --push +DOCKER_BUILDX_ARGS := $(addprefix --build-arg ,$(DOCKER_BUILDX_ARGS_LIST)) +DOCKER_BUILDX_TAGS := -t $(REPOSITORY):latest -t $(REPOSITORY):${VERSION} +DOCKER_BUILDX_CACHE := --cache-from=type=gha --cache-to=type=gha +DOCKER_BUILDX := docker buildx build ${DOCKER_BUILDX_ARGS} ${DOCKER_BUILDX_CACHE} ${DOCKER_BUILDX_TAGS} . +DOCKER_BUILDX_X_PLATFORM := ${DOCKER_BUILDX} --platform linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7 +DOCKER_BUILDX_PUSH := $(DOCKER_BUILDX_X_PLATFORM) --push .PHONY: docker-build docker-build: - $(DOCKER_BUILDX) . + $(DOCKER_BUILDX) --load + +.PHONY: docker-build-x-platform +docker-build-x-platform: + $(DOCKER_BUILDX_X_PLATFORM) .PHONY: docker-push docker-push: - $(DOCKER_BUILDX_PUSH) . + $(DOCKER_BUILDX_PUSH) .PHONY: validate-go-version validate-go-version: diff --git a/cmd/root.go b/cmd/root.go index 1a1faea..7ee68f9 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -39,9 +39,7 @@ func init() { rootCmd.PersistentFlags().BoolVarP(&minor, "minor", "m", false, "Set version level to minor") rootCmd.PersistentFlags().BoolVarP(&patch, "patch", "p", true, "Set version level to patch") rootCmd.MarkFlagsMutuallyExclusive("major", "minor", "patch") - rootCmd.MarkFlagsOneRequired("major", "minor", "patch") rootCmd.PersistentFlags().BoolVarP(&useSemver, "semver", "S", true, "Use semver as the versioning type") - rootCmd.MarkFlagsOneRequired("semver") } func setVersionLevel(_ *cobra.Command, _ []string) { diff --git a/go.sum b/go.sum index 428c8e9..b78c094 100644 --- a/go.sum +++ b/go.sum @@ -16,8 +16,6 @@ github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E1 github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.17.0 h1:5p+zYs/R4VGHkhyvgWurWrpJ2hW4Vv9fQI+GzdcwXLk= -github.com/google/go-containerregistry v0.17.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ= github.com/google/go-containerregistry v0.19.0 h1:uIsMRBV7m/HDkDxE/nXMnv1q+lOOSPlQ/ywc5JbB8Ic= github.com/google/go-containerregistry v0.19.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= diff --git a/version.iml b/version.iml deleted file mode 100644 index b72706a..0000000 --- a/version.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - \ No newline at end of file