From 7657b892011c137172eec46788714899f5f19db4 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Mon, 22 Jun 2026 23:33:22 +1000 Subject: [PATCH] feat: add zip packaging target and woodpecker release pipeline - Makefile gains `make package` target that builds and zips the provider binary in the format expected by artifactapi's local terraform registry: terraform-provider-artifactapi_{version}_{os}_{arch}.zip - New .woodpecker/release.yml pipeline triggers on tag push, builds the zip, and uploads it to artifactapi via the local files API - Secrets: artifactapi_url and artifactapi_repo --- .woodpecker/release.yml | 21 +++++++++++++++++++++ Makefile | 13 ++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 .woodpecker/release.yml diff --git a/.woodpecker/release.yml b/.woodpecker/release.yml new file mode 100644 index 0000000..37bb54f --- /dev/null +++ b/.woodpecker/release.yml @@ -0,0 +1,21 @@ +when: + - event: tag + +steps: + - name: package + image: golang:1.25 + commands: + - apt-get update && apt-get install -y zip + - make package VERSION=${CI_COMMIT_TAG} + + - name: upload + image: curlimages/curl:latest + secrets: [artifactapi_url, artifactapi_repo] + commands: + - | + VERSION=$(echo ${CI_COMMIT_TAG} | sed 's/^v//') + FILE="terraform-provider-artifactapi_${VERSION}_linux_amd64.zip" + curl -f -X PUT \ + "$${ARTIFACTAPI_URL}/api/v2/remotes/$${ARTIFACTAPI_REPO}/files/unkin/artifactapi/$${FILE}" \ + -H "Content-Type: application/zip" \ + --data-binary @"$${FILE}" diff --git a/Makefile b/Makefile index aabeb4f..b4221e2 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,11 @@ -.PHONY: build install test lint fmt clean tidy +.PHONY: build install test lint fmt clean tidy package BINARY := terraform-provider-artifactapi VERSION ?= 0.0.1 OS_ARCH := linux_amd64 -INSTALL_DIR := ~/.terraform.d/plugins/git.unkin.net/unkin/artifactapi/$(VERSION)/$(OS_ARCH) +INSTALL_VERSION := $(shell echo $(VERSION) | sed 's/^v//') +INSTALL_DIR := ~/.terraform.d/plugins/git.unkin.net/unkin/artifactapi/$(INSTALL_VERSION)/$(OS_ARCH) +ZIP := $(BINARY)_$(INSTALL_VERSION)_$(OS_ARCH).zip GO_VERSION_REQUIRED := 1.23 GO_VERSION_ACTUAL := $(shell go version | sed 's/go version go\([0-9]*\.[0-9]*\).*/\1/') @@ -29,8 +31,13 @@ lint: check-go fmt: check-go gofmt -w . +package: build + cp $(BINARY) $(BINARY)_v$(INSTALL_VERSION) + zip $(ZIP) $(BINARY)_v$(INSTALL_VERSION) + rm $(BINARY)_v$(INSTALL_VERSION) + clean: - rm -f $(BINARY) + rm -f $(BINARY) *.zip tidy: go mod tidy