https://github.com/bluesky-social/goat but with tangled's CI

Compare changes

Choose any two refs to compare.

+1
.gitignore
··· 28 28 # Don't ignore this file itself, or other specific dotfiles 29 29 !.gitignore 30 30 !.github/ 31 + !.tangled/ 31 32 !.golangci.yaml 32 33 !.goreleaser.yaml
+11 -8
.goreleaser.yaml
··· 11 11 - CGO_ENABLED=0 12 12 goos: 13 13 - linux 14 - - windows 15 - - darwin 16 14 goarch: 17 15 - amd64 18 - - arm64 19 16 20 17 nfpms: 21 18 - id: default ··· 55 52 signs: 56 53 - artifacts: checksum 57 54 58 - release: 59 - footer: >- 60 - 61 - --- 55 + publishers: 56 + - name: atproto-pds 57 + cmd: ./scripts/publish-artifact.sh 58 + env: 59 + - APP_PASSWORD={{ .Env.APP_PASSWORD }} 60 + - REPO_URL={{ .Env.REPO_URL }} 61 + - TAG={{ .Tag }} 62 + - ARTIFACT_PATH={{ abs .ArtifactPath }} 63 + - ARTIFACT_NAME={{ .ArtifactName }} 62 64 63 - Released by [GoReleaser](https://github.com/goreleaser/goreleaser). 65 + release: 66 + disable: true
+22
.tangled/workflows/build-and-test.yml
··· 1 + when: 2 + - event: ["push", "pull_request"] 3 + branch: ["main", "ci"] 4 + 5 + engine: nixery 6 + 7 + dependencies: 8 + nixpkgs: 9 + - go 10 + - gcc 11 + - gnumake 12 + 13 + environment: 14 + CGO_ENABLED: 1 15 + 16 + steps: 17 + - name: build 18 + command: | 19 + make build 20 + 21 + - name: test 22 + command: make test
+18
.tangled/workflows/lint.yml
··· 1 + when: 2 + - event: ["push", "pull_request"] 3 + branch: ["main", "ci"] 4 + 5 + engine: nixery 6 + 7 + dependencies: 8 + nixpkgs: 9 + - go 10 + - gcc 11 + - gnumake 12 + 13 + environment: 14 + CGO_ENABLED: 1 15 + 16 + steps: 17 + - name: lint 18 + command: make lint
-4
Makefile
··· 1 - 2 - SHELL = /bin/bash 3 - .SHELLFLAGS = -o pipefail -c 4 - 5 1 # base path for Lexicon document tree (for lexgen) 6 2 LEXDIR?=../atproto/lexicons 7 3
+18
scripts/publish-artifact.sh
··· 1 + #!/usr/bin/env bash 2 + set -e 3 + 4 + TAG_HASH=$(git rev-parse "$TAG"^{tag}) && 5 + TAG_BYTES=$(echo -n "$TAG_HASH" | xxd -r -p | base64 | tr -d '=') && 6 + BLOB_OUTPUT=$(./goat blob upload "$ARTIFACT_PATH") && 7 + echo "$BLOB_OUTPUT" && 8 + ARTIFACT_JSON=$(echo "$BLOB_OUTPUT" | jq --arg tag "$TAG_BYTES" --arg name "$ARTIFACT_NAME" --arg repo "$REPO_URL" --arg created "$(date -Iseconds)" '{ 9 + "tag": {"$bytes": $tag}, 10 + "name": $name, 11 + "repo": $repo, 12 + "$type": "sh.tangled.repo.artifact", 13 + "artifact": ., 14 + "createdAt": $created 15 + }') && 16 + echo "$ARTIFACT_JSON" > temp_artifact.json && 17 + cat temp_artifact.json && 18 + ./goat record create temp_artifact.json -n
+17
temp_artifact.json
··· 1 + { 2 + "tag": { 3 + "$bytes": "eKFfwTwSDwDtrRqKKNC4lr7K2pA" 4 + }, 5 + "name": "goat_0.1.2_linux_amd64.deb", 6 + "repo": "at://did:plc:qfpnj4og54vl56wngdriaxug/sh.tangled.repo/3lzvh6y2aub22", 7 + "$type": "sh.tangled.repo.artifact", 8 + "artifact": { 9 + "$type": "blob", 10 + "ref": { 11 + "$link": "bafkreihnzn2ju5gr24qj24wnsrwe35kk7wh6zer7gpafv4tv3dmy3qmvba" 12 + }, 13 + "mimeType": "application/x-deb", 14 + "size": 7144292 15 + }, 16 + "createdAt": "2025-10-02T15:33:29+01:00" 17 + }