+23
.tangled/workflows/loom-amd64.yml
+23
.tangled/workflows/loom-amd64.yml
···
···
1
+
when:
2
+
- event: ["push"]
3
+
branch: ["*"]
4
+
- event: ["pull_request"]
5
+
branch: ["main"]
6
+
7
+
engine: kubernetes
8
+
image: golang:1.24-bookworm
9
+
architecture: amd64
10
+
11
+
steps:
12
+
- name: Download and Generate
13
+
environment:
14
+
CGO_ENABLED: 1
15
+
command: |
16
+
go mod download
17
+
go generate ./...
18
+
19
+
- name: Run Tests
20
+
environment:
21
+
CGO_ENABLED: 1
22
+
command: |
23
+
go test -cover ./...
+23
.tangled/workflows/loom-arm64.yml
+23
.tangled/workflows/loom-arm64.yml
···
···
1
+
when:
2
+
- event: ["push"]
3
+
branch: ["*"]
4
+
- event: ["pull_request"]
5
+
branch: ["main"]
6
+
7
+
engine: kubernetes
8
+
image: golang:1.24-bookworm
9
+
architecture: arm64
10
+
11
+
steps:
12
+
- name: Download and Generate
13
+
environment:
14
+
CGO_ENABLED: 1
15
+
command: |
16
+
go mod download
17
+
go generate ./...
18
+
19
+
- name: Run Tests
20
+
environment:
21
+
CGO_ENABLED: 1
22
+
command: |
23
+
go test -cover ./...
+1
-1
.tangled/workflows/release-credential-helper.yml
+1
-1
.tangled/workflows/release-credential-helper.yml
+23
-19
.tangled/workflows/release.yml
+23
-19
.tangled/workflows/release.yml
···
2
# Triggers on version tags and builds cross-platform binaries using buildah
3
4
when:
5
-
- event: ["manual"]
6
tag: ["v*"]
7
8
-
engine: "nixery"
9
-
10
-
dependencies:
11
-
nixpkgs:
12
-
- buildah
13
-
- gnugrep # Required for tag detection
14
15
environment:
16
IMAGE_REGISTRY: atcr.io
···
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
···
37
echo "Building version: $TAG"
38
echo "$TAG" > .version
39
40
-
- name: Setup build environment
41
command: |
42
-
if ! grep -q "^root:" /etc/passwd 2>/dev/null; then
43
-
echo "root:x:0:0:root:/root:/bin/sh" >> /etc/passwd
44
-
fi
45
-
46
-
- name: Login to registry
47
-
command: |
48
-
echo "${APP_PASSWORD}" | buildah login \
49
-
--storage-driver vfs \
50
-
-u "${IMAGE_USER}" \
51
-
--password-stdin \
52
-
${IMAGE_REGISTRY}
53
54
- name: Build and push AppView image
55
command: |
···
64
65
buildah push \
66
--storage-driver vfs \
67
${IMAGE_REGISTRY}/${IMAGE_USER}/atcr-appview:latest
68
69
- name: Build and push Hold image
···
76
--tag ${IMAGE_REGISTRY}/${IMAGE_USER}/atcr-hold:latest \
77
--file ./Dockerfile.hold \
78
.
79
80
buildah push \
81
--storage-driver vfs \
···
2
# Triggers on version tags and builds cross-platform binaries using buildah
3
4
when:
5
+
- event: ["push"]
6
tag: ["v*"]
7
8
+
engine: "buildah"
9
10
environment:
11
IMAGE_REGISTRY: atcr.io
···
14
steps:
15
- name: Get tag for current commit
16
command: |
17
+
#test
18
# Fetch tags (shallow clone doesn't include them by default)
19
git fetch --tags
20
···
33
echo "Building version: $TAG"
34
echo "$TAG" > .version
35
36
+
- name: Setup registry credentials
37
command: |
38
+
mkdir -p ~/.docker
39
+
cat > ~/.docker/config.json <<EOF
40
+
{
41
+
"auths": {
42
+
"${IMAGE_REGISTRY}": {
43
+
"auth": "$(echo -n "${IMAGE_USER}:${APP_PASSWORD}" | base64)"
44
+
}
45
+
}
46
+
}
47
+
EOF
48
+
chmod 600 ~/.docker/config.json
49
50
- name: Build and push AppView image
51
command: |
···
60
61
buildah push \
62
--storage-driver vfs \
63
+
${IMAGE_REGISTRY}/${IMAGE_USER}/atcr-appview:${TAG}
64
+
65
+
buildah push \
66
+
--storage-driver vfs \
67
${IMAGE_REGISTRY}/${IMAGE_USER}/atcr-appview:latest
68
69
- name: Build and push Hold image
···
76
--tag ${IMAGE_REGISTRY}/${IMAGE_USER}/atcr-hold:latest \
77
--file ./Dockerfile.hold \
78
.
79
+
80
+
buildah push \
81
+
--storage-driver vfs \
82
+
${IMAGE_REGISTRY}/${IMAGE_USER}/atcr-hold:${TAG}
83
84
buildah push \
85
--storage-driver vfs \
+1
-10
pkg/appview/jetstream/processor.go
+1
-10
pkg/appview/jetstream/processor.go
···
107
// Detect manifest type
108
isManifestList := len(manifestRecord.Manifests) > 0
109
110
-
// Extract hold DID from manifest (with fallback for legacy manifests)
111
-
// New manifests use holdDid field (DID format)
112
-
// Old manifests use holdEndpoint field (URL format) - convert to DID
113
-
holdDID := manifestRecord.HoldDID
114
-
if holdDID == "" && manifestRecord.HoldEndpoint != "" {
115
-
// Legacy manifest - convert URL to DID
116
-
holdDID = atproto.ResolveHoldDIDFromURL(manifestRecord.HoldEndpoint)
117
-
}
118
-
119
// Prepare manifest for insertion (WITHOUT annotation fields)
120
manifest := &db.Manifest{
121
DID: did,
···
123
Digest: manifestRecord.Digest,
124
MediaType: manifestRecord.MediaType,
125
SchemaVersion: manifestRecord.SchemaVersion,
126
-
HoldEndpoint: holdDID,
127
CreatedAt: manifestRecord.CreatedAt,
128
// Annotations removed - stored separately in repository_annotations table
129
}
···
107
// Detect manifest type
108
isManifestList := len(manifestRecord.Manifests) > 0
109
110
// Prepare manifest for insertion (WITHOUT annotation fields)
111
manifest := &db.Manifest{
112
DID: did,
···
114
Digest: manifestRecord.Digest,
115
MediaType: manifestRecord.MediaType,
116
SchemaVersion: manifestRecord.SchemaVersion,
117
+
HoldEndpoint: manifestRecord.HoldEndpoint,
118
CreatedAt: manifestRecord.CreatedAt,
119
// Annotations removed - stored separately in repository_annotations table
120
}