чт, 30 июл. 2026 г. в 17:40, Willy Tarreau <[email protected]>:

> Hi Ilya,
>
> On Wed, Jul 01, 2026 at 10:44:02PM +0200, Ilia Shipitsin wrote:
> > Convert the vtest setup action to a Node 24 JavaScript action.
> > Rename the action path from setup-vtest to vtest and update workflow
> references.
> > move VTest execution into the action so Run VTest steps call the action
> directly
> > move VTest failure logs and coredump reporting into the action post step
> > simplify workflow jobs by removing duplicated Show VTest results and
> Show coredumps steps
> > fix container path issues by using a workspace-relative vtest binary
> during reg-tests
>
> Care to explain the purpose ? I'm having a hard time decoding what is
> written above (missing punctuation and case makes it quite hard), and
> I don't understand if it tries to resolve an issue, improve something,
> clean something up, simplify something, perform some needed code
> maintenance etc. It would really help reviews to have more info, because
> I think that for most readers the question remains "I'm not sure whether
> I'm supposed to be authoritative on that", and that's left for someone
> else to deal with :-(
>
>
Convert vtest setup action from composite action to javascript action

Rationale

While a composite action can combine multiple steps into a reusable
imported action,
it cannot execute steps after the entire job has completed.

The vtest job is typically followed by several post-processing steps, such
as analyzing the test
results and examining core dumps. Previously, these post-processing steps
had to be duplicated
across multiple workflows. In contrast, a JavaScript action can implement
this functionality
using post actions, allowing analysis logic to run automatically after the
job finishes.


> Thanks!
> Willy
>
> > ---
> >  .github/actions/setup-vtest/action.yml | 49 ---------------
> >  .github/actions/vtest/action.yml       | 11 ++++
> >  .github/actions/vtest/dist/main.js     | 83 ++++++++++++++++++++++++++
> >  .github/actions/vtest/dist/post.js     | 54 +++++++++++++++++
> >  .github/workflows/aws-lc.yml           | 28 +--------
> >  .github/workflows/fedora-rawhide.yml   | 13 +---
> >  .github/workflows/openssl-ech.yml      | 33 +---------
> >  .github/workflows/openssl-master.yml   | 33 +---------
> >  .github/workflows/quictls.yml          | 28 +--------
> >  .github/workflows/vtest.yml            | 27 +--------
> >  .github/workflows/wolfssl.yml          | 28 +--------
> >  11 files changed, 155 insertions(+), 232 deletions(-)
> >  delete mode 100644 .github/actions/setup-vtest/action.yml
> >  create mode 100644 .github/actions/vtest/action.yml
> >  create mode 100644 .github/actions/vtest/dist/main.js
> >  create mode 100644 .github/actions/vtest/dist/post.js
> >
> > diff --git a/.github/actions/setup-vtest/action.yml
> b/.github/actions/setup-vtest/action.yml
> > deleted file mode 100644
> > index c6071b473..000000000
> > --- a/.github/actions/setup-vtest/action.yml
> > +++ /dev/null
> > @@ -1,49 +0,0 @@
> > -name: 'setup VTest'
> > -description: 'ssss'
> > -
> > -runs:
> > -  using: "composite"
> > -  steps:
> > -
> > -    - name: Setup coredumps
> > -      if: ${{ runner.os == 'Linux' }}
> > -      shell: sh
> > -      run: |
> > -        sudo mkdir -p /tmp/core
> > -        sudo sysctl fs.suid_dumpable=1
> > -        sudo sysctl kernel.core_pattern=/tmp/core/core.%h.%e.%t
> > -
> > -    - name: Setup ulimit for core dumps
> > -      shell: sh
> > -      run: |
> > -        # This is required for macOS which does not actually allow to
> increase
> > -        # the '-n' soft limit to the hard limit, thus failing to run.
> > -        ulimit -n 65536
> > -        ulimit -c unlimited
> > -
> > -    - name: Get VTest latest commit SHA
> > -      id: vtest-sha
> > -      shell: sh
> > -      run: |
> > -        echo "sha=$(git ls-remote
> https://code.vinyl-cache.org/vtest/VTest2 HEAD | cut -f1)" >>
> $GITHUB_OUTPUT
> > -
> > -    - name: Cache VTest
> > -      id: cache-vtest
> > -      uses: actions/cache@v5
> > -      with:
> > -        path: ${{ github.workspace }}/vtest
> > -        key: vtest-${{ runner.os }}-${{ runner.arch }}-${{
> steps.vtest-sha.outputs.sha }}
> > -
> > -    - name: Install VTest
> > -      if: ${{ steps.cache-vtest.outputs.cache-hit != 'true' }}
> > -      shell: sh
> > -      run: |
> > -        DESTDIR=${{ github.workspace }}/vtest scripts/build-vtest.sh
> > -
> > -    - name: Install problem matcher for VTest
> > -      shell: sh
> > -      # This allows one to more easily see which tests fail.
> > -      run: echo "::add-matcher::.github/vtest.json"
> > -
> > -
> > -
> > diff --git a/.github/actions/vtest/action.yml
> b/.github/actions/vtest/action.yml
> > new file mode 100644
> > index 000000000..2ebc8eae1
> > --- /dev/null
> > +++ b/.github/actions/vtest/action.yml
> > @@ -0,0 +1,11 @@
> > +name: vtest
> > +description: Setup VTest and publish failing VTest logs automatically
> in a post step.
> > +
> > +runs:
> > +  using: node24
> > +  main: dist/main.js
> > +  post: dist/post.js
> > +  post-if: failure()
> > +
> > +
> > +
> > diff --git a/.github/actions/vtest/dist/main.js
> b/.github/actions/vtest/dist/main.js
> > new file mode 100644
> > index 000000000..f797a36df
> > --- /dev/null
> > +++ b/.github/actions/vtest/dist/main.js
> > @@ -0,0 +1,83 @@
> > +const { execSync } = require('child_process');
> > +const fs = require('fs');
> > +const path = require('path');
> > +
> > +function run(command, options = {}) {
> > +  const { ignoreError = false, cwd = process.cwd() } = options;
> > +
> > +  try {
> > +    execSync(command, {
> > +      cwd,
> > +      stdio: 'inherit',
> > +      shell: '/bin/sh'
> > +    });
> > +  } catch (error) {
> > +    if (!ignoreError) {
> > +      throw error;
> > +    }
> > +  }
> > +}
> > +
> > +function setupCoreDumps() {
> > +  if (process.platform !== 'linux') {
> > +    return;
> > +  }
> > +
> > +  run('sudo mkdir -p /tmp/core');
> > +  run('sudo sysctl fs.suid_dumpable=1');
> > +  run('sudo sysctl kernel.core_pattern=/tmp/core/core.%h.%e.%t');
> > +}
> > +
> > +function setupUlimit() {
> > +  if (process.platform === 'win32') {
> > +    return;
> > +  }
> > +
> > +  run('ulimit -n 65536; ulimit -c unlimited');
> > +}
> > +
> > +function installVtest(workspace) {
> > +  const vtestBin = path.join(workspace, 'vtest', 'vtest');
> > +  if (fs.existsSync(vtestBin)) {
> > +    return;
> > +  }
> > +
> > +  run(`DESTDIR="${path.join(workspace, 'vtest')}"
> scripts/build-vtest.sh`, { cwd: workspace });
> > +}
> > +
> > +function addMatcher() {
> > +  // This allows one to more easily see which tests fail.
> > +  process.stdout.write('::add-matcher::.github/vtest.json\n');
> > +}
> > +
> > +function shellQuote(value) {
> > +  return `'${String(value).replace(/'/g, `'"'"'`)}'`;
> > +}
> > +
> > +function runRegtests(workspace) {
> > +  const vtestProgram = './vtest/vtest';
> > +  const regtestsTypes = 'default,bug,devel';
> > +
> > +  run(
> > +    `make reg-tests VTEST_PROGRAM=${shellQuote(vtestProgram)}
> REGTESTS_TYPES=${shellQuote(regtestsTypes)}`,
> > +    { cwd: workspace }
> > +  );
> > +}
> > +
> > +function main() {
> > +  const workspace = process.env.GITHUB_WORKSPACE || process.cwd();
> > +
> > +  setupCoreDumps();
> > +  setupUlimit();
> > +  installVtest(workspace);
> > +  addMatcher();
> > +  runRegtests(workspace);
> > +}
> > +
> > +try {
> > +  main();
> > +} catch (error) {
> > +  const message = error && error.message ? error.message :
> String(error);
> > +  process.stdout.write(`::error::vtest action failed: ${message}\n`);
> > +  process.exit(1);
> > +}
> > diff --git a/.github/actions/vtest/dist/post.js
> b/.github/actions/vtest/dist/post.js
> > new file mode 100644
> > index 000000000..3699c42a2
> > --- /dev/null
> > +++ b/.github/actions/vtest/dist/post.js
> > @@ -0,0 +1,54 @@
> > +const { execSync } = require('child_process');
> > +
> > +function run(command) {
> > +  execSync(command, {
> > +    stdio: 'inherit',
> > +    shell: '/bin/sh'
> > +  });
> > +}
> > +
> > +function showVtestLogs() {
> > +  const command = [
> > +    'for folder in ${TMPDIR:-/tmp}/haregtests-*/vtc.*; do',
> > +    '  if [ ! -f "$folder/INFO" ] && [ ! -f "$folder/LOG" ]; then',
> > +    '    continue',
> > +    '  fi',
> > +    '  printf "::group::"',
> > +    '  [ -f "$folder/INFO" ] && cat "$folder/INFO"',
> > +    '  [ -f "$folder/LOG" ] && cat "$folder/LOG"',
> > +    '  echo "::endgroup::"',
> > +    'done'
> > +  ].join('\n');
> > +
> > +  run(command);
> > +}
> > +
> > +function showCoreDumps() {
> > +  const command = [
> > +    'HAPROXY_BIN=./haproxy',
> > +    'for file in /tmp/core/core.* /tmp/core.*; do',
> > +    '  [ -f "$file" ] || continue',
> > +    '  printf "::group::"',
> > +    '  gdb -ex "thread apply all bt full" "$HAPROXY_BIN" "$file" ||
> true',
> > +    '  echo "::endgroup::"',
> > +    'done'
> > +  ].join('\n');
> > +
> > +  run(command);
> > +}
> > +
> > +function main() {
> > +  if (process.platform === 'win32') {
> > +    return;
> > +  }
> > +
> > +  showVtestLogs();
> > +  showCoreDumps();
> > +}
> > +
> > +try {
> > +  main();
> > +} catch (error) {
> > +  const message = error && error.message ? error.message :
> String(error);
> > +  process.stdout.write(`::warning::vtest post step could not show VTest
> logs: ${message}\n`);
> > +}
> > diff --git a/.github/workflows/aws-lc.yml b/.github/workflows/aws-lc.yml
> > index e239fa94f..8509447d9 100644
> > --- a/.github/workflows/aws-lc.yml
> > +++ b/.github/workflows/aws-lc.yml
> > @@ -55,39 +55,13 @@ jobs:
> >            ldd $(which haproxy)
> >            haproxy -vv
> >            echo "version=$(haproxy -vq)" >> $GITHUB_OUTPUT
> > -      - uses: ./.github/actions/setup-vtest
> >        - name: Run VTest for HAProxy
> >          id: vtest
> > -        run: |
> > -          make reg-tests VTEST_PROGRAM=${{ github.workspace
> }}/vtest/vtest REGTESTS_TYPES=default,bug,devel
> > +        uses: ./.github/actions/vtest
> >        - name: Run Unit tests
> >          id: unittests
> >          run: |
> >            make unit-tests
> > -      - name: Show VTest results
> > -        if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -        run: |
> > -          for folder in ${TMPDIR:-/tmp}/haregtests-*/vtc.*; do
> > -            printf "::group::"
> > -            cat $folder/INFO
> > -            cat $folder/LOG
> > -            echo "::endgroup::"
> > -          done
> > -          exit 1
> > -      - name: Show coredumps
> > -        if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -        run: |
> > -          failed=false
> > -          shopt -s nullglob
> > -          for file in /tmp/core.*; do
> > -            failed=true
> > -            printf "::group::"
> > -            gdb -ex 'thread apply all bt full' ./haproxy $file
> > -            echo "::endgroup::"
> > -          done
> > -          if [ "$failed" = true ]; then
> > -            exit 1;
> > -          fi
> >        - name: Show Unit-Tests results
> >          if: ${{ failure() && steps.unittests.outcome == 'failure' }}
> >          run: |
> > diff --git a/.github/workflows/fedora-rawhide.yml
> b/.github/workflows/fedora-rawhide.yml
> > index 7b8c9a3af..52f145e3f 100644
> > --- a/.github/workflows/fedora-rawhide.yml
> > +++ b/.github/workflows/fedora-rawhide.yml
> > @@ -31,7 +31,6 @@ jobs:
> >        run: |
> >          dnf -y install awk diffutils git zlib-devel pcre2-devel
> 'perl(FindBin)' perl-IPC-Cmd 'perl(File::Copy)' 'perl(File::Compare)'
> lua-devel socat findutils systemd-devel clang openssl-devel.x86_64 procps-ng
> >          dnf -y install 'perl(FindBin)' 'perl(File::Compare)'
> perl-IPC-Cmd 'perl(File::Copy)' glibc-devel.i686 lua-devel.i686
> lua-devel.x86_64 systemd-devel.i686 zlib-ng-compat-devel.i686
> libatomic.i686 openssl-devel.i686 pcre2-devel.i686
> > -    - uses: ./.github/actions/setup-vtest
> >      - name: Compile HAProxy with ${{ matrix.platform.cc }}
> >        run: |
> >          make -j3 CC=${{ matrix.platform.cc }} V=1 ERR=1
> TARGET=linux-glibc DEBUG="-DDEBUG_POOL_INTEGRITY -DDEBUG_UNIT" USE_PROMEX=1
> USE_OPENSSL=1 USE_QUIC=1 USE_ZLIB=1 USE_PCRE2=1 USE_PCRE2_JIT=1 USE_LUA=1
> ADDLIB="${{ matrix.platform.ADDLIB_ATOMIC }}" ARCH_FLAGS="${{
> matrix.platform.ARCH_FLAGS }}"
> > @@ -53,17 +52,7 @@ jobs:
> >          update-crypto-policies
> >      - name: Run VTest for HAProxy ${{
> steps.show-version.outputs.version }}
> >        id: vtest
> > -      run: |
> > -        make reg-tests VTEST_PROGRAM=${{ github.workspace
> }}/vtest/vtest REGTESTS_TYPES=default,bug,devel
> > -    - name: Show VTest results
> > -      if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -      run: |
> > -        for folder in ${TMPDIR:-/tmp}/haregtests-*/vtc.*; do
> > -          printf "::group::"
> > -          cat $folder/INFO
> > -          cat $folder/LOG
> > -          echo "::endgroup::"
> > -        done
> > +      uses: ./.github/actions/vtest
> >      - name: Run Unit tests
> >        id: unittests
> >        run: |
> > diff --git a/.github/workflows/openssl-ech.yml
> b/.github/workflows/openssl-ech.yml
> > index 0ee3a2273..8538eb744 100644
> > --- a/.github/workflows/openssl-ech.yml
> > +++ b/.github/workflows/openssl-ech.yml
> > @@ -19,7 +19,6 @@ jobs:
> >            sudo apt-get update -o Acquire::Languages=none -o
> Acquire::Translation=none
> >            sudo apt-get --no-install-recommends -y install socat gdb
> >            sudo apt-get --no-install-recommends -y install libpsl-dev
> > -      - uses: ./.github/actions/setup-vtest
> >        - name: Install OpenSSL+ECH
> >          run: env OPENSSL_VERSION="git-feature/ech" GIT_TYPE="branch"
> scripts/build-ssl.sh
> >        - name: Install curl+ECH
> > @@ -43,38 +42,8 @@ jobs:
> >          run: echo "::add-matcher::.github/vtest.json"
> >        - name: Run VTest for HAProxy
> >          id: vtest
> > -        run: |
> > -          # This is required for macOS which does not actually allow to
> increase
> > -          # the '-n' soft limit to the hard limit, thus failing to run.
> > -          ulimit -n 65536
> > -          # allow to catch coredumps
> > -          ulimit -c unlimited
> > -          make reg-tests VTEST_PROGRAM=${{ github.workspace
> }}/vtest/vtest REGTESTS_TYPES=default,bug,devel
> > -      - name: Show VTest results
> > -        if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -        run: |
> > -          for folder in ${TMPDIR:-/tmp}/haregtests-*/vtc.*; do
> > -            printf "::group::"
> > -            cat $folder/INFO
> > -            cat $folder/LOG
> > -            echo "::endgroup::"
> > -          done
> > -          exit 1
> > +        uses: ./.github/actions/vtest
> >        - name: Run Unit tests
> >          id: unittests
> >          run: |
> >            make unit-tests
> > -      - name: Show coredumps
> > -        if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -        run: |
> > -          failed=false
> > -          shopt -s nullglob
> > -          for file in /tmp/core.*; do
> > -            failed=true
> > -            printf "::group::"
> > -            gdb -ex 'thread apply all bt full' ./haproxy $file
> > -            echo "::endgroup::"
> > -          done
> > -          if [ "$failed" = true ]; then
> > -            exit 1;
> > -          fi
> > diff --git a/.github/workflows/openssl-master.yml
> b/.github/workflows/openssl-master.yml
> > index ab9d1ca38..b63b44a20 100644
> > --- a/.github/workflows/openssl-master.yml
> > +++ b/.github/workflows/openssl-master.yml
> > @@ -19,7 +19,6 @@ jobs:
> >            sudo apt-get update -o Acquire::Languages=none -o
> Acquire::Translation=none
> >            sudo apt-get --no-install-recommends -y install socat gdb
> >            sudo apt-get --no-install-recommends -y install libpsl-dev
> > -      - uses: ./.github/actions/setup-vtest
> >        - name: Install OpenSSL master
> >          run: env OPENSSL_VERSION="git-master" GIT_TYPE="branch"
> scripts/build-ssl.sh
> >        - name: Compile HAProxy
> > @@ -40,38 +39,8 @@ jobs:
> >          run: echo "::add-matcher::.github/vtest.json"
> >        - name: Run VTest for HAProxy
> >          id: vtest
> > -        run: |
> > -          # This is required for macOS which does not actually allow to
> increase
> > -          # the '-n' soft limit to the hard limit, thus failing to run.
> > -          ulimit -n 65536
> > -          # allow to catch coredumps
> > -          ulimit -c unlimited
> > -          make reg-tests VTEST_PROGRAM=${{ github.workspace
> }}/vtest/vtest REGTESTS_TYPES=default,bug,devel
> > -      - name: Show VTest results
> > -        if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -        run: |
> > -          for folder in ${TMPDIR:-/tmp}/haregtests-*/vtc.*; do
> > -            printf "::group::"
> > -            cat $folder/INFO
> > -            cat $folder/LOG
> > -            echo "::endgroup::"
> > -          done
> > -          exit 1
> > +        uses: ./.github/actions/vtest
> >        - name: Run Unit tests
> >          id: unittests
> >          run: |
> >            make unit-tests
> > -      - name: Show coredumps
> > -        if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -        run: |
> > -          failed=false
> > -          shopt -s nullglob
> > -          for file in /tmp/core.*; do
> > -            failed=true
> > -            printf "::group::"
> > -            gdb -ex 'thread apply all bt full' ./haproxy $file
> > -            echo "::endgroup::"
> > -          done
> > -          if [ "$failed" = true ]; then
> > -            exit 1;
> > -          fi
> > diff --git a/.github/workflows/quictls.yml
> b/.github/workflows/quictls.yml
> > index b662b7347..32825ea36 100644
> > --- a/.github/workflows/quictls.yml
> > +++ b/.github/workflows/quictls.yml
> > @@ -39,36 +39,10 @@ jobs:
> >            ldd $(which haproxy)
> >            haproxy -vv
> >            echo "version=$(haproxy -vq)" >> $GITHUB_OUTPUT
> > -      - uses: ./.github/actions/setup-vtest
> >        - name: Run VTest for HAProxy
> >          id: vtest
> > -        run: |
> > -          make reg-tests VTEST_PROGRAM=${{ github.workspace
> }}/vtest/vtest REGTESTS_TYPES=default,bug,devel
> > -      - name: Show VTest results
> > -        if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -        run: |
> > -          for folder in ${TMPDIR:-/tmp}/haregtests-*/vtc.*; do
> > -            printf "::group::"
> > -            cat $folder/INFO
> > -            cat $folder/LOG
> > -            echo "::endgroup::"
> > -          done
> > -          exit 1
> > +        uses: ./.github/actions/vtest
> >        - name: Run Unit tests
> >          id: unittests
> >          run: |
> >            make unit-tests
> > -      - name: Show coredumps
> > -        if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -        run: |
> > -          failed=false
> > -          shopt -s nullglob
> > -          for file in /tmp/core.*; do
> > -            failed=true
> > -            printf "::group::"
> > -            gdb -ex 'thread apply all bt full' ./haproxy $file
> > -            echo "::endgroup::"
> > -          done
> > -          if [ "$failed" = true ]; then
> > -            exit 1;
> > -          fi
> > diff --git a/.github/workflows/vtest.yml b/.github/workflows/vtest.yml
> > index fd546d5a7..1b242eaba 100644
> > --- a/.github/workflows/vtest.yml
> > +++ b/.github/workflows/vtest.yml
> > @@ -88,7 +88,6 @@ jobs:
> >        run: |
> >          brew install socat
> >          brew install lua
> > -    - uses: ./.github/actions/setup-vtest
> >      - name: Install SSL ${{ matrix.ssl }}
> >        if: ${{ matrix.ssl && matrix.ssl != 'stock' &&
> steps.cache_ssl.outputs.cache-hit != 'true' }}
> >        run: env ${{ matrix.ssl }} scripts/build-ssl.sh
> > @@ -127,18 +126,7 @@ jobs:
> >          echo "version=$(haproxy -vq)" >> $GITHUB_OUTPUT
> >      - name: Run VTest for HAProxy ${{
> steps.show-version.outputs.version }}
> >        id: vtest
> > -      run: |
> > -        make reg-tests VTEST_PROGRAM=${{ github.workspace
> }}/vtest/vtest REGTESTS_TYPES=default,bug,devel
> > -    - name: Show VTest results
> > -      if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -      run: |
> > -        for folder in ${TMPDIR:-/tmp}/haregtests-*/vtc.*; do
> > -          printf "::group::"
> > -          cat $folder/INFO
> > -          cat $folder/LOG
> > -          echo "::endgroup::"
> > -        done
> > -        exit 1
> > +      uses: ./.github/actions/vtest
> >      - name: Run Unit tests
> >        id: unittests
> >        run: |
> > @@ -152,16 +140,3 @@ jobs:
> >            echo "::endgroup::"
> >          done
> >          exit 1
> > -    - name: Show coredumps
> > -      if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -      run: |
> > -        failed=false
> > -        for file in /tmp/core/core.*; do
> > -          failed=true
> > -          printf "::group::"
> > -          gdb -ex 'thread apply all bt full' ./haproxy $file
> > -          echo "::endgroup::"
> > -        done
> > -        if [ "$failed" = true ]; then
> > -          exit 1;
> > -        fi
> > diff --git a/.github/workflows/wolfssl.yml
> b/.github/workflows/wolfssl.yml
> > index bf0405c41..ec8e6f4ac 100644
> > --- a/.github/workflows/wolfssl.yml
> > +++ b/.github/workflows/wolfssl.yml
> > @@ -35,39 +35,13 @@ jobs:
> >            ldd $(which haproxy)
> >            haproxy -vv
> >            echo "version=$(haproxy -vq)" >> $GITHUB_OUTPUT
> > -      - uses: ./.github/actions/setup-vtest
> >        - name: Run VTest for HAProxy
> >          id: vtest
> > -        run: |
> > -          make reg-tests VTEST_PROGRAM=${{ github.workspace
> }}/vtest/vtest REGTESTS_TYPES=default,bug,devel
> > +        uses: ./.github/actions/vtest
> >        - name: Run Unit tests
> >          id: unittests
> >          run: |
> >            make unit-tests
> > -      - name: Show VTest results
> > -        if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -        run: |
> > -          for folder in ${TMPDIR:-/tmp}/haregtests-*/vtc.*; do
> > -            printf "::group::"
> > -            cat $folder/INFO
> > -            cat $folder/LOG
> > -            echo "::endgroup::"
> > -          done
> > -          exit 1
> > -      - name: Show coredumps
> > -        if: ${{ failure() && steps.vtest.outcome == 'failure' }}
> > -        run: |
> > -          failed=false
> > -          shopt -s nullglob
> > -          for file in /tmp/core.*; do
> > -            failed=true
> > -            printf "::group::"
> > -            gdb -ex 'thread apply all bt full' ./haproxy $file
> > -            echo "::endgroup::"
> > -          done
> > -          if [ "$failed" = true ]; then
> > -            exit 1;
> > -          fi
> >        - name: Show Unit-Tests results
> >          if: ${{ failure() && steps.unittests.outcome == 'failure' }}
> >          run: |
> > --
> > 2.46.0.windows.1
> >
> >
>

Reply via email to