diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index e3ac8d414..5698f939e 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -15,13 +15,52 @@ concurrency:
cancel-in-progress: true
jobs:
+
+ get_release_info:
+ name: Get Release Info
+ runs-on: ubuntu-latest
+ outputs:
+ tag: ${{ steps.new_release_tag.outputs.TAG }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Get latest release
+ if: startsWith(github.ref, 'refs/heads/main')
+ id: release
+ uses: pozetroninc/github-action-get-latest-release@master
+ with:
+ repository: ${{ github.repository }}
+ excludes: prerelease, draft
+
+ - name: Determine if release build
+ if: startsWith(github.ref, 'refs/heads/main')
+ id: new_release_tag
+ env:
+ LATEST_RELEASE: ${{ steps.release.outputs.release }}
+ run: |
+ CARGO_VERSION=v$(grep "version" components/chainhook-cli/Cargo.toml | head -n 1 | cut -d\" -f2)
+ if [[ "${CARGO_VERSION}" != "${LATEST_RELEASE}" ]]; then
+ echo "::set-output name=TAG::${CARGO_VERSION}"
+ echo "::warning::Will create release for version: ${CARGO_VERSION}"
+ else
+ echo "::warning::Will not create a release"
+ fi
+
test:
+ name: Generate test coverage
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - name: Checkout repository
+ uses: actions/checkout@v4
with:
persist-credentials: false
+ - name: Install Rust toolchain
+ run: |
+ rustup toolchain install stable --profile minimal
+ echo "RUST_VERSION_HASH=$(rustc --version | sha256sum | awk '{print $1}')" >> $GITHUB_ENV
+
- name: Install redis
run: sudo apt-get install -y redis-server
@@ -33,55 +72,283 @@ jobs:
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
+ # Cache crates.toml & crates2.json to allow `cargo install`
+ ~/.cargo/.crates.toml
+ ~/.cargo/.crates2.json
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- - name: Cargo test
+ - name: Install and run cargo-tarpaulin
run: |
- rustup update
- RUST_BACKTRACE=1 cargo test --all --features redis_tests -- --test-threads=1
+ cargo install cargo-tarpaulin
+ cargo --version
+ cargo tarpaulin --out lcov --features redis_tests -- --test-threads=1
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+ dist_chainhook:
+ name: Build Chainhook Distributions
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - os: ubuntu-latest
+ platform: linux
+ target: x86_64-unknown-linux-gnu
+ architecture: x64
+ libc: glibc
+ - os: windows-latest
+ platform: windows
+ target: x86_64-pc-windows-msvc
+ architecture: x64
+ - os: macos-latest
+ platform: darwin
+ target: x86_64-apple-darwin
+ architecture: x64
+ - os: macos-latest
+ platform: darwin
+ target: aarch64-apple-darwin
+ architecture: arm64
+
+ steps:
+ - name: Configure git to use LF (Windows)
+ if: matrix.os == 'windows-latest'
+ run: |
+ git config --global core.autocrlf false
+ git config --global core.eol lf
+
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Install Rust toolchain
+ run: rustup toolchain install stable --profile minimal --target ${{ matrix.target }}
+
+ - name: Install Rust Target
+ run: rustup target add ${{ matrix.target }}
+
+ - name: List rust targets
+ run: rustup target list
+
+ - name: "Get Rust version (unix)"
+ if: matrix.os != 'windows-latest'
+ run: echo "RUST_VERSION_HASH=$(rustc --version | shasum -a 256 | awk '{print $1}')" >> $GITHUB_ENV
+
+ - name: "Get Rust version (windows)"
+ if: matrix.os == 'windows-latest'
+ shell: bash
+ run: echo "RUST_VERSION_HASH=$(rustc --version | sha256sum | awk '{print $1}')" >> $GITHUB_ENV
+
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cargo/
+ ./target/${{ matrix.target }}/release/
+ key: ${{ runner.os }}-rust-${{ env.RUST_VERSION_HASH }}-cargo-${{ hashFiles('./Cargo.lock') }}
+
+ - name: Install wix (Windows)
+ if: matrix.os == 'windows-latest' && steps.cache-cargo.outputs.cache-hit != 'true'
+ run: cargo install cargo-wix
+
+ # Set environment variables required from cross compiling from macos-x86_64 to macos-arm64
+ - name: Configure macos-arm64 cross compile config
+ if: matrix.target == 'aarch64-apple-darwin'
+ run: |
+ echo "SDKROOT=$(xcrun -sdk macosx --show-sdk-path)" >> $GITHUB_ENV
+ echo "MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version)" >> $GITHUB_ENV
+
+ - name: Configure artifact names (libc)
+ if: ${{ matrix.libc }}
+ shell: bash
+ run: |
+ echo "SHORT_TARGET_NAME=${{ matrix.platform }}-${{ matrix.architecture }}-${{ matrix.libc }}" >> $GITHUB_ENV
+ echo "PRE_GYP_TARGET_NAME=${{ matrix.platform }}-${{ matrix.architecture }}-${{ matrix.libc }}" >> $GITHUB_ENV
+
+ - name: Configure artifact names (not libc)
+ if: ${{ ! matrix.libc }}
+ shell: bash
+ run: |
+ echo "SHORT_TARGET_NAME=${{ matrix.platform }}-${{ matrix.architecture }}" >> $GITHUB_ENV
+ echo "PRE_GYP_TARGET_NAME=${{ matrix.platform }}-${{ matrix.architecture }}-unknown" >> $GITHUB_ENV
+
+ - name: Build - Cargo
+ if: matrix.target != 'x86_64-unknown-linux-musl'
+ run: cargo build --release --features cli --features debug --no-default-features --target ${{ matrix.target }}
+
+ # Steps for Windows Code Signing with DigiCert
+ - name: Windows - Setup Certificate
+ if: startsWith(github.ref, 'refs/heads/main') && matrix.os == 'windows-latest'
+ run: |
+ echo "${{ secrets.SM_CLIENT_CERT_FILE_B64 }}" | base64 --decode > /d/Certificate_pkcs12.p12
+ cat /d/Certificate_pkcs12.p12
+ shell: bash
+
+ - name: Windows - Set variables
+ if: startsWith(github.ref, 'refs/heads/main') && matrix.os == 'windows-latest'
+ id: variables
+ run: |
+ dir
+ echo "::set-output name=version::${GITHUB_REF#refs/tags/v}"
+ echo "::set-output name=KEYPAIR_NAME::gt-standard-keypair"
+ echo "::set-output name=CERTIFICATE_NAME::gt-certificate"
+ echo "SM_HOST=${{ secrets.SM_HOST }}" >> "$GITHUB_ENV"
+ echo "SM_API_KEY=${{ secrets.SM_API_KEY }}" >> "$GITHUB_ENV"
+ echo "SM_CLIENT_CERT_FILE=D:\\Certificate_pkcs12.p12" >> "$GITHUB_ENV"
+ echo "SM_CLIENT_CERT_PASSWORD=${{ secrets.SM_CLIENT_CERT_PASSWORD }}" >> "$GITHUB_ENV"
+ echo "C:\Program Files (x86)\Windows Kits\10\App Certification Kit" >> $GITHUB_PATH
+ echo "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools" >> $GITHUB_PATH
+ echo "C:\Program Files\DigiCert\DigiCert Keylocker Tools" >> $GITHUB_PATH
+ shell: bash
+
+ - name: Windows - Setup Keylocker KSP
+ if: startsWith(github.ref, 'refs/heads/main') && matrix.os == 'windows-latest'
+ run: |
+ curl -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/Keylockertools-windows-x64.msi/download -H "x-api-key:%SM_API_KEY%" -o Keylockertools-windows-x64.msi
+ msiexec /i Keylockertools-windows-x64.msi /quiet /qn
+ smksp_registrar.exe list
+ smctl.exe keypair ls
+ C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user
+ shell: cmd
+
+ - name: Windows - Certificates Sync
+ if: startsWith(github.ref, 'refs/heads/main') && matrix.os == 'windows-latest'
+ run: |
+ smctl windows certsync
+ shell: cmd
+
+ - name: Code sign bin (Windows)
+ if: startsWith(github.ref, 'refs/heads/main') && matrix.os == 'windows-latest'
+ run: |
+ $signtool_path = ((Resolve-Path -Path "${env:ProgramFiles(x86)}/Windows Kits/10/bin/10*/x86").Path[-1]) + "/signtool.exe"
+ $bin_path = (Resolve-Path -Path "target/${{ matrix.target }}/release/chainhook.exe").Path
+
+ & ${signtool_path} sign `
+ /d "Chainhook is a reorg-aware indexing engine for the Stacks & Bitcoin blockchains." `
+ /du "https://github.com/hirosystems/chainhook" `
+ /tr http://timestamp.digicert.com `
+ /sha1 "${{ secrets.SM_CODE_SIGNING_CERT_SHA1_HASH }}" `
+ /td sha256 `
+ /fd sha256 `
+ "${bin_path}"
+
+ & ${signtool_path} verify /v /pa "${bin_path}"
+
+ - name: Build Installer (Windows)
+ if: matrix.os == 'windows-latest'
+ run: cargo wix -v --no-build --nocapture -p chainhook
+
+ - name: Code sign installed (Windows)
+ if: startsWith(github.ref, 'refs/heads/main') && matrix.os == 'windows-latest'
+ run: |
+ $signtool_path = ((Resolve-Path -Path "${env:ProgramFiles(x86)}/Windows Kits/10/bin/10*/x86").Path[-1]) + "/signtool.exe"
+ $msi_path = (Resolve-Path -Path "target/wix/*.msi").Path
+
+ & ${signtool_path} sign `
+ /d "Chainhook is a reorg-aware indexing engine for the Stacks & Bitcoin blockchains." `
+ /du "https://github.com/hirosystems/chainhook" `
+ /tr http://timestamp.digicert.com `
+ /sha1 "${{ secrets.SM_CODE_SIGNING_CERT_SHA1_HASH }}" `
+ /td sha256 `
+ /fd sha256 `
+ "${msi_path}"
+
+ & ${signtool_path} verify /v /pa "${msi_path}"
+
+ # Don't compress for Windows because winget can't yet unzip files
+ - name: Compress cargo artifact (Linux)
+ if: matrix.os != 'windows-latest'
+ run: tar -C target/${{ matrix.target }}/release -zcvf chainhook-${{ env.SHORT_TARGET_NAME }}.tar.gz chainhook
+
+ - name: Rename cargo artifact (Windows)
+ if: matrix.os == 'windows-latest'
+ shell: bash
+ run: mv target/wix/*.msi chainhook-${{ env.SHORT_TARGET_NAME }}.msi
+
+ # Separate uploads to prevent paths from being preserved
+ - name: Upload cargo artifacts (Linux)
+ if: matrix.os != 'windows-latest'
+ uses: actions/upload-artifact@v2
+ with:
+ name: chainhook-${{ env.SHORT_TARGET_NAME }}
+ path: chainhook-${{ env.SHORT_TARGET_NAME }}.tar.gz
+
+ - name: Upload cargo artifact (Windows)
+ if: matrix.os == 'windows-latest'
+ uses: actions/upload-artifact@v2
+ with:
+ name: chainhook-${{ env.SHORT_TARGET_NAME }}
+ path: chainhook-${{ env.SHORT_TARGET_NAME }}.msi
+
+ release:
+ name: Release
+ runs-on: ubuntu-latest
+ if: startsWith(github.ref, 'refs/heads/main') && needs.get_release_info.outputs.tag != ''
+ needs:
+ - test
+ - dist_chainhook
+ - get_release_info
+ permissions:
+ actions: write
+ contents: write
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Download pre-built dists
+ uses: actions/download-artifact@v3
+
+ - name: Tag and Release
+ uses: ncipollo/release-action@v1
+ with:
+ artifacts: "**/*.tar.gz,**/*.msi"
+ tag: ${{ needs.get_release_info.outputs.tag }}
+ commit: ${{ env.GITHUB_SHA }}
+
+ - name: Trigger pkg-version-bump workflow
+ uses: peter-evans/repository-dispatch@v1
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ event-type: released
+ client-payload: '{"tag": "${{ needs.get_release_info.outputs.tag }}"}'
+
+
build-publish:
runs-on: ubuntu-latest
- needs: test
+ needs:
+ - test
+ - dist_chainhook
+ - get_release_info
outputs:
docker_image_digest: ${{ steps.docker_push.outputs.digest }}
- new_release_published: ${{ steps.semantic.outputs.new_release_published }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Chainhook
+ description: Chainhook is a reorg-aware indexing engine for the Stacks & Bitcoin blockchains.
+ image: ${{ github.repository }}
+ artifact: chainhook-linux-x64-glibc
+ dockerfile: dockerfiles/components/chainhook-node.dockerfile
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- - name: Semantic Release
- uses: cycjimmy/semantic-release-action@v4
- id: semantic
- # Only run on non-PR events or only PRs that aren't from forks
- if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- SEMANTIC_RELEASE_PACKAGE: ${{ github.event.repository.name }}
- with:
- semantic_version: 19
- extra_plugins: |
- @semantic-release/changelog@6.0.3
- @semantic-release/git@10.0.1
- conventional-changelog-conventionalcommits@6.1.0
-
- name: Checkout tag
- if: steps.semantic.outputs.new_release_version != ''
+ if: needs.get_release_info.outputs.tag != ''
uses: actions/checkout@v4
with:
persist-credentials: false
- ref: v${{ steps.semantic.outputs.new_release_version }}
+ ref: ${{ needs.get_release_info.outputs.tag }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
+
- name: Docker Meta
id: meta
uses: docker/metadata-action@v5
@@ -91,8 +358,8 @@ jobs:
tags: |
type=ref,event=branch
type=ref,event=pr
- type=semver,pattern={{version}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }}
- type=semver,pattern={{major}}.{{minor}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }}
+ type=semver,pattern={{version}},value=${{ needs.get_release_info.outputs.tag }},enable=${{ needs.get_release_info.outputs.tag != '' }}
+ type=semver,pattern={{major}}.{{minor}},value=${{ needs.get_release_info.outputs.tag }},enable=${{ needs.get_release_info.outputs.tag != '' }}
type=raw,value=latest,enable={{is_default_branch}}
- name: Log in to DockerHub
@@ -101,6 +368,14 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
+ - name: Download pre-built dist
+ uses: actions/download-artifact@v3
+ with:
+ name: ${{ matrix.artifact }}
+
+ - name: Untar pre-built dist
+ run: tar zxvf *.tar.gz
+
- name: Build/Push Image
uses: docker/build-push-action@v5
id: docker_push
@@ -108,11 +383,11 @@ jobs:
context: .
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- file: ./dockerfiles/components/chainhook-node.dockerfile
+ file: ${{ matrix.dockerfile }}
cache-from: type=gha
cache-to: type=gha,mode=max
# Only push if (there's a new release on main branch, or if building a non-main branch) and (Only run on non-PR events or only PRs that aren't from forks)
- push: ${{ (github.ref != 'refs/heads/main' || steps.semantic.outputs.new_release_version != '') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
+ push: ${{ (github.ref != 'refs/heads/main' || needs.get_release_info.outputs.tag != '') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
deploy-dev:
runs-on: ubuntu-latest
diff --git a/.github/workflows/pkg-version-bump.yaml b/.github/workflows/pkg-version-bump.yaml
index a1199260f..2272fd45f 100644
--- a/.github/workflows/pkg-version-bump.yaml
+++ b/.github/workflows/pkg-version-bump.yaml
@@ -1,5 +1,5 @@
##
-## Bumps the Clarinet version listed on various package managers.
+## Bumps the Chainhook version listed on various package managers.
##
name: Package Version Bump
@@ -18,24 +18,6 @@ env:
GIT_USER_EMAIL: 45208873+blockstack-devops@users.noreply.github.com
jobs:
- homebrew:
- name: Homebrew
- runs-on: macos-latest
- steps:
- - name: Homebrew version bump
- env:
- HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.GH_TOKEN }}
- TAG: ${{ github.event.client_payload.tag || github.event.inputs.tag }}
- run: |
- git config --global user.name "${GIT_USER_NAME}"
- git config --global user.email "${GIT_USER_EMAIL}"
-
- brew update
- brew bump-formula-pr \
- --no-browse \
- --no-audit \
- --tag "${TAG}" \
- ${{ github.event.repository.name }}
winget:
name: Winget
@@ -45,8 +27,8 @@ jobs:
env:
TAG: ${{ github.event.client_payload.tag || github.event.inputs.tag }}
run: |
- # Get version infoq
- $VERSION=${env:TAG}.substring(1)
+ # Get version info
+ VERSION=$(echo "${TAG#v}")
# Configure git configs
git config --global user.name "${env:GIT_USER_NAME}"
@@ -57,8 +39,8 @@ jobs:
# Update manifest and submit PR
./wingetcreate.exe update `
- --urls https://github.com/${{ github.repository }}/releases/download/${env:TAG}/clarinet-windows-x64.msi `
+ --urls https://github.com/${{ github.repository }}/releases/download/${env:TAG}/chainhook-windows-x64.msi `
--version ${VERSION} `
--token ${{ secrets.GH_TOKEN }} `
--submit `
- HiroSystems.Clarinet
+ HiroSystems.Chainhook
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dc92f40df..055db7160 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+## [1.6.1](https://github.com/hirosystems/chainhook/compare/v1.6.0...v1.6.1) (2024-05-15)
+
+### Bug Fixes
+
+* serialize brc-20 data ([#585](https://github.com/hirosystems/chainhook/issues/585)) ([9011a0c](https://github.com/hirosystems/chainhook/commit/9011a0ce49d9d38a6d7a6776d7f37b709a355386))
+
+
## [1.6.0](https://github.com/hirosystems/chainhook/compare/v1.5.1...v1.6.0) (2024-05-09)
diff --git a/Cargo.lock b/Cargo.lock
index ff62ff446..538a2c23d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -472,7 +472,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chainhook"
-version = "1.6.0"
+version = "1.6.1"
dependencies = [
"ansi_term",
"atty",
diff --git a/components/chainhook-cli/Cargo.toml b/components/chainhook-cli/Cargo.toml
index d684056e0..596b76adc 100644
--- a/components/chainhook-cli/Cargo.toml
+++ b/components/chainhook-cli/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "chainhook"
-version = "1.6.0"
+version = "1.6.1"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
diff --git a/components/chainhook-cli/src/service/tests/mod.rs b/components/chainhook-cli/src/service/tests/mod.rs
index 41dd79647..be20a78cc 100644
--- a/components/chainhook-cli/src/service/tests/mod.rs
+++ b/components/chainhook-cli/src/service/tests/mod.rs
@@ -997,7 +997,7 @@ async fn it_seeds_block_pool_on_startup() -> Result<(), String> {
Ok(())
}
-fn cleanup_err(
+pub fn cleanup_err(
error: String,
working_dir: &str,
redis_port: u16,
@@ -1007,8 +1007,8 @@ fn cleanup_err(
format!("test failed with error: {error}")
}
-fn cleanup(working_dir: &str, redis_port: u16, redis_process: &mut Child) {
- std::fs::remove_dir_all(&working_dir).unwrap();
+pub fn cleanup(working_dir: &str, redis_port: u16, redis_process: &mut Child) {
+ let _ = std::fs::remove_dir_all(&working_dir);
flush_redis(redis_port);
redis_process.kill().unwrap();
}
diff --git a/components/chainhook-cli/src/service/tests/observer_tests.rs b/components/chainhook-cli/src/service/tests/observer_tests.rs
index ae00f3cc2..a1ca7cc13 100644
--- a/components/chainhook-cli/src/service/tests/observer_tests.rs
+++ b/components/chainhook-cli/src/service/tests/observer_tests.rs
@@ -10,6 +10,7 @@ use serde_json::Value;
use test_case::test_case;
use crate::service::tests::{
+ cleanup, cleanup_err,
helpers::{
build_predicates::build_stacks_payload,
mock_service::{
@@ -26,7 +27,7 @@ use super::helpers::{
#[tokio::test]
#[cfg_attr(not(feature = "redis_tests"), ignore)]
-async fn ping_endpoint_returns_metrics() {
+async fn ping_endpoint_returns_metrics() -> Result<(), String> {
let TestSetupResult {
mut redis_process,
working_dir,
@@ -43,19 +44,12 @@ async fn ping_endpoint_returns_metrics() {
let predicate = build_stacks_payload(Some("devnet"), None, None, None, Some(uuid));
let _ = call_register_predicate(&predicate, chainhook_service_port)
.await
- .unwrap_or_else(|e| {
- std::fs::remove_dir_all(&working_dir).unwrap();
- flush_redis(redis_port);
- redis_process.kill().unwrap();
- panic!("test failed with error: {e}");
- });
-
- let metrics = call_ping(stacks_ingestion_port).await.unwrap_or_else(|e| {
- std::fs::remove_dir_all(&working_dir).unwrap();
- flush_redis(redis_port);
- redis_process.kill().unwrap();
- panic!("test failed with error: {e}");
- });
+ .map_err(|e| cleanup_err(e, &working_dir, redis_port, &mut redis_process))?;
+
+ sleep(Duration::new(1, 0));
+ let metrics = call_ping(stacks_ingestion_port)
+ .await
+ .map_err(|e| cleanup_err(e, &working_dir, redis_port, &mut redis_process))?;
let result = metrics
.get("stacks")
.unwrap()
@@ -63,14 +57,14 @@ async fn ping_endpoint_returns_metrics() {
.unwrap();
assert_eq!(result, 1);
- std::fs::remove_dir_all(&working_dir).unwrap();
- flush_redis(redis_port);
- redis_process.kill().unwrap();
+ sleep(Duration::new(1, 0));
+ cleanup(&working_dir, redis_port, &mut redis_process);
+ Ok(())
}
#[tokio::test]
#[cfg_attr(not(feature = "redis_tests"), ignore)]
-async fn prometheus_endpoint_returns_encoded_metrics() {
+async fn prometheus_endpoint_returns_encoded_metrics() -> Result<(), String> {
let TestSetupResult {
mut redis_process,
working_dir,
@@ -85,27 +79,21 @@ async fn prometheus_endpoint_returns_encoded_metrics() {
let uuid = &get_random_uuid();
let predicate = build_stacks_payload(Some("devnet"), None, None, None, Some(uuid));
- let _ = call_register_predicate(&predicate, chainhook_service_port)
+ call_register_predicate(&predicate, chainhook_service_port)
.await
- .unwrap_or_else(|e| {
- std::fs::remove_dir_all(&working_dir).unwrap();
- flush_redis(redis_port);
- redis_process.kill().unwrap();
- panic!("test failed with error: {e}");
- });
-
- let metrics = call_prometheus(prometheus_port).await.unwrap_or_else(|e| {
- std::fs::remove_dir_all(&working_dir).unwrap();
- flush_redis(redis_port);
- redis_process.kill().unwrap();
- panic!("test failed with error: {e}");
- });
+ .map_err(|e| cleanup_err(e, &working_dir, redis_port, &mut redis_process))?;
+
+ sleep(Duration::new(1, 0));
+ let metrics = call_prometheus(prometheus_port)
+ .await
+ .map_err(|e| cleanup_err(e, &working_dir, redis_port, &mut redis_process))?;
+
const EXPECTED: &'static str = "# HELP chainhook_stx_registered_predicates The number of Stacks predicates that have been registered by the Chainhook node.\n# TYPE chainhook_stx_registered_predicates gauge\nchainhook_stx_registered_predicates 1\n";
assert!(metrics.contains(EXPECTED));
- std::fs::remove_dir_all(&working_dir).unwrap();
- flush_redis(redis_port);
- redis_process.kill().unwrap();
+ sleep(Duration::new(1, 0));
+ cleanup(&working_dir, redis_port, &mut redis_process);
+ Ok(())
}
async fn await_observer_started(port: u16) {
diff --git a/wix/License.rtf b/components/chainhook-cli/wix/License.rtf
similarity index 100%
rename from wix/License.rtf
rename to components/chainhook-cli/wix/License.rtf
diff --git a/wix/main.wxs b/components/chainhook-cli/wix/main.wxs
similarity index 86%
rename from wix/main.wxs
rename to components/chainhook-cli/wix/main.wxs
index 2fccfeac6..b6ba6baec 100644
--- a/wix/main.wxs
+++ b/components/chainhook-cli/wix/main.wxs
@@ -33,7 +33,7 @@
-
+
-
+
-
-
+
+
-
+
@@ -157,7 +157,7 @@
Disabling the EULA dialog in the installer requires commenting out
or removing the following `WixVariable` tag
-->
-
+
-
+
-
+
diff --git a/docs/chainhook-openapi.json b/docs/chainhook-openapi.json
index 1ad29ab88..2db470b28 100644
--- a/docs/chainhook-openapi.json
+++ b/docs/chainhook-openapi.json
@@ -2,7 +2,7 @@
"openapi": "3.0.0",
"info": {
"title": "chainhook",
- "version": "1.6.0"
+ "version": "1.6.1"
},
"paths": {
"/ping": {
diff --git a/docs/images/chainhook-banner.bmp b/docs/images/chainhook-banner.bmp
new file mode 100644
index 000000000..e8305e95d
Binary files /dev/null and b/docs/images/chainhook-banner.bmp differ
diff --git a/docs/images/chainhook-dialog.bmp b/docs/images/chainhook-dialog.bmp
new file mode 100644
index 000000000..615ecd87c
Binary files /dev/null and b/docs/images/chainhook-dialog.bmp differ
diff --git a/rust-toolchain b/rust-toolchain
index 8142c3012..83025f972 100644
--- a/rust-toolchain
+++ b/rust-toolchain
@@ -1,2 +1,2 @@
[toolchain]
-channel = "1.73.0"
+channel = "1.77.0"