From 3693d1e2a87af0074598104338b5a4bb5bee202d Mon Sep 17 00:00:00 2001 From: Alexey <247128645+axkurcom@users.noreply.github.com> Date: Sun, 6 Sep 2026 20:08:01 +0300 Subject: [PATCH] GHA Workflows updated --- .github/workflows/build.yml | 8 ++--- .github/workflows/check.yml | 64 +++++++++++++++++++++------------- .github/workflows/codeql.yml | 6 ++-- .github/workflows/coverage.yml | 14 +++++--- .github/workflows/release.yml | 30 ++++++++-------- src/web/bridge/tests.rs | 3 ++ 6 files changed, 74 insertions(+), 51 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d664174..f36a10b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,13 +19,13 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v7.0.1 - name: Install latest stable Rust toolchain uses: dtolnay/rust-toolchain@stable - name: Cache cargo registry & build artifacts - uses: actions/cache@v4 + uses: actions/cache@v6.1.0 with: path: | ~/.cargo/registry @@ -39,7 +39,7 @@ jobs: run: cargo build --release --verbose - name: Upload binary artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: telemt - path: target/release/telemt \ No newline at end of file + path: target/release/telemt diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 8e43dd7..fa92783 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -14,9 +14,7 @@ concurrency: cancel-in-progress: true jobs: -# ========================== -# Formatting -# ========================== +# Rust formatting validation fmt: name: Fmt runs-on: ubuntu-latest @@ -25,7 +23,7 @@ jobs: contents: read steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - uses: dtolnay/rust-toolchain@stable with: @@ -33,9 +31,23 @@ jobs: - run: cargo fmt -- --check -# ========================== -# Tests -# ========================== +# Minimum supported Rust version validation + msrv: + name: MSRV + runs-on: ubuntu-latest + + permissions: + contents: read + + steps: + - uses: actions/checkout@v7.0.1 + + - uses: dtolnay/rust-toolchain@1.88.0 + + - name: Check all targets on MSRV + run: cargo check --all-targets --locked + +# Rust test suite test: name: Test runs-on: ubuntu-latest @@ -46,32 +58,34 @@ jobs: checks: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - uses: dtolnay/rust-toolchain@stable - name: Cache cargo - uses: actions/cache@v4 + uses: actions/cache@v6.1.0 with: path: | ~/.cargo/bin ~/.cargo/registry ~/.cargo/git target - key: ${{ runner.os }}-cargo-nextest-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-cargo-nextest-0.9.143-${{ hashFiles('**/Cargo.lock') }} restore-keys: | + ${{ runner.os }}-cargo-nextest-0.9.143- ${{ runner.os }}-cargo-nextest- ${{ runner.os }}-cargo- - name: Install cargo-nextest - run: cargo install --locked cargo-nextest || true + run: | + if ! cargo-nextest --version 2>/dev/null | grep -Fq "cargo-nextest 0.9.143"; then + cargo install --locked --version 0.9.143 --force cargo-nextest + fi - name: Run tests with nextest run: cargo nextest run -j "$(nproc)" -# ========================== -# Clippy -# ========================== +# Rust lint validation clippy: name: Clippy runs-on: ubuntu-latest @@ -81,14 +95,14 @@ jobs: checks: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Cache cargo - uses: actions/cache@v4 + uses: actions/cache@v6.1.0 with: path: | ~/.cargo/registry @@ -102,9 +116,7 @@ jobs: - name: Run clippy run: cargo clippy -j "$(nproc)" -- --cap-lints warn -# ========================== -# Udeps -# ========================== +# Unused dependency validation udeps: name: Udeps runs-on: ubuntu-latest @@ -113,27 +125,31 @@ jobs: contents: read steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - - uses: dtolnay/rust-toolchain@stable + - uses: dtolnay/rust-toolchain@nightly with: components: rust-src - name: Cache cargo - uses: actions/cache@v4 + uses: actions/cache@v6.1.0 with: path: | ~/.cargo/bin ~/.cargo/registry ~/.cargo/git target - key: ${{ runner.os }}-cargo-udeps-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-cargo-udeps-0.1.61-${{ hashFiles('**/Cargo.lock') }} restore-keys: | + ${{ runner.os }}-cargo-udeps-0.1.61- ${{ runner.os }}-cargo-udeps- ${{ runner.os }}-cargo- - name: Install cargo-udeps - run: cargo install --locked cargo-udeps || true + run: | + if ! cargo-udeps --version 2>/dev/null | grep -Fq "cargo-udeps 0.1.61"; then + cargo install --locked --version 0.1.61 --force cargo-udeps + fi - name: Run udeps run: cargo udeps -j "$(nproc)" || true diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index cf4a356..f17e762 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -30,16 +30,16 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v7.0.1 - name: Initialize CodeQL - uses: github/codeql-action/init@v4 + uses: github/codeql-action/init@v4.37.9 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} config-file: .github/codeql/codeql-config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v4 + uses: github/codeql-action/analyze@v4.37.9 with: category: "/language:${{ matrix.language }}" diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 2c9b510..786e6fe 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -17,33 +17,37 @@ jobs: contents: read steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - uses: dtolnay/rust-toolchain@stable with: components: llvm-tools-preview - name: Cache cargo - uses: actions/cache@v4 + uses: actions/cache@v6.1.0 with: path: | ~/.cargo/bin ~/.cargo/registry ~/.cargo/git target - key: ${{ runner.os }}-cargo-llvm-cov-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-cargo-llvm-cov-0.9.0-${{ hashFiles('**/Cargo.lock') }} restore-keys: | + ${{ runner.os }}-cargo-llvm-cov-0.9.0- ${{ runner.os }}-cargo-llvm-cov- ${{ runner.os }}-cargo- - name: Install cargo-llvm-cov - run: cargo install --locked cargo-llvm-cov || true + run: | + if ! cargo-llvm-cov --version 2>/dev/null | grep -Fq "cargo-llvm-cov 0.9.0"; then + cargo install --locked --version 0.9.0 --force cargo-llvm-cov + fi - name: Generate LCOV report run: cargo llvm-cov --locked --lcov --output-path lcov.info - name: Upload LCOV report - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7.0.1 with: name: telemt-lcov path: lcov.info diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 76e01fa..b1dd613 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -88,9 +88,9 @@ jobs: cpu: generic steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - - uses: dtolnay/rust-toolchain@v1 + - uses: dtolnay/rust-toolchain@stable with: toolchain: stable targets: | @@ -108,7 +108,7 @@ jobs: gcc-aarch64-linux-gnu \ g++-aarch64-linux-gnu - - uses: actions/cache@v4 + - uses: actions/cache@v6.1.0 with: path: | /usr/local/cargo/registry @@ -166,7 +166,7 @@ jobs: sha256sum "${{ matrix.asset }}.tar.gz" > "${{ matrix.asset }}.tar.gz.sha256" - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7.0.1 with: name: ${{ matrix.asset }} path: dist/* @@ -199,7 +199,7 @@ jobs: cpu: generic steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - name: Install deps run: | @@ -209,7 +209,7 @@ jobs: pkg-config \ curl - - uses: actions/cache@v4 + - uses: actions/cache@v6.1.0 if: matrix.target == 'aarch64-unknown-linux-musl' with: path: ~/.musl-aarch64 @@ -244,7 +244,7 @@ jobs: - name: Add rust target run: rustup target add ${{ matrix.target }} - - uses: actions/cache@v4 + - uses: actions/cache@v6.1.0 with: path: | /usr/local/cargo/registry @@ -302,7 +302,7 @@ jobs: sha256sum "${{ matrix.asset }}.tar.gz" > "${{ matrix.asset }}.tar.gz.sha256" - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7.0.1 with: name: ${{ matrix.asset }} path: dist/* @@ -319,7 +319,7 @@ jobs: contents: write steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8.0.1 with: path: artifacts @@ -331,7 +331,7 @@ jobs: find artifacts -type f -exec cp {} dist/ \; - name: Create GitHub Release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3.0.3 with: tag_name: ${{ needs.prepare.outputs.version }} target_commitish: ${{ github.sha }} @@ -353,13 +353,13 @@ jobs: packages: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7.0.1 - - uses: docker/setup-qemu-action@v3 + - uses: docker/setup-qemu-action@v4.3.0 - - uses: docker/setup-buildx-action@v3 + - uses: docker/setup-buildx-action@v4.3.0 - - uses: docker/login-action@v3 + - uses: docker/login-action@v4.6.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -407,7 +407,7 @@ jobs: } >> "${GITHUB_OUTPUT}" - name: Build & Push - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7.3.0 with: context: . push: true diff --git a/src/web/bridge/tests.rs b/src/web/bridge/tests.rs index c2b53b5..bc96494 100644 --- a/src/web/bridge/tests.rs +++ b/src/web/bridge/tests.rs @@ -91,6 +91,9 @@ fn rendered_page_embeds_the_configured_bridge_timing_policy() { page.body .contains("helloTimer=setTimeout(()=>fail('timeout'),bridgeRequestMs)") ); + assert!(page.body.contains( + "if(!createStarted){createStarted=true;if(helloTimer)clearTimeout(helloTimer);helloTimer=null;helloFrame=message.data" + )); } #[test]