Merge branch 'master' of github.com:yoavst/Graffiti #107
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and publish graffiti | |
on: | |
push: | |
branches: | |
- "master" | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
jobs: | |
free-disk-space: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/free-disk-space@main | |
with: | |
tool-cache: false | |
android: true | |
dotnet: true | |
haskell: true | |
large-packages: true | |
docker-images: true | |
swap-storage: true | |
check-server-python-compat: | |
runs-on: ubuntu-latest | |
needs: free-disk-space | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
- name: Install Vermin | |
run: python -m pip install vermin | |
- name: Check for python version violation | |
run: vermin --config-file server/vermin.ini --quiet --violations server/ | |
backend: | |
runs-on: ubuntu-latest | |
needs: check-server-python-compat | |
strategy: | |
matrix: | |
target: | |
- { name: jeb, type: pybunch } | |
- { name: intellij, type: java } | |
- { name: ghidra, type: java } | |
- { name: ida, type: pybunch } | |
- { name: vscode, type: typescript } | |
- { name: websites, type: typescript } | |
- { name: jadx, type: pack } | |
- { name: server, type: python } | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup NodeJS | |
uses: actions/setup-node@v4 | |
if: matrix.target.type == 'typescript' | |
- name: Setup JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: "temurin" | |
java-version: "17" | |
if: matrix.target.type == 'java' | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
gradle-version: 8.10.2 | |
if: matrix.target.type == 'java' | |
- uses: er28-0652/setup-ghidra@master | |
with: | |
version: "11.0.3" | |
if: matrix.target.name == 'ghidra' | |
- name: Configure | |
run: make init | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
if: matrix.target.type == 'pybunch' || matrix.target.type == 'python' | |
- name: Install pybunch | |
run: python -m pip install pybunch | |
if: matrix.target.type == 'pybunch' | |
- name: Build ${{ matrix.target.name }} | |
run: make ${{ matrix.target.name }} | |
- name: Upload Artifact | |
uses: actions/[email protected] | |
with: | |
name: Graffiti for ${{ matrix.target.name }} | |
path: out/* | |
frontend: | |
runs-on: ubuntu-latest | |
needs: backend | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Configure | |
run: make init | |
- name: Build web frontend | |
run: make web | |
- name: Upload Artifact | |
uses: actions/[email protected] | |
with: | |
name: Graffiti web frontend | |
path: out/* | |
- name: Download backends | |
uses: actions/download-artifact@v4 | |
with: | |
path: /tmp/artifacts | |
- name: Copy backends | |
run: find /tmp/artifacts -type f -exec cp -v {} out/ \; | |
- name: Pack web frontend with backends | |
run: make web-collect | |
- name: Upload Artifact | |
uses: actions/[email protected] | |
with: | |
name: Graffiti Web frontend with backends | |
path: out/*_frontend_web_with_deps.zip | |
publish: | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/master' && github.event_name == 'push' | |
needs: frontend | |
steps: | |
- name: Setup Pages | |
uses: actions/configure-pages@v5 | |
- name: Download web frontend | |
uses: actions/download-artifact@v4 | |
with: | |
path: /tmp | |
name: Graffiti Web frontend with backends | |
- name: Unzip web frotnend | |
run: mkdir /tmp/web && unzip /tmp/*_frontend_web_with_deps.zip -d /tmp/web | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: /tmp/web | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |