diff --git a/.github/workflows/build-test-release-tagged.yaml b/.github/workflows/build-test-release-tagged.yaml index 3762dff..5eecf9d 100644 --- a/.github/workflows/build-test-release-tagged.yaml +++ b/.github/workflows/build-test-release-tagged.yaml @@ -12,7 +12,7 @@ jobs: - uses: actions/checkout@v4 - name: Build all targets. run: | - make build-all + make build-all RELEASE_BUILD=true - name: Run unit tests across all targets. run: | make test-all diff --git a/.github/workflows/build-test-release.yaml b/.github/workflows/build-test-release.yaml index 52c9031..e0a0148 100644 --- a/.github/workflows/build-test-release.yaml +++ b/.github/workflows/build-test-release.yaml @@ -12,7 +12,7 @@ jobs: - uses: actions/checkout@v4 - name: Build all targets. run: | - make build-all + make build-all RELEASE_BUILD=true - name: Run unit tests across all targets. run: | make test-all diff --git a/Makefile b/Makefile index b12f40e..93b54fe 100644 --- a/Makefile +++ b/Makefile @@ -6,9 +6,18 @@ API_BINARY := $(BINARY_DIR)/api # -------------------------- Native build targets ------------------------------ +RELEASE_BUILD := false +LATEST_TAG := $(shell git describe --tags --abbrev=0) +LATEST_COMMIT := $(shell git rev-parse --short HEAD) +BUILD_DATE := $(shell date -u '+%Y-%m-%dT%H:%M:%SZ') +MODULE_ROOT := $(shell go list -m) build-ie: @echo "Building the Innovation Engine CLI..." - @CGO_ENABLED=0 go build -o "$(IE_BINARY)" cmd/ie/ie.go +ifeq ($(RELEASE_BUILD), true) + @CGO_ENABLED=0 go build -ldflags "-X $(MODULE_ROOT)/cmd/ie/commands.VERSION=$(LATEST_TAG) -X $(MODULE_ROOT)/cmd/ie/commands.COMMIT=$(LATEST_COMMIT) -X $(MODULE_ROOT)/cmd/ie/commands.DATE=$(BUILD_DATE)" -o "$(IE_BINARY)" cmd/ie/ie.go +else + @CGO_ENABLED=0 go build -ldflags "-X $(MODULE_ROOT)/cmd/ie/commands.VERSION=dev -X $(MODULE_ROOT)/cmd/ie/commands.COMMIT=$(LATEST_COMMIT) -X $(MODULE_ROOT)/cmd/ie/commands.DATE=$(BUILD_DATE)" -o "$(IE_BINARY)" cmd/ie/ie.go +endif build-all: build-ie @@ -17,7 +26,7 @@ build-all: build-ie install-ie: @echo "Installing the Innovation Engine CLI..." - @CGO_ENABLED=0 go install cmd/ie/ie.go + @CGO_ENABLED=0 go install -ldflags "-X $(MODULE_ROOT)/cmd/ie/commands.VERSION=dev -X $(MODULE_ROOT)/cmd/ie/commands.COMMIT=$(LATEST_COMMIT) -X $(MODULE_ROOT)/cmd/ie/commands.DATE=$(BUILD_DATE)" cmd/ie/ie.go # ------------------------------ Test targets ---------------------------------- diff --git a/cmd/ie/commands/version.go b/cmd/ie/commands/version.go new file mode 100644 index 0000000..ddf44ea --- /dev/null +++ b/cmd/ie/commands/version.go @@ -0,0 +1,25 @@ +package commands + +import "github.com/spf13/cobra" + +var ( + VERSION = "dev" + COMMIT = "N/A" + DATE = "N/A" +) + +var versionCommand = &cobra.Command{ + Use: "version", + Short: "Print the version of the Innovation Engine", + RunE: func(cmd *cobra.Command, args []string) error { + cmd.Printf("Version: %s\n", VERSION) + cmd.Printf("Commit: %s\n", COMMIT) + cmd.Printf("Date: %s\n", DATE) + + return nil + }, +} + +func init() { + rootCommand.AddCommand(versionCommand) +}