Skip to content
This repository has been archived by the owner on Jun 10, 2024. It is now read-only.

Commit

Permalink
feat(blobby): Adds a new full example for the blobstore contract
Browse files Browse the repository at this point in the history
I tried to exercise all the functionality locally as well as some of
the error cases. The goal here was to have an actor that was as "real"
as possible (i.e. error handling, best code practices, etc.)

Signed-off-by: Taylor Thomas <[email protected]>
  • Loading branch information
thomastaylor312 committed Jan 19, 2023
1 parent a18e976 commit 8da70e9
Show file tree
Hide file tree
Showing 8 changed files with 3,185 additions and 0 deletions.
102 changes: 102 additions & 0 deletions .github/workflows/blobby.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: Blobby

on:
push:
branches: [main]
paths:
- "actor/blobby/**"
tags:
- "blobby-v*"
pull_request:
branches: [main]
paths:
- "actor/blobby/**"

env:
CARGO_TERM_COLOR: always
working-directory: ./actor/blobby
WASH_ISSUER_KEY: ${{ secrets.WASMCLOUD_ACCOUNT_OFFICIAL }}
WASH_SUBJECT_KEY: ${{ secrets.WASMCLOUD_BLOBBY }}

jobs:
rust_check:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
# If your integration tests require nats or redis, run them here
- name: Add wasm32-unknown-unknown
run: rustup target add wasm32-unknown-unknown
- id: rust-check-action
uses: wasmcloud/common-actions/rust-check@main
with:
working-directory: ${{ env.working-directory }}
# The `--doc` is required for wasm, as cargo cannot execute wasm tests by default
test-options: "--verbose --doc"

build_artifact:
needs: rust_check
if: startswith(github.ref, 'refs/tags/') # Only run on tag push
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: wasmcloud/common-actions/install-wash@main

- name: Add wasm32-unknown-unknown
run: rustup target add wasm32-unknown-unknown

- name: Build wasmcloud actor
run: wash build
working-directory: ${{ env.working-directory }}

- name: Upload signed actor to GH Actions
uses: actions/upload-artifact@v2
with:
name: wasmcloud-actor
path: ${{ env.working-directory }}/build/*_s.wasm

github_release:
if: startswith(github.ref, 'refs/tags/') # Only run on tag push
needs: build_artifact
runs-on: ubuntu-20.04
steps:
- name: Download signed actor
uses: actions/download-artifact@v2
with:
name: wasmcloud-actor
path: ${{ env.working-directory }}/build

- name: Release
uses: softprops/action-gh-release@v1
with:
files: ${{ env.working-directory }}/build/*_s.wasm
token: ${{ secrets.GITHUB_TOKEN }}
prerelease: true
draft: false

artifact_release:
needs: build_artifact
if: startswith(github.ref, 'refs/tags/') # Only run on tag push
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Download signed actor
uses: actions/download-artifact@v2
with:
name: wasmcloud-actor
path: ${{ env.working-directory }}/build

- name: Determine artifact metadata
run: |
echo "oci-repository=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[].name')" >> $GITHUB_ENV
echo "oci-version=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[].version')" >> $GITHUB_ENV
working-directory: ${{ env.working-directory }}

- name: Push actor to AzureCR
uses: wasmcloud/common-actions/oci-artifact-release@main
with:
artifact-path: ${{ env.working-directory }}/build/blobby_s.wasm
oci-url: ${{ secrets.AZURECR_PUSH_URL }}
oci-repository: ${{ env.oci-repository }}
oci-version: ${{ env.oci-version }}
oci-username: ${{ secrets.AZURECR_PUSH_USER }}
oci-password: ${{ secrets.AZURECR_PUSH_PASSWORD }}
2 changes: 2 additions & 0 deletions actor/blobby/.cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[build]
target = "wasm32-unknown-unknown"
41 changes: 41 additions & 0 deletions actor/blobby/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# This file lists build byproducts,
# IDE-specific files (unless shared by your team)


## Build
/build
/dist/
/target
**target

## File system
.DS_Store
desktop.ini

## Editor
*.swp
*.swo
Session.vim
.cproject
.idea
*.iml
.vscode
.project
.favorites.json
.settings/

## Temporary files
*~
\#*
\#*\#
.#*

## Python
__pycache__/
*.py[cod]
*$py.class

## Node
**node_modules
**package-lock.json

Loading

0 comments on commit 8da70e9

Please sign in to comment.