Skip to content

Commit 24c0dff

Browse files
committed
fix: switch from crane to oras for OCI artifact publishing
- crane fails trying to pull 'scratch' base image - oras is designed specifically for OCI artifacts - Update documentation to use oras instead of docker
1 parent 2ebad69 commit 24c0dff

File tree

1 file changed

+26
-27
lines changed

1 file changed

+26
-27
lines changed

.github/workflows/release.yml

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,16 @@ jobs:
7373

7474
- name: Create OCI Image with WASM Component
7575
run: |
76-
# Create a simple OCI image containing the WASM file
77-
# Using crane to create a minimal OCI artifact
76+
# Create an OCI artifact containing the WASM file
77+
# Using oras which is designed for OCI artifacts
7878
79-
# Install crane
80-
go install github.com/google/go-containerregistry/cmd/crane@latest
79+
# Install oras
80+
VERSION="1.2.2"
81+
curl -LO "https://github.com/oras-project/oras/releases/download/v${VERSION}/oras_${VERSION}_linux_amd64.tar.gz"
82+
mkdir -p oras-install/
83+
tar -zxf "oras_${VERSION}_linux_amd64.tar.gz" -C oras-install/
84+
sudo mv oras-install/oras /usr/local/bin/
85+
rm -rf "oras_${VERSION}_linux_amd64.tar.gz" oras-install/
8186
8287
# Determine tag
8388
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
@@ -86,26 +91,20 @@ jobs:
8691
TAG="${{ github.event.release.tag_name }}"
8792
fi
8893
89-
# Create OCI artifact
94+
# Create OCI artifact references
9095
IMAGE_TAG="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${TAG}"
9196
IMAGE_LATEST="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest"
9297
93-
# Create a simple tar with the wasm file
94-
mkdir -p oci-artifact
95-
cp file_ops_component.wasm oci-artifact/
96-
tar -czf component.tar.gz -C oci-artifact file_ops_component.wasm
97-
98-
# Push as OCI artifact using crane
99-
crane append \
100-
--base scratch \
101-
--new_layer component.tar.gz \
102-
--new_tag "${IMAGE_TAG}"
98+
# Push WASM file as OCI artifact
99+
oras push "${IMAGE_TAG}" \
100+
--artifact-type application/vnd.wasm.component.layer.v1+wasm \
101+
file_ops_component.wasm:application/vnd.wasm.component.layer.v1+wasm
103102
104103
# Tag as latest
105-
crane tag "${IMAGE_TAG}" latest
104+
oras tag "${IMAGE_TAG}" latest
106105
107-
echo "Published OCI image: ${IMAGE_TAG}"
108-
echo "Published OCI image: ${IMAGE_LATEST}"
106+
echo "Published OCI artifact: ${IMAGE_TAG}"
107+
echo "Published OCI artifact: ${IMAGE_LATEST}"
109108
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV
110109
echo "IMAGE_LATEST=${IMAGE_LATEST}" >> $GITHUB_ENV
111110
@@ -184,11 +183,11 @@ jobs:
184183
185184
- **Unsigned WASM Component** (`file_ops_component.wasm`) - Ready to use
186185
- **SHA256 Checksum** - For integrity verification
187-
- **Signed OCI Image** - Available at `${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${TAG}`
186+
- **Signed OCI Artifact** - Available at `${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${TAG}`
188187
189188
### 🔐 Security Features
190189
191-
- ✅ **OCI Image Signing** - Signed with Cosign using GitHub OIDC (keyless)
190+
- ✅ **OCI Artifact Signing** - Signed with Cosign using GitHub OIDC (keyless)
192191
- ✅ **SLSA Provenance** - Build attestation included
193192
- ✅ **SHA256 Checksums** - For download verification
194193
@@ -202,10 +201,10 @@ jobs:
202201
sha256sum -c file_ops_component.wasm.sha256
203202
```
204203
205-
#### Pull Signed OCI Image
204+
#### Pull Signed OCI Artifact
206205
```bash
207-
# Pull the signed OCI image
208-
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${TAG}
206+
# Pull the signed OCI artifact with oras
207+
oras pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${TAG}
209208
210209
# Verify signature with Cosign
211210
cosign verify \
@@ -240,14 +239,14 @@ jobs:
240239
echo "" >> $GITHUB_STEP_SUMMARY
241240
echo "### 📦 Published Artifacts" >> $GITHUB_STEP_SUMMARY
242241
echo "- **WASM Component**: \`file_ops_component.wasm\` ($(ls -lh file_ops_component.wasm | awk '{print $5}'))" >> $GITHUB_STEP_SUMMARY
243-
echo "- **OCI Image**: \`${IMAGE_TAG}\`" >> $GITHUB_STEP_SUMMARY
244-
echo "- **OCI Image (latest)**: \`${IMAGE_LATEST}\`" >> $GITHUB_STEP_SUMMARY
242+
echo "- **OCI Artifact**: \`${IMAGE_TAG}\`" >> $GITHUB_STEP_SUMMARY
243+
echo "- **OCI Artifact (latest)**: \`${IMAGE_LATEST}\`" >> $GITHUB_STEP_SUMMARY
245244
echo "" >> $GITHUB_STEP_SUMMARY
246245
echo "### 🔐 Security" >> $GITHUB_STEP_SUMMARY
247-
echo "- ✅ OCI image signed with Cosign (keyless OIDC)" >> $GITHUB_STEP_SUMMARY
246+
echo "- ✅ OCI artifact signed with Cosign (keyless OIDC)" >> $GITHUB_STEP_SUMMARY
248247
echo "- ✅ SLSA provenance attestation" >> $GITHUB_STEP_SUMMARY
249248
echo "- ✅ SHA256 checksums provided" >> $GITHUB_STEP_SUMMARY
250249
echo "" >> $GITHUB_STEP_SUMMARY
251250
echo "### 🔗 Links" >> $GITHUB_STEP_SUMMARY
252251
echo "- [Download WASM](https://github.com/${{ github.repository }}/releases/tag/${TAG})" >> $GITHUB_STEP_SUMMARY
253-
echo "- [Pull OCI Image](${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${TAG})" >> $GITHUB_STEP_SUMMARY
252+
echo "- [Pull OCI Artifact](${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${TAG})" >> $GITHUB_STEP_SUMMARY

0 commit comments

Comments
 (0)