Return of honkbot, in Rust. Hopefully it won't die all the time.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

ci: add gnutar and gzip to nixpkgs deps

+85 -17
+85 -17
.tangled/workflows/build.yaml
··· 11 11 - gcc 12 12 - cacert 13 13 - skopeo 14 - - crane 14 + - gnutar 15 + - gzip 15 16 16 17 environment: 17 18 APP_PASSWORD: "${{ secrets.APP_PASSWORD }}" ··· 28 29 command: | 29 30 set -e 30 31 31 - echo "${APP_PASSWORD}" | crane auth login \ 32 + WORKDIR=$(mktemp -d) 33 + mkdir -p $WORKDIR/rootfs/usr/local/bin 34 + mkdir -p $WORKDIR/rootfs/app/fallback_images 35 + mkdir -p $WORKDIR/rootfs/etc/ssl/certs 36 + 37 + cp target/release/honkbot $WORKDIR/rootfs/usr/local/bin/ 38 + cp -r fallback_images/* $WORKDIR/rootfs/app/fallback_images/ 39 + cp /etc/ssl/certs/* $WORKDIR/rootfs/etc/ssl/certs/ 2>/dev/null || true 40 + 41 + cd $WORKDIR/rootfs 42 + tar czf $WORKDIR/layer.tar.gz . 43 + cd - 44 + 45 + LAYER_DIGEST=$(sha256sum $WORKDIR/layer.tar.gz | cut -d' ' -f1) 46 + LAYER_SIZE=$(stat -c%s $WORKDIR/layer.tar.gz) 47 + 48 + OCI=$WORKDIR/oci 49 + mkdir -p $OCI/blobs/sha256 50 + 51 + cp $WORKDIR/layer.tar.gz $OCI/blobs/sha256/$LAYER_DIGEST 52 + 53 + cat > $WORKDIR/config.json <<EOF 54 + { 55 + "architecture": "amd64", 56 + "os": "linux", 57 + "config": { 58 + "Env": ["FALLBACK_IMAGE_DIR=/app/fallback_images", "RUST_LOG=info", "SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt"], 59 + "WorkingDir": "/app", 60 + "Entrypoint": ["/usr/local/bin/honkbot"] 61 + }, 62 + "rootfs": { 63 + "type": "layers", 64 + "diff_ids": ["sha256:$LAYER_DIGEST"] 65 + } 66 + } 67 + EOF 68 + 69 + CONFIG_DIGEST=$(sha256sum $WORKDIR/config.json | cut -d' ' -f1) 70 + CONFIG_SIZE=$(stat -c%s $WORKDIR/config.json) 71 + cp $WORKDIR/config.json $OCI/blobs/sha256/$CONFIG_DIGEST 72 + 73 + cat > $WORKDIR/manifest.json <<EOF 74 + { 75 + "schemaVersion": 2, 76 + "mediaType": "application/vnd.oci.image.manifest.v1+json", 77 + "config": { 78 + "mediaType": "application/vnd.oci.image.config.v1+json", 79 + "digest": "sha256:$CONFIG_DIGEST", 80 + "size": $CONFIG_SIZE 81 + }, 82 + "layers": [ 83 + { 84 + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", 85 + "digest": "sha256:$LAYER_DIGEST", 86 + "size": $LAYER_SIZE 87 + } 88 + ] 89 + } 90 + EOF 91 + 92 + MANIFEST_DIGEST=$(sha256sum $WORKDIR/manifest.json | cut -d' ' -f1) 93 + MANIFEST_SIZE=$(stat -c%s $WORKDIR/manifest.json) 94 + cp $WORKDIR/manifest.json $OCI/blobs/sha256/$MANIFEST_DIGEST 95 + 96 + cat > $OCI/index.json <<EOF 97 + { 98 + "schemaVersion": 2, 99 + "manifests": [ 100 + { 101 + "mediaType": "application/vnd.oci.image.manifest.v1+json", 102 + "digest": "sha256:$MANIFEST_DIGEST", 103 + "size": $MANIFEST_SIZE 104 + } 105 + ] 106 + } 107 + EOF 108 + 109 + echo '{"imageLayoutVersion": "1.0.0"}' > $OCI/oci-layout 110 + 111 + echo "${APP_PASSWORD}" | skopeo login \ 32 112 -u "${IMAGE_USER}" \ 33 113 --password-stdin \ 34 114 ${IMAGE_REGISTRY} 35 115 36 - # Push the binary + fallback images as layers on top of debian:bookworm-slim 37 - # First, create a tarball of our files in the right paths 38 - STAGING=$(mktemp -d) 39 - mkdir -p $STAGING/usr/local/bin 40 - mkdir -p $STAGING/app/fallback_images 41 - cp target/release/honkbot $STAGING/usr/local/bin/ 42 - cp -r fallback_images/* $STAGING/app/fallback_images/ 43 - 44 - tar -C $STAGING -cf layer.tar . 45 - 46 - # Append our layer onto the debian base and push 47 - crane append \ 48 - --base docker.io/debian:bookworm-slim \ 49 - --new_layer layer.tar \ 50 - --new_tag ${IMAGE_REGISTRY}/${IMAGE_USER}/${IMAGE_NAME}:latest 116 + skopeo copy \ 117 + oci:$OCI \ 118 + docker://${IMAGE_REGISTRY}/${IMAGE_USER}/${IMAGE_NAME}:latest