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"