Files
ysoserial/.github/workflows/test.yml
T
2022-03-24 22:14:16 -07:00

104 lines
2.9 KiB
YAML

# https://michaelheap.com/dynamic-matrix-generation-github-actions/
name: test
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: which node && node --version && env
- run: docker run --rm vulhub/java:7u21-jdk java -version
- if: ${{ env.ACT }} # act workaround
run: sudo chown -R runner:runner /var/run/act
- uses: actions/checkout@v2
- if: ${{ env.ACT }} # act workaround
run: sudo chown -R runner:runner .
- name: Set up JDK 1.8
uses: actions/setup-java@v2
with:
java-version: 8
distribution: adopt
- if: ${{ !env.ACT }} # use -r with act
uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- run: mvn -B clean package -DskipTests
- uses: actions/upload-artifact@v3
with:
name: jar
path: target/ysoserial-*-all.jar
- uses: actions/upload-artifact@v3
with:
name: results
path: .github/workflows/results.py
set-matrix:
runs-on: ubuntu-latest
container: dwdraju/alpine-curl-jq
steps:
- id: get-versions
# TODO paging
run: echo "::set-output name=versions::$(curl -s https://hub.docker.com/v2/repositories/vulhub/java/tags/?page_size=100 | jq -rc [.results[].name])"
outputs:
versions: ${{ steps.get-versions.outputs.versions }}
run-java:
needs:
- set-matrix
- build
strategy:
matrix:
# version: ${{ fromJson(needs.set-matrix.outputs.versions) }} # broken in act
version:
- 7u21-jdk 7u25-jdk
- 7u40-jdk
runs-on: ubuntu-latest
# container:
# image: vulhub/java:${{ matrix.version }}
steps:
- uses: actions/download-artifact@v3
with:
name: jar
path: jar
# - run: java -cp jar/ysoserial-*-all.jar -DforceTests=true ysoserial.test.payloads.PayloadsTest | tee > out.txt
- run: pwd
- run: for v in ${{ matrix.version }}; do docker run --rm -v $(pwd):/app vulhub/java:$v java -cp '/app/jar/ysoserial-*-all.jar' -DforceTests=true ysoserial.test.payloads.PayloadsTest; done | tee > out.txt
- uses: actions/upload-artifact@v3
with:
name: out-${{ matrix.version }}
path: out.txt
analyze:
needs: run-java
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
path: artifacts
- run: cat artifacts/out*/*.txt > out.txt
- run: pip install pytablewriter
- run: cat out.txt | python artifacts/results/results.py > matrix.md
- uses: actions/upload-artifact@v3
with:
name: out
path: out.txt
- uses: actions/upload-artifact@v3
with:
name: matrix
path: matrix.md