mirror of
https://github.com/radareorg/r2flutter.git
synced 2026-11-07 06:26:00 -10:00
273 lines
8.4 KiB
YAML
273 lines
8.4 KiB
YAML
name: ci
|
|
|
|
env:
|
|
R2V: 6.2.4
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build-linux24:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- name: Installing radare2 ${{ env.R2V }}
|
|
uses: radareorg/github-actions@v3
|
|
with:
|
|
version: ${{ env.R2V }}
|
|
from-git: false
|
|
- name: Building r2flutter
|
|
run: make && make user-install
|
|
- name: Basic Testing
|
|
run: make test
|
|
- name: Radare Testing
|
|
run: r2r test/db/cmd
|
|
- name: Radare Extras Testing
|
|
run: r2r test/db/extras
|
|
- name: Package r2pm binary
|
|
run: make bindist
|
|
- name: Verify r2pm binary
|
|
run: |
|
|
unzip -l r2flutter-${{ env.R2V }}-linux-x86-64.zip
|
|
unzip -l r2flutter-${{ env.R2V }}-linux-x86-64.zip | grep -q 'bin/r2flutter$'
|
|
unzip -l r2flutter-${{ env.R2V }}-linux-x86-64.zip | grep -q 'plugins/core_flutter.so$'
|
|
- name: Upload r2pm binary
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: bindist-linux-x86-64
|
|
path: r2flutter-*.zip
|
|
if-no-files-found: error
|
|
- name: Package Debian build
|
|
run: make -C dist/debian
|
|
- name: Verify Debian package
|
|
shell: bash
|
|
run: |
|
|
shopt -s nullglob
|
|
packages=(dist/debian/r2flutter_*_amd64.deb)
|
|
test "${#packages[@]}" -eq 1
|
|
package="${packages[0]}"
|
|
version="$(./configure -qV)"
|
|
test "$(dpkg-deb --field "${package}" Package)" = r2flutter
|
|
test "$(dpkg-deb --field "${package}" Version)" = "${version}"
|
|
test "$(dpkg-deb --field "${package}" Architecture)" = amd64
|
|
test "$(dpkg-deb --field "${package}" Depends)" = radare2
|
|
contents="$(dpkg-deb --contents "${package}")"
|
|
printf '%s\n' "${contents}"
|
|
grep -E '^-.+ root/root .+ \./usr/local/bin/r2flutter$' <<< "${contents}"
|
|
plugin=".$(r2 -H R2_LIBR_PLUGINS)/core_flutter.so"
|
|
grep -Fq "${plugin}" <<< "${contents}"
|
|
make user-uninstall
|
|
sudo dpkg --force-depends --install "${package}"
|
|
test "$(r2flutter -V)" = "r2flutter ${version}"
|
|
test "$(r2 -q -c 'r2flutter -V' --)" = "r2flutter ${version}"
|
|
- name: Upload Debian package
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: r2flutter-debian-amd64
|
|
path: dist/debian/r2flutter_*_amd64.deb
|
|
if-no-files-found: error
|
|
|
|
meson-linux24:
|
|
name: Meson build on Linux
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- name: Install build dependencies
|
|
run: sudo apt-get update -y && sudo apt-get install -y build-essential meson ninja-build
|
|
- name: Installing radare2 ${{ env.R2V }}
|
|
uses: radareorg/github-actions@v3
|
|
with:
|
|
version: ${{ env.R2V }}
|
|
from-git: false
|
|
- name: Configure Meson
|
|
run: meson setup build-meson
|
|
- name: Build with Meson
|
|
run: meson compile -C build-meson
|
|
- name: Test Meson build
|
|
run: meson test -C build-meson --print-errorlogs
|
|
|
|
build-macos:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- name: Installing radare2 ${{ env.R2V }}
|
|
uses: radareorg/github-actions@v3
|
|
with:
|
|
version: ${{ env.R2V }}
|
|
from-git: false
|
|
- name: Building r2flutter
|
|
run: make && make user-install
|
|
- name: Basic Testing
|
|
run: make test
|
|
- name: Radare Testing
|
|
run: r2r test/db/cmd
|
|
- name: Radare Extras Testing
|
|
run: r2r test/db/extras
|
|
- name: Package r2pm binary
|
|
run: make bindist
|
|
- name: Verify r2pm binary
|
|
run: |
|
|
unzip -l r2flutter-${{ env.R2V }}-darwin-arm-64.zip
|
|
unzip -l r2flutter-${{ env.R2V }}-darwin-arm-64.zip | grep -q 'bin/r2flutter$'
|
|
unzip -l r2flutter-${{ env.R2V }}-darwin-arm-64.zip | grep -q 'plugins/core_flutter.dylib$'
|
|
- name: Upload r2pm binary
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: bindist-darwin-arm-64
|
|
path: r2flutter-*.zip
|
|
if-no-files-found: error
|
|
|
|
build-linux-arm:
|
|
runs-on: ubuntu-24.04-arm
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- name: Installing radare2 ${{ env.R2V }}
|
|
uses: radareorg/github-actions@v3
|
|
with:
|
|
version: ${{ env.R2V }}
|
|
from-git: false
|
|
- name: Building r2flutter
|
|
run: make && make user-install
|
|
- name: Basic Testing
|
|
run: make test
|
|
- name: Package r2pm binary
|
|
run: make bindist
|
|
- name: Upload r2pm binary
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: bindist-linux-arm-64
|
|
path: r2flutter-*.zip
|
|
if-no-files-found: error
|
|
|
|
build-windows:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- uses: actions/setup-python@v7
|
|
with:
|
|
python-version: 3.14.x
|
|
- name: Prepare MSVC toolchain
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: x64
|
|
- name: Install build tools
|
|
shell: pwsh
|
|
run: python -m pip install meson ninja
|
|
- name: Install radare2 ${{ env.R2V }}
|
|
uses: radareorg/github-actions@v3
|
|
with:
|
|
version: ${{ env.R2V }}
|
|
from-git: false
|
|
- name: Build and package r2flutter
|
|
shell: pwsh
|
|
run: ./dist/windows/build.ps1
|
|
- name: Verify Windows package
|
|
shell: pwsh
|
|
run: |
|
|
Expand-Archive -Path r2flutter-$env:R2V-windows-x86-64.zip -DestinationPath check-zip -Force
|
|
Get-ChildItem -Recurse check-zip | Select-Object -ExpandProperty FullName
|
|
$root = 'check-zip'
|
|
if (-not (Test-Path "$root/bin/r2flutter.exe")) { throw 'missing r2flutter.exe' }
|
|
if (-not (Test-Path "$root/plugins/core_flutter.dll")) { throw 'missing core_flutter.dll' }
|
|
- name: Upload Windows package
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: bindist-windows-x86-64
|
|
path: r2flutter-*.zip
|
|
if-no-files-found: error
|
|
|
|
r2-xps:
|
|
name: Build radare2 with r2flutter XPS
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Install build dependencies
|
|
run: sudo apt-get update -y && sudo apt-get install -y build-essential
|
|
- name: Build radare2 from source with r2flutter
|
|
run: |
|
|
git clone --depth=1 https://github.com/radareorg/radare2.git
|
|
cd radare2
|
|
cp -f ../r2plugin/config.mk libr/xps/config.mk
|
|
git clone .. libr/xps/p/r2flutter
|
|
make -C libr/xps
|
|
./configure --prefix=/usr
|
|
make -j$(nproc)
|
|
sudo make install
|
|
- name: Test embedded r2flutter plugin
|
|
run: |
|
|
r2 -q -c 'Lc~r2flutter' -- | grep r2flutter
|
|
r2 -q -c 'r2flutter -V' -- | grep 'r2flutter '
|
|
|
|
check-release:
|
|
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
|
|
needs:
|
|
- build-linux24
|
|
- meson-linux24
|
|
- build-macos
|
|
- build-linux-arm
|
|
- build-windows
|
|
- r2-xps
|
|
runs-on: ubuntu-24.04
|
|
outputs:
|
|
is_release: ${{ steps.tag.outputs.is_release }}
|
|
steps:
|
|
- name: Check release tag
|
|
id: tag
|
|
shell: bash
|
|
run: |
|
|
if [[ "${GITHUB_REF_NAME}" =~ ^[0-9] ]]; then
|
|
echo "is_release=yes" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "is_release=no" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
release:
|
|
if: ${{ needs.check-release.outputs.is_release == 'yes' }}
|
|
needs: check-release
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Prepare release notes
|
|
shell: bash
|
|
run: |
|
|
tag="${GITHUB_REF_NAME}"
|
|
previous_tag="$(git tag --merged "${tag}^" --sort=-version:refname | awk '/^[0-9]/{print; exit}')"
|
|
{
|
|
echo "# ${tag}"
|
|
echo
|
|
if [ -n "${previous_tag}" ]; then
|
|
echo "## Changes since ${previous_tag}"
|
|
echo
|
|
git log --pretty=format:'- %s (%h)' "${previous_tag}..${tag}"
|
|
else
|
|
echo "## Changes"
|
|
echo
|
|
git log --pretty=format:'- %s (%h)' "${tag}"
|
|
fi
|
|
echo
|
|
} > RELEASE_NOTES.md
|
|
- name: Download release artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
path: release-artifacts
|
|
- name: Create GitHub release
|
|
uses: softprops/action-gh-release@v3
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
tag_name: ${{ github.ref_name }}
|
|
name: ${{ github.ref_name }}
|
|
body_path: RELEASE_NOTES.md
|
|
generate_release_notes: false
|
|
files: |
|
|
release-artifacts/r2flutter-debian-amd64/r2flutter_*_amd64.deb
|
|
release-artifacts/bindist-*/r2flutter-*.zip
|