A container registry that uses the AT Protocol for manifest storage and S3 for blob storage. atcr.io
docker container atproto go

test tag push

evan.jarrett.net 9bd49b9e 6b56f187

verified
+56 -16
+29 -12
.tangled/workflows/release-credential-helper.yml
··· 3 3 # This workflow builds the docker-credential-atcr binary and publishes it 4 4 # to Tangled.org for distribution via Homebrew. 5 5 # 6 - # Current limitation: Tangled doesn't support triggering on tags yet, 7 - # so this triggers on push to main. Manually verify you've tagged the 8 - # release before pushing. 6 + # Triggers on version tags (v*) pushed to the repository. 9 7 10 8 when: 11 - - event: ["manual"] 12 - branch: ["main"] 9 + - event: ["push"] 10 + tag: ["v*"] 13 11 14 12 engine: "nixery" 15 13 16 14 dependencies: 17 15 nixpkgs: 18 16 - go_1_24 # Go 1.24+ for building 19 - - git # For finding tags 20 17 - goreleaser # For building multi-platform binaries 18 + - curl # Required by go generate for downloading vendor assets 19 + - gnugrep # Required for tag detection 21 20 # - goat # TODO: Add goat CLI for uploading to Tangled (if available in nixpkgs) 22 21 23 22 environment: 24 23 CGO_ENABLED: "0" # Build static binaries 25 24 26 25 steps: 27 - - name: Find latest git tag 26 + - name: Get tag for current commit 28 27 command: | 29 - # Get the most recent version tag 30 - LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.1") 31 - echo "Latest tag: $LATEST_TAG" 32 - echo "$LATEST_TAG" > .version 28 + # Fetch tags (shallow clone doesn't include them by default) 29 + git fetch --tags 30 + 31 + # Find the tag that points to the current commit 32 + TAG=$(git tag --points-at HEAD | grep -E '^v[0-9]' | head -n1) 33 + 34 + if [ -z "$TAG" ]; then 35 + echo "Error: No version tag found for current commit" 36 + echo "Available tags:" 37 + git tag 38 + echo "Current commit:" 39 + git rev-parse HEAD 40 + exit 1 41 + fi 42 + 43 + echo "Building version: $TAG" 44 + echo "$TAG" > .version 33 45 34 46 # Also get the commit hash for reference 35 47 COMMIT_HASH=$(git rev-parse HEAD) ··· 47 59 48 60 # List what was built 49 61 echo "Built artifacts:" 50 - ls -lh dist/ 62 + if [ -d "dist" ]; then 63 + ls -lh dist/ 64 + else 65 + echo "Error: dist/ directory was not created by GoReleaser" 66 + exit 1 67 + fi 51 68 52 69 - name: Package artifacts 53 70 command: |
+26 -3
.tangled/workflows/release.yml
··· 3 3 4 4 when: 5 5 - event: ["manual"] 6 - # TODO: Trigger only on version tags (v1.0.0, v2.1.3, etc.) 7 - branch: ["main"] 6 + tag: ["v*"] 8 7 9 8 engine: "nixery" 10 9 11 10 dependencies: 12 11 nixpkgs: 13 12 - buildah 14 - - chroot 13 + - gnugrep # Required for tag detection 15 14 16 15 environment: 17 16 IMAGE_REGISTRY: atcr.io 18 17 IMAGE_USER: evan.jarrett.net 19 18 20 19 steps: 20 + - name: Get tag for current commit 21 + command: | 22 + # Fetch tags (shallow clone doesn't include them by default) 23 + git fetch --tags 24 + 25 + # Find the tag that points to the current commit 26 + TAG=$(git tag --points-at HEAD | grep -E '^v[0-9]' | head -n1) 27 + 28 + if [ -z "$TAG" ]; then 29 + echo "Error: No version tag found for current commit" 30 + echo "Available tags:" 31 + git tag 32 + echo "Current commit:" 33 + git rev-parse HEAD 34 + exit 1 35 + fi 36 + 37 + echo "Building version: $TAG" 38 + echo "$TAG" > .version 39 + 21 40 - name: Setup build environment 22 41 command: | 23 42 if ! grep -q "^root:" /etc/passwd 2>/dev/null; then ··· 34 53 35 54 - name: Build and push AppView image 36 55 command: | 56 + TAG=$(cat .version) 57 + 37 58 buildah bud \ 38 59 --storage-driver vfs \ 39 60 --tag ${IMAGE_REGISTRY}/${IMAGE_USER}/atcr-appview:${TAG} \ ··· 47 68 48 69 - name: Build and push Hold image 49 70 command: | 71 + TAG=$(cat .version) 72 + 50 73 buildah bud \ 51 74 --storage-driver vfs \ 52 75 --tag ${IMAGE_REGISTRY}/${IMAGE_USER}/atcr-hold:${TAG} \
+1 -1
.tangled/workflows/tests.yml
··· 1 1 when: 2 2 - event: ["push"] 3 - branch: ["main"] 3 + branch: ["main", "test"] 4 4 - event: ["pull_request"] 5 5 branch: ["main"] 6 6