feat(component): Implement wasi:keyvalue/watch #12171
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: wasmcloud | |
on: | |
pull_request: | |
merge_group: | |
workflow_dispatch: | |
inputs: | |
crate: | |
type: choice | |
description: crate to smart-release | |
options: | |
- wascap | |
- wash-cli | |
- wash-lib | |
- wasmcloud | |
- wasmcloud-component | |
- wasmcloud-control-interface | |
- wasmcloud-core | |
- wasmcloud-host | |
- wasmcloud-provider-sdk | |
- wasmcloud-runtime | |
- wasmcloud-secrets-client | |
- wasmcloud-secrets-types | |
- wasmcloud-test-util | |
- wasmcloud-tracing | |
do-release: | |
type: boolean | |
description: Leave unchecked to create a pull request with changes for verification, then check to create a release directly with changes | |
additional-args: | |
type: string | |
description: Advanced; Additional arguments to pass to `smart-release` | |
push: | |
branches: | |
- main | |
tags: | |
- 'component-v[0-9].[0-9]+.[0-9]+' | |
- 'component-v[0-9].[0-9]+.[0-9]+-*' | |
- 'control-interface-v[0-9].[0-9]+.[0-9]+' | |
- 'control-interface-v[0-9].[0-9]+.[0-9]+-*' | |
- 'core-v[0-9].[0-9]+.[0-9]+' | |
- 'core-v[0-9].[0-9]+.[0-9]+-*' | |
- 'host-sys-v[0-9].[0-9]+.[0-9]+' | |
- 'host-sys-v[0-9].[0-9]+.[0-9]+-*' | |
- 'host-v[0-9].[0-9]+.[0-9]+' | |
- 'host-v[0-9].[0-9]+.[0-9]+-*' | |
- 'opentelemetry-nats-v[0-9].[0-9]+.[0-9]+' | |
- 'opentelemetry-nats-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-archive-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-archive-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-blobstore-azure-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-blobstore-azure-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-blobstore-fs-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-blobstore-fs-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-blobstore-s3-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-blobstore-s3-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-http-client-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-http-client-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-http-server-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-http-server-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-keyvalue-nats-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-keyvalue-nats-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-keyvalue-redis-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-keyvalue-redis-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-keyvalue-vault-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-keyvalue-vault-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-messaging-kafka-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-messaging-kafka-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-messaging-nats-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-messaging-nats-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-sdk-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-sdk-v[0-9].[0-9]+.[0-9]+-*' | |
- 'provider-sqldb-postgres-v[0-9].[0-9]+.[0-9]+' | |
- 'provider-sqldb-postgres-v[0-9].[0-9]+.[0-9]+-*' | |
- 'runtime-v[0-9].[0-9]+.[0-9]+' | |
- 'runtime-v[0-9].[0-9]+.[0-9]+-*' | |
- 'secrets-client-v[0-9].[0-9]+.[0-9]+' | |
- 'secrets-client-v[0-9].[0-9]+.[0-9]+-*' | |
- 'secrets-types-v[0-9].[0-9]+.[0-9]+' | |
- 'secrets-types-v[0-9].[0-9]+.[0-9]+-*' | |
- 'test-util-v[0-9].[0-9]+.[0-9]+' | |
- 'test-util-v[0-9].[0-9]+.[0-9]+-*' | |
- 'tracing-v[0-9].[0-9]+.[0-9]+' | |
- 'tracing-v[0-9].[0-9]+.[0-9]+-*' | |
- 'v[0-9].[0-9]+.[0-9]+' | |
- 'v[0-9].[0-9]+.[0-9]+-*' | |
- 'wascap-v[0-9].[0-9]+.[0-9]+' | |
- 'wascap-v[0-9].[0-9]+.[0-9]+-*' | |
- 'wash-cli-v[0-9].[0-9]+.[0-9]+' | |
- 'wash-cli-v[0-9].[0-9]+.[0-9]+-*' | |
- 'wash-lib-v[0-9].[0-9]+.[0-9]+' | |
- 'wash-lib-v[0-9].[0-9]+.[0-9]+-*' | |
permissions: | |
contents: read | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-bin: | |
strategy: | |
matrix: | |
config: | |
- target: aarch64-unknown-linux-musl | |
test-bin: | | |
nix profile install --inputs-from . 'nixpkgs#qemu' | |
qemu-aarch64 ./result/bin/wash --version | |
qemu-aarch64 ./result/bin/wasmcloud --version | |
test-oci: docker load < ./result | |
# TODO: Run aarch64 binary within OCI | |
- target: aarch64-apple-darwin | |
test-bin: | | |
file ./result/bin/wash | |
file ./result/bin/wasmcloud | |
test-oci: docker load < ./result | |
- target: aarch64-linux-android | |
test-bin: | | |
file ./result/bin/wash | |
file ./result/bin/wasmcloud | |
test-oci: docker load < ./result | |
- target: riscv64gc-unknown-linux-gnu-fhs | |
test-bin: | | |
nix build -L '.#wasmcloud-riscv64gc-unknown-linux-gnu' | |
nix shell --inputs-from . 'nixpkgs#qemu' -c qemu-riscv64 ./result/bin/wasmcloud --version | |
- target: x86_64-apple-darwin | |
test-bin: | | |
file ./result/bin/wash | |
file ./result/bin/wasmcloud | |
test-oci: docker load < ./result | |
# TODO: Build for GNU once https://github.com/rust-lang/rust/issues/92212 is resolved | |
#- target: x86_64-pc-windows-gnu | |
# test-bin: | | |
# nix profile install --inputs-from . 'nixpkgs#wine64' | |
# wine64 ./result/bin/wash.exe --version | |
# wine64 ./result/bin/wasmcloud.exe --version | |
# test-oci: docker load < ./result | |
# # TODO: Run win64 binary within OCI | |
- target: x86_64-unknown-linux-musl | |
test-bin: | | |
./result/bin/wash --version | |
./result/bin/wasmcloud --version | |
test-oci: | | |
docker load < ./result | |
docker run --rm wasmcloud:$(nix eval --raw .#wasmcloud-x86_64-unknown-linux-musl-oci.imageTag) wash --version | |
docker run --rm wasmcloud:$(nix eval --raw .#wasmcloud-x86_64-unknown-linux-musl-oci.imageTag) wasmcloud --version | |
name: wasmcloud-${{ matrix.config.target }} | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- uses: ./.github/actions/install-nix | |
# need to run condition inside job steps so that job will pass if all steps are skipped | |
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore | |
with: | |
cachixAuthToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' | |
- uses: ./.github/actions/build-nix | |
with: | |
package: wasmcloud-${{ matrix.config.target }} | |
- run: ${{ matrix.config.test-bin }} | |
- uses: ./.github/actions/build-nix | |
if: ${{ !endsWith(matrix.config.target, 'fhs') }} | |
with: | |
package: wasmcloud-${{ matrix.config.target }}-oci | |
- run: ${{ matrix.config.test-oci }} | |
if: ${{ !endsWith(matrix.config.target, 'fhs') }} | |
build-windows: | |
name: wasmcloud-x86_64-pc-windows-msvc | |
if: startswith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- run: rustup show | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
with: | |
shared-key: windows-latest-8-cores-shared-cache | |
if: ${{ !startswith(github.ref, 'refs/tags/') }} | |
- run: cargo build --release -p wash-cli -p wasmcloud | |
- run: mkdir "artifact/bin" | |
- run: move "target/release/blobstore-azure-provider.exe" "artifact/bin/blobstore-azure-provider.exe" | |
- run: move "target/release/blobstore-fs-provider.exe" "artifact/bin/blobstore-fs-provider.exe" | |
- run: move "target/release/blobstore-s3-provider.exe" "artifact/bin/blobstore-s3-provider.exe" | |
- run: move "target/release/http-client-provider.exe" "artifact/bin/http-client-provider.exe" | |
- run: move "target/release/http-server-provider.exe" "artifact/bin/http-server-provider.exe" | |
- run: move "target/release/keyvalue-nats-provider.exe" "artifact/bin/keyvalue-nats-provider.exe" | |
- run: move "target/release/keyvalue-redis-provider.exe" "artifact/bin/keyvalue-redis-provider.exe" | |
- run: move "target/release/keyvalue-vault-provider.exe" "artifact/bin/keyvalue-vault-provider.exe" | |
- run: move "target/release/messaging-kafka-provider.exe" "artifact/bin/messaging-kafka-provider.exe" | |
- run: move "target/release/messaging-nats-provider.exe" "artifact/bin/messaging-nats-provider.exe" | |
- run: move "target/release/sqldb-postgres-provider.exe" "artifact/bin/sqldb-postgres-provider.exe" | |
- run: move "target/release/wash.exe" "artifact/bin/wash.exe" | |
- run: move "target/release/wasmcloud.exe" "artifact/bin/wasmcloud.exe" | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: wasmcloud-x86_64-pc-windows-msvc | |
path: artifact | |
build-lipo: | |
name: wasmcloud-universal-darwin | |
needs: build-bin | |
runs-on: macos-13 | |
steps: | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: wasmcloud-aarch64-apple-darwin | |
path: aarch64 | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: wasmcloud-x86_64-apple-darwin | |
path: x86_64 | |
- run: chmod +x ./x86_64/bin/* | |
- run: ./x86_64/bin/wash --version | |
- run: ./x86_64/bin/wasmcloud --version | |
- run: mkdir -p ./artifact/bin | |
- run: lipo -create ./aarch64/bin/wash ./x86_64/bin/wash -output ./artifact/bin/wash | |
- run: lipo -create ./aarch64/bin/wasmcloud ./x86_64/bin/wasmcloud -output ./artifact/bin/wasmcloud | |
- run: chmod +x ./artifact/bin/wash | |
- run: ./artifact/bin/wash --version | |
- run: chmod +x ./artifact/bin/wasmcloud | |
- run: ./artifact/bin/wasmcloud --version | |
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 | |
with: | |
name: wasmcloud-universal-darwin | |
path: artifact | |
test-linux: | |
runs-on: ubuntu-22.04 | |
needs: build-bin | |
steps: | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: wasmcloud-x86_64-unknown-linux-musl | |
- run: chmod +x ./bin/wash | |
- run: chmod +x ./bin/wasmcloud | |
- run: ./bin/wash --version | |
- run: ./bin/wasmcloud --version | |
test-windows: | |
runs-on: windows-latest | |
needs: build-windows | |
steps: | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: wasmcloud-x86_64-pc-windows-msvc | |
- run: .\bin\wash.exe --version | |
- run: .\bin\wasmcloud.exe --version | |
cargo: | |
strategy: | |
matrix: | |
check: | |
- audit | |
- fmt | |
- clippy | |
- nextest | |
- doctest | |
name: cargo ${{ matrix.check }} | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- uses: ./.github/actions/install-nix | |
with: | |
cachixAuthToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' | |
- run: nix build -L .#checks.x86_64-linux.${{ matrix.check }} | |
build-doc: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- uses: ./.github/actions/install-nix | |
with: | |
cachixAuthToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' | |
- run: nix build -L .#checks.x86_64-linux.doc | |
- run: cp --no-preserve=mode -R ./result/share/doc ./doc | |
- run: rm -f doc/.lock | |
- name: Create `.nojekyll` | |
run: touch doc/.nojekyll | |
- name: Write `index.html` | |
run: | | |
cat <<EOF > doc/index.html | |
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<title>Redirecting to wasmcloud_host/index.html</title> | |
<meta http-equiv="refresh" content="0; URL=wasmcloud_host/index.html"> | |
<link rel="canonical" href="https://${{ github.repository_owner }}.github.io/wasmCloud/wasmcloud_host/index.html"> | |
EOF | |
- uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa | |
with: | |
path: doc | |
providers: | |
if: startswith(github.ref, 'refs/tags/provider-') | |
strategy: | |
matrix: | |
include: | |
- name: blobstore-azure | |
subject: BLOBSTORE_AZURE_SUBJECT | |
- name: blobstore-fs | |
subject: BLOBSTORE_FS_SUBJECT | |
- name: blobstore-s3 | |
subject: BLOBSTORE_S3_SUBJECT | |
- name: keyvalue-nats | |
subject: KEYVALUE_NATS_SUBJECT | |
- name: keyvalue-redis | |
subject: KEYVALUE_REDIS_SUBJECT | |
- name: keyvalue-vault | |
subject: KEYVALUE_VAULT_SUBJECT | |
- name: http-client | |
subject: HTTP_CLIENT_SUBJECT | |
- name: http-server | |
subject: HTTP_SERVER_SUBJECT | |
- name: messaging-kafka | |
subject: MESSAGING_KAFKA_SUBJECT | |
- name: messaging-nats | |
subject: MESSAGING_NATS_SUBJECT | |
- name: sqldb-postgres | |
subject: SQLDB_POSTGRES_SUBJECT | |
needs: | |
- build-bin | |
- build-windows | |
- test-linux | |
permissions: | |
contents: read | |
packages: write | |
uses: ./.github/workflows/provider.yml | |
with: | |
name: ${{ matrix.name }} | |
secrets: | |
issuer: ${{ secrets.WASMCLOUD_ACCOUNT_OFFICIAL }} | |
subject: ${{ secrets[matrix.subject] }} | |
azurecr_username: ${{ secrets.AZURECR_PUSH_USER }} | |
azurecr_password: ${{ secrets.AZURECR_PUSH_PASSWORD }} | |
deploy-doc: | |
runs-on: ubuntu-22.04 | |
needs: build-doc | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e | |
id: deployment | |
oci: | |
runs-on: ubuntu-latest-8-cores | |
strategy: | |
matrix: | |
include: | |
- bin: wasmcloud | |
- bin: wash | |
prefix: wash-cli- | |
permissions: | |
contents: read | |
packages: write | |
needs: | |
- build-bin | |
- test-linux | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- uses: ./.github/actions/install-nix | |
with: | |
cachixAuthToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' | |
- name: Extract tag context | |
id: ctx | |
run: | | |
echo "owner=${GITHUB_REPOSITORY_OWNER,,}" >> "$GITHUB_OUTPUT" | |
echo "sha_short=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT" | |
version=${GITHUB_REF_NAME#${{ matrix.prefix }}v} | |
echo "version=${version}" >> "$GITHUB_OUTPUT" | |
echo "version is ${version}" | |
if [[ $version == *"-"* ]]; then | |
echo "version ${version} is a pre-release" | |
echo "prerelease=true" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Login to AzureCR | |
if: startswith(github.ref, format('refs/tags/{0}v', matrix.prefix)) || github.ref == 'refs/heads/main' | |
continue-on-error: ${{ github.repository_owner != 'wasmCloud' }} | |
uses: azure/docker-login@15c4aadf093404726ab2ff205b2cdd33fa6d054c | |
with: | |
login-server: ${{ secrets.AZURECR_PUSH_URL }} | |
username: ${{ secrets.AZURECR_PUSH_USER }} | |
password: ${{ secrets.AZURECR_PUSH_PASSWORD }} | |
- name: Login to GitHub Container Registry | |
if: startswith(github.ref, format('refs/tags/{0}v', matrix.prefix)) || github.ref == 'refs/heads/main' | |
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Login to DockerHub | |
if: startswith(github.ref, format('refs/tags/{0}v', matrix.prefix)) || github.ref == 'refs/heads/main' | |
continue-on-error: ${{ github.repository_owner != 'wasmCloud' }} | |
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 | |
with: | |
username: ${{ secrets.DOCKERHUB_PUSH_USER }} | |
password: ${{ secrets.DOCKERHUB_PUSH_PASSWORD }} | |
- name: Install `buildah` | |
run: nix profile install --inputs-from . 'nixpkgs#buildah' | |
- name: Build `${{ matrix.bin }}` image | |
run: | | |
nix run -L .#build-${{ matrix.bin }}-oci-debian ${{ matrix.bin }}:debian | |
nix run -L .#build-${{ matrix.bin }}-oci-wolfi ${{ matrix.bin }}:wolfi | |
- name: Test `${{ matrix.bin }}` image | |
run: | | |
buildah push ${{ matrix.bin }}:debian docker-daemon:${{ matrix.bin }}:debian-test | |
buildah push ${{ matrix.bin }}:wolfi docker-daemon:${{ matrix.bin }}:wolfi-test | |
docker run --rm ${{ matrix.bin }}:debian-test ${{ matrix.bin }} --version | |
docker run --rm ${{ matrix.bin }}:wolfi-test ${{ matrix.bin }} --version | |
- name: Push `${{ matrix.bin }}` commit rev tag | |
if: startswith(github.ref, format('refs/tags/{0}v', matrix.prefix)) || github.ref == 'refs/heads/main' | |
run: | | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ github.sha }} | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.sha_short }} | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ github.sha }}-wolfi | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.sha_short }}-wolfi | |
docker run --rm ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ github.sha }} ${{ matrix.bin }} --version | |
docker run --rm ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.sha_short }} ${{ matrix.bin }} --version | |
docker run --rm ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ github.sha }}-wolfi ${{ matrix.bin }} --version | |
docker run --rm ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.sha_short }}-wolfi ${{ matrix.bin }} --version | |
- name: Push `${{ matrix.bin }}` `canary` tag | |
if: github.ref == 'refs/heads/main' | |
continue-on-error: ${{ github.repository_owner != 'wasmCloud' }} | |
run: | | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary-wolfi | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary-wolfi | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary-wolfi | |
docker run --rm ${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary ${{ matrix.bin }} --version | |
docker run --rm ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary ${{ matrix.bin }} --version | |
docker run --rm wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary ${{ matrix.bin }} --version | |
docker run --rm ${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary-wolfi ${{ matrix.bin }} --version | |
docker run --rm ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary-wolfi ${{ matrix.bin }} --version | |
docker run --rm wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:canary-wolfi ${{ matrix.bin }} --version | |
- name: Push `${{ matrix.bin }}` version tag | |
if: startswith(github.ref, format('refs/tags/{0}v', matrix.prefix)) | |
continue-on-error: ${{ github.repository_owner != 'wasmCloud' }} | |
run: | | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }} | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }} | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }} | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }}-wolfi | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }}-wolfi | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }}-wolfi | |
docker run --rm ${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }} ${{ matrix.bin }} --version | |
docker run --rm ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }} ${{ matrix.bin }} --version | |
docker run --rm wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }} ${{ matrix.bin }} --version | |
docker run --rm ${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }}-wolfi ${{ matrix.bin }} --version | |
docker run --rm ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }}-wolfi ${{ matrix.bin }} --version | |
docker run --rm wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:${{ steps.ctx.outputs.version }}-wolfi ${{ matrix.bin }} --version | |
- name: Push `${{ matrix.bin }}` `latest` tag | |
if: startswith(github.ref, format('refs/tags/{0}v', matrix.prefix)) && !steps.ctx.outputs.prerelease | |
continue-on-error: ${{ github.repository_owner != 'wasmCloud' }} | |
run: | | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:debian docker://wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest-wolfi | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest-wolfi | |
buildah manifest push --all --format 'v2s2' ${{ matrix.bin }}:wolfi docker://wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest-wolfi | |
docker run --rm ${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest ${{ matrix.bin }} --version | |
docker run --rm ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest ${{ matrix.bin }} --version | |
docker run --rm wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest ${{ matrix.bin }} --version | |
docker run --rm ${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest-wolfi ${{ matrix.bin }} --version | |
docker run --rm ghcr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest-wolfi ${{ matrix.bin }} --version | |
docker run --rm wasmcloud.azurecr.io/${{ steps.ctx.outputs.owner }}/${{ matrix.bin }}:latest-wolfi ${{ matrix.bin }} --version | |
release: | |
if: startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/tags/wash-cli-v') | |
needs: | |
- build-bin | |
- build-doc | |
- build-lipo | |
- cargo | |
- oci | |
- test-linux | |
- test-windows | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
path: artifacts | |
- run: | | |
for dir in ./artifacts/wasmcloud-*; do | |
target=${dir#./artifacts/wasmcloud-} | |
for bin_path in $(find ${dir}/bin -type f); do | |
chmod +x ${bin_path} | |
bin=$(basename ${bin_path}) | |
case "$bin" in | |
*.exe) | |
bin="${bin%.exe}" | |
mkdir -p ./${bin} | |
mv ${bin_path} ./${bin}/${bin}-${target}.exe | |
;; | |
*) | |
mkdir -p ./${bin} | |
mv ${bin_path} ./${bin}/${bin}-${target%-fhs} | |
;; | |
esac | |
done | |
done | |
- uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 | |
if: startsWith(github.ref, 'refs/tags/v') | |
with: | |
draft: true | |
prerelease: true | |
generate_release_notes: true | |
files: ./wasmcloud/* | |
- uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 | |
if: startsWith(github.ref, 'refs/tags/wash-cli-v') | |
with: | |
draft: false | |
prerelease: true | |
generate_release_notes: true | |
files: ./wash/* | |
- name: Extract version | |
if: startsWith(github.ref, 'refs/tags/wash-cli-v') | |
run: | | |
VERSION=$(echo "${GITHUB_REF##*/}" | sed -e 's/wash-cli-v//') | |
echo "wash_version=$VERSION" >> $GITHUB_ENV | |
- name: Release homebrew | |
uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 | |
if: startsWith(github.ref, 'refs/tags/wash-cli-v') | |
with: | |
token: ${{ secrets.HOMEBREW_CHOCOLATEY_DISPATCH_TOKEN }} | |
repository: wasmCloud/homebrew-wasmcloud | |
event-type: brew-formula-update | |
client-payload: | | |
{"tag_prefix": "wash-cli", "tag_version": "${{ env.wash_version }}"} | |
- name: Release chocolatey | |
uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 | |
if: startsWith(github.ref, 'refs/tags/wash-cli-v') | |
with: | |
token: ${{ secrets.HOMEBREW_CHOCOLATEY_DISPATCH_TOKEN }} | |
repository: wasmCloud/chocolatey-wash | |
event-type: choco-formula-update | |
client-payload: | | |
{"wash_version": "${{ env.wash_version }}"} | |
nfpm: | |
if: startsWith(github.ref, 'refs/tags/wash-cli-v') | |
env: | |
REF: ${{ github.ref }} | |
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_API_TOKEN }} | |
needs: | |
- cargo | |
- build-bin | |
- test-linux | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- uses: ./.github/actions/install-nix | |
with: | |
cachixAuthToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' | |
- name: Install NFPM | |
run: nix profile install -L --inputs-from . 'nixpkgs#nfpm' | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: wasmcloud-aarch64-unknown-linux-musl | |
path: ./crates/wash-cli/aarch64 | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 | |
with: | |
name: wasmcloud-x86_64-unknown-linux-musl | |
path: ./crates/wash-cli/x86_64 | |
- name: Make wash executable | |
working-directory: ./crates/wash-cli | |
run: | | |
chmod +x ./aarch64/bin/wash | |
chmod +x ./x86_64/bin/wash | |
- name: Build `deb` and `rpm` | |
working-directory: ./crates/wash-cli | |
run: | | |
export VERSION=$(echo $REF| cut -d- -f3 | tr -d "v") | |
nfpm pkg --packager deb -f build/nfpm.amd64.yaml | |
nfpm pkg --packager deb -f build/nfpm.arm64.yaml | |
nfpm pkg --packager rpm -f build/nfpm.amd64.yaml | |
nfpm pkg --packager rpm -f build/nfpm.arm64.yaml | |
- name: Push `deb` | |
working-directory: ./crates/wash-cli | |
run: | | |
debs=(35 203 206 207 210 215 219 220 221 233 235 237 261 266 278 284) | |
for distro_version in "${debs[@]}"; do | |
curl -F "package[distro_version_id]=${distro_version}" -F "package[package_file]=@$(ls wash_*_amd64.deb)" https://$PACKAGECLOUD_TOKEN:@packagecloud.io/api/v1/repos/wasmcloud/core/packages.json; | |
curl -F "package[distro_version_id]=${distro_version}" -F "package[package_file]=@$(ls wash_*_arm64.deb)" https://$PACKAGECLOUD_TOKEN:@packagecloud.io/api/v1/repos/wasmcloud/core/packages.json; | |
done | |
- name: Push `rpm` | |
working-directory: ./crates/wash-cli | |
run: | | |
rpms=(194 204 209 216 226 231 236 239 240 244 260 273 279 283 302) | |
for distro_version in "${rpms[@]}"; do | |
curl -F "package[distro_version_id]=${distro_version}" -F "package[package_file]=@$(ls wash-*.aarch64.rpm)" https://$PACKAGECLOUD_TOKEN:@packagecloud.io/api/v1/repos/wasmcloud/core/packages.json; | |
curl -F "package[distro_version_id]=${distro_version}" -F "package[package_file]=@$(ls wash-*.x86_64.rpm)" https://$PACKAGECLOUD_TOKEN:@packagecloud.io/api/v1/repos/wasmcloud/core/packages.json; | |
done | |
crates: | |
strategy: | |
matrix: | |
include: | |
- crate: component | |
workspace-dependencies: true | |
- crate: control-interface | |
workspace-dependencies: true | |
- crate: core | |
workspace-dependencies: true | |
- crate: host | |
workspace-dependencies: true | |
- crate: host-sys | |
workspace-dependencies: true | |
- crate: opentelemetry-nats | |
- crate: provider-archive | |
workspace-dependencies: true | |
- crate: provider-sdk | |
workspace-dependencies: true | |
- crate: runtime | |
workspace-dependencies: true | |
- crate: test-util | |
workspace-dependencies: true | |
- crate: tracing | |
workspace-dependencies: true | |
- crate: secrets-types | |
workspace-dependencies: true | |
- crate: secrets-client | |
workspace-dependencies: true | |
- crate: wascap | |
- crate: wash-cli | |
workspace-dependencies: true | |
- crate: wash-lib | |
workspace-dependencies: true | |
name: publish ${{ matrix.crate }} to crates.io | |
needs: cargo | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
- name: Extract tag context | |
id: ctx | |
run: | | |
version=${GITHUB_REF_NAME#${{ matrix.crate }}-v} | |
echo "version is ${version}" | |
if [[ $version == *"-"* ]]; then | |
echo "version ${version} is a pre-release" | |
echo "prerelease=true" >> "$GITHUB_OUTPUT" | |
fi | |
- name: dry-run publish ${{ matrix.crate }} to crates.io | |
if: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
continue-on-error: ${{ matrix.workspace-dependencies }} # publish may fail due to workspace crates not being published yet | |
run: cargo publish --dry-run | |
working-directory: ./crates/${{ matrix.crate }} | |
- name: publish ${{ matrix.crate }} to crates.io | |
if: startsWith(github.ref, format('refs/tags/{0}-v', matrix.crate)) | |
continue-on-error: ${{ github.repository_owner != 'wasmCloud' }} | |
run: cargo publish --token ${{ secrets.CRATES_PUBLISH_TOKEN }} | |
working-directory: ./crates/${{ matrix.crate }} | |
smart-release: | |
if: github.event_name == 'workflow_dispatch' | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: write | |
pull-requests: write | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Install cmake for smart-release | |
run: sudo apt update && sudo apt install cmake -y | |
- run: rustup show | |
- name: install smart-release | |
env: | |
RUSTFLAGS: '' | |
# NOTE(brooksmtownsend): Installing from my fork as updating workspace dependencies is not yet supported in the mainline | |
# PR to follow: https://github.com/Byron/cargo-smart-release/pull/17 | |
run: cargo install cargo-smart-release --git https://github.com/brooksmtownsend/cargo-smart-release --branch feat/update-workspace-dependencies | |
- name: dry run release | |
if: ${{ !inputs.do-release }} | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "wasmCloud automation" | |
cargo smart-release --update-crates-index --no-publish --execute --no-changelog-preview --no-push ${{ inputs.additional-args }} ${{ inputs.crate }} --allow-dirty | |
- name: Create Pull Request | |
if: ${{ !inputs.do-release }} | |
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f | |
with: | |
branch: release-${{ inputs.crate }} | |
signoff: true | |
committer: wasmCloud Automation <[email protected]> | |
title: Release ${{ inputs.crate }} | |
commit-message: 'release(${{ inputs.crate }}): release and update CHANGELOG' | |
- name: release | |
if: ${{ inputs.do-release }} | |
env: | |
GH_TOKEN: ${{ github.token }} | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_PUBLISH_TOKEN }} | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "wasmCloud automation" | |
cargo smart-release --update-crates-index --execute --no-changelog-preview --no-changelog ${{ inputs.additional-args }} ${{ inputs.crate }} |