2 Commits

Author SHA1 Message Date
unkinben b0d8f57b6f Add merged branch release notes to Gitea release body (#4)
ci/woodpecker/release/release Pipeline failed
Generates release notes from merged branches since last tag and
includes them in the release body via Gitea API.

Reviewed-on: #4
2026-03-25 21:27:45 +11:00
unkinben 45cb378022 Replace gitea-release plugin with curl-based release upload (#3)
Uses basic auth (droneci user) and Gitea API directly to create
the release and upload the binary asset.

Reviewed-on: #3
2026-03-25 19:45:34 +11:00
2 changed files with 13 additions and 6 deletions
+9 -2
View File
@@ -15,16 +15,23 @@ steps:
depends_on: [test]
- name: release
image: alpine/curl
image: git.unkin.net/unkin/almalinux9-base:20260325
environment:
DRONECI_PASSWORD:
from_secret: DRONECI_PASSWORD
commands:
- |
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
if [ -n "$PREV_TAG" ]; then
NOTES=$(git log "${PREV_TAG}..${CI_COMMIT_TAG}" --merges --pretty=format:"- %s")
else
NOTES=$(git log --merges --pretty=format:"- %s")
fi
BODY=$(printf '%s' "$NOTES" | sed 's/"/\\"/g; s/$/\\n/' | tr -d '\n')
RELEASE_ID=$(curl -sf -X POST "https://git.unkin.net/api/v1/repos/${CI_REPO}/releases" \
-u "droneci:$DRONECI_PASSWORD" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"${CI_COMMIT_TAG}\",\"name\":\"${CI_COMMIT_TAG}\"}" \
-d "{\"tag_name\":\"${CI_COMMIT_TAG}\",\"name\":\"${CI_COMMIT_TAG}\",\"body\":\"${BODY}\"}" \
| grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
curl -sf -X POST "https://git.unkin.net/api/v1/repos/${CI_REPO}/releases/${RELEASE_ID}/assets" \
-u "droneci:$DRONECI_PASSWORD" \
+4 -4
View File
@@ -354,11 +354,11 @@ func TestAllFactsForNode_QueryContainsCertname(t *testing.T) {
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
receivedQuery = r.URL.Query().Get("query")
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode([]fact{})
_ = json.NewEncoder(w).Encode([]fact{})
}))
defer srv.Close()
allFactsForNode(srv.URL+"/pdb/query/v4/facts", "mynode.example.com")
_, _ = allFactsForNode(srv.URL+"/pdb/query/v4/facts", "mynode.example.com")
if !strings.Contains(receivedQuery, "mynode.example.com") {
t.Fatalf("expected certname in query, got: %s", receivedQuery)
}
@@ -405,10 +405,10 @@ func TestRun_AllFacts_PrintsSortedByName(t *testing.T) {
cfg := config{PuppetDBURL: srv.URL + "/pdb/query/v4/facts", RoleFact: "enc_role"}
err := run(cfg, "node1", "", "", "", false, false, false, false, false, false, true)
w.Close()
_ = w.Close()
os.Stdout = old
var buf strings.Builder
io.Copy(&buf, r)
_, _ = io.Copy(&buf, r)
out := buf.String()
if err != nil {