diff --git a/.github/workflows/discord-notify.yml b/.github/workflows/discord-notify.yml index 0109641..7b874ba 100644 --- a/.github/workflows/discord-notify.yml +++ b/.github/workflows/discord-notify.yml @@ -21,7 +21,7 @@ jobs: notify: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: 0 diff --git a/.github/workflows/docs-link-check.yml b/.github/workflows/docs-link-check.yml index b5b72ec..321836d 100644 --- a/.github/workflows/docs-link-check.yml +++ b/.github/workflows/docs-link-check.yml @@ -13,7 +13,7 @@ jobs: contents: read steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Check links uses: lycheeverse/lychee-action@v1.4.1 env: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1c74cff..3929d34 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,8 +1,13 @@ -name: CI Test for GEF-EXTRAS +name: Tests env: + GEF_CI_CACHE_DIR: /tmp + PY_VER: "0" + GEF_CI_NB_CPU: 1 BRANCH: main - NB_CPU: 1 + GEF_PATH: + GEF_PATH_DIR: + GEF_EXTRAS_PATH: on: push: @@ -14,55 +19,93 @@ on: - main jobs: - build: + installers: + runs-on: ubuntu-24.04 + name: "Verify GEF-Extras install from gef/scripts" + steps: + - name: Install python and toolchain + run: | + export NEEDRESTART_MODE=n + sudo apt-get update + sudo apt-get install -y wget gdb-multiarch python3-dev python3-pip python3-full python3-wheel python3-setuptools git + echo GEF_PATH="${HOME}/gef/gef.py" >> $GITHUB_ENV + echo GEF_CI_ARCH=`uname --processor` >> $GITHUB_ENV + echo GEF_PATH_DIR=${HOME}/gef >> $GITHUB_ENV + echo GEF_EXTRAS_PATH=${HOME}/gef-extras >> $GITHUB_ENV + + - name: Checkout GEF & GEF-Extras + run: | + mkdir -p ~/.config/pip + echo '[global]' > ~/.config/pip/pip.conf + echo 'break-system-packages = true' >> ~/.config/pip/pip.conf + mkdir -p ${{ env.GEF_PATH_DIR }} ${{ env.GEF_EXTRAS_PATH }} + wget -O ${{ env.GEF_PATH }} https://raw.githubusercontent.com/hugsy/gef/${{ env.BRANCH }}/gef.py + echo "source ${{ env.GEF_PATH }}" > ~/.gdbinit + wget -O ./gef-extras.sh https://github.com/hugsy/gef/raw/${{ env.BRANCH }}/scripts/gef-extras.sh + chmod +x ./gef-extras.sh + ./gef-extras.sh -b ${{ env.BRANCH }} -p ${HOME} + gdb -q -ex 'gef missing' -ex quit + + tests: + needs: [installers, ] strategy: fail-fast: false matrix: - os: - - ubuntu-20.04 - - ubuntu-22.04 - name: "Run Unit tests on ${{ matrix.os }}" - runs-on: ${{ matrix.os }} + runner: [ubuntu-24.04, ubuntu-22.04] + name: "Run Unit tests on ${{ matrix.runner }}" + runs-on: ${{ matrix.runner }} defaults: run: shell: bash steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install python and toolchain run: | sudo apt-get update sudo apt-get install -y wget gdb-multiarch python3-dev python3-pip python3-wheel python3-setuptools git cmake gcc g++ pkg-config libglib2.0-dev gdbserver - sudo python3 -m pip install --upgrade pip + + - name: Install python and toolchain + if: matrix.runner == 'ubuntu-24.04' + run: | + mkdir -p ~/.config/pip + echo '[global]' > ~/.config/pip/pip.conf + echo 'break-system-packages = true' >> ~/.config/pip/pip.conf + sudo apt-get install -y python3-full + + - name: Install python and toolchain + if: matrix.runner != 'ubuntu-24.04' + run: | + python3 -m pip install pip -U - name: Set runtime environment variables run: | echo PY_VER=`gdb -q -nx -ex "pi print('.'.join(map(str, sys.version_info[:2])))" -ex quit` >> $GITHUB_ENV - echo NB_CPU=`grep -c ^processor /proc/cpuinfo` >> $GITHUB_ENV + echo GEF_CI_NB_CPU=`grep -c ^processor /proc/cpuinfo` >> $GITHUB_ENV echo GEF_CI_ARCH=`uname --processor` >> $GITHUB_ENV - echo GEF_CACHE_DIR=`python3 -m pip cache dir` >> $GITHUB_ENV + echo GEF_CI_CACHE_DIR=`python3 -m pip cache dir` >> $GITHUB_ENV echo GEF_PATH_DIR=${HOME}/gef >> $GITHUB_ENV echo GEF_PATH="${HOME}/gef/gef.py" >> $GITHUB_ENV - name: Cache dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 id: cache-deps env: cache-name: cache-deps with: - key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + key: ${{ matrix.runner }}-pip-${{ hashFiles('**/requirements.txt') }} path: | - ${{ env.GEF_CACHE_DIR }} + ${{ env.GEF_CI_CACHE_DIR }} restore-keys: - ${{ runner.os }}-pip-${{ env.cache-name }}- - ${{ runner.os }}-pip- - ${{ runner.os }}-${{ env.cache-name }}- - ${{ runner.os }}- + ${{ matrix.runner }}-pip-${{ env.cache-name }}- + ${{ matrix.runner }}-pip- + ${{ matrix.runner }}-${{ env.cache-name }}- + ${{ matrix.runner }}- - name: Install requirements run: | - mkdir -p ${{ env.GEF_CACHE_DIR }} + mkdir -p ${{ env.GEF_CI_CACHE_DIR }} python${{ env.PY_VER }} -m pip install --user --upgrade -r ./requirements.txt -r ./tests/requirements.txt - name: Checkout GEF @@ -73,35 +116,8 @@ jobs: - name: Setup Tests run: | - make -C tests/binaries -j ${{ env.NB_CPU }} + make -C tests/binaries -j ${{ env.GEF_CI_NB_CPU }} - name: Run Tests run: | - python${{ env.PY_VER }} -m pytest --forked -n ${{ env.NB_CPU }} -v -m "not benchmark" tests/ - - standalone: - runs-on: ubuntu-latest - name: "Verify GEF-Extras install from gef/scripts" - steps: - - name: Install python and toolchain - run: | - sudo apt-get update - sudo apt-get install -y wget gdb-multiarch python3-dev python3-pip python3-wheel python3-setuptools git cmake gcc g++ pkg-config libglib2.0-dev gdbserver - sudo python3 -m pip install --upgrade pip - echo PY_VER=`gdb -q -nx -ex "pi print('.'.join(map(str, sys.version_info[:2])))" -ex quit` >> $GITHUB_ENV - echo NB_CPU=`grep -c ^processor /proc/cpuinfo` >> $GITHUB_ENV - echo GEF_CI_ARCH=`uname --processor` >> $GITHUB_ENV - echo GEF_CACHE_DIR=`python3 -m pip cache dir` >> $GITHUB_ENV - echo GEF_PATH_DIR=${HOME}/gef >> $GITHUB_ENV - echo GEF_EXTRAS_PATH=${HOME}/gef-extras >> $GITHUB_ENV - echo GEF_PATH="${HOME}/gef/gef.py" >> $GITHUB_ENV - - - name: Checkout GEF & GEF-Extras - run: | - mkdir -p ${{ env.GEF_PATH_DIR }} ${{ env.GEF_EXTRAS_PATH }} - wget -O ${{ env.GEF_PATH }} https://raw.githubusercontent.com/hugsy/gef/${{ env.BRANCH }}/gef.py - echo "source ${{ env.GEF_PATH }}" > ~/.gdbinit - wget -O ./gef-extras.sh https://github.com/hugsy/gef/raw/${{ env.BRANCH }}/scripts/gef-extras.sh - chmod +x ./gef-extras.sh - ./gef-extras.sh -b ${{ env.BRANCH }} -p ${HOME} - gdb -q -ex 'gef missing' -ex quit + python${{ env.PY_VER }} -m pytest --forked -n ${{ env.GEF_CI_NB_CPU }} -v -m "not benchmark" tests/