Add interoperability test suite to CI
This commit is contained in:
parent
503727334c
commit
b7193f64e4
5 changed files with 224 additions and 0 deletions
125
.github/workflows/sop-test-suite.yml
vendored
Normal file
125
.github/workflows/sop-test-suite.yml
vendored
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
name: SOP interoperability test suite
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
|
||||
build-gosop:
|
||||
name: Build gosop from branch
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Build gosop from branch
|
||||
uses: ./.github/actions/build-gosop
|
||||
with:
|
||||
binary-location: ./gosop-${{ github.sha }}
|
||||
# Upload as artifact
|
||||
- name: Upload gosop artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: gosop-${{ github.sha }}
|
||||
path: ./gosop-${{ github.sha }}
|
||||
|
||||
build-gosop-main:
|
||||
name: Build gosop from main
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Build gosop from branch
|
||||
uses: ./.github/actions/build-gosop
|
||||
with:
|
||||
gopenpgp-ref: main
|
||||
binary-location: ./gosop-main
|
||||
# Upload as artifact
|
||||
- name: Upload gosop-main artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: gosop-main
|
||||
path: ./gosop-main
|
||||
|
||||
|
||||
test-suite:
|
||||
name: Run interoperability test suite
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ghcr.io/protonmail/openpgp-interop-test-docker:pmfork
|
||||
credentials:
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.github_token }}
|
||||
needs:
|
||||
- build-gosop
|
||||
- build-gosop-main
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
# Fetch gosop from main
|
||||
- name: Download gosop-main
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: gosop-main
|
||||
# Test gosop-main
|
||||
- name: Make gosop-main executable
|
||||
run: chmod +x gosop-main
|
||||
- name: Print gosop-main version
|
||||
run: ./gosop-main version --extended
|
||||
# Fetch gosop from branch
|
||||
- name: Download gosop-branch
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: gosop-${{ github.sha }}
|
||||
- name: Rename gosop-branch
|
||||
run: mv gosop-${{ github.sha }} gosop-branch
|
||||
# Test gosop-branch
|
||||
- name: Make gosop-branch executable
|
||||
run: chmod +x gosop-branch
|
||||
- name: Print gosop-branch version
|
||||
run: ./gosop-branch version --extended
|
||||
# Run test suite
|
||||
- name: Prepare test configuration
|
||||
run: ./.github/test-suite/prepare_config.sh $CONFIG_TEMPLATE $CONFIG_OUTPUT $GITHUB_WORKSPACE/gosop-branch $GITHUB_WORKSPACE/gosop-main
|
||||
env:
|
||||
CONFIG_TEMPLATE: .github/test-suite/config.json.template
|
||||
CONFIG_OUTPUT: .github/test-suite/config.json
|
||||
- name: Display configuration
|
||||
run: cat .github/test-suite/config.json
|
||||
- name: Run interoperability test suite
|
||||
run: cd $TEST_SUITE_DIR && $TEST_SUITE --config $GITHUB_WORKSPACE/$CONFIG --json-out $GITHUB_WORKSPACE/$RESULTS_JSON --html-out $GITHUB_WORKSPACE/$RESULTS_HTML
|
||||
env:
|
||||
CONFIG: .github/test-suite/config.json
|
||||
RESULTS_JSON: .github/test-suite/test-suite-results.json
|
||||
RESULTS_HTML: .github/test-suite/test-suite-results.html
|
||||
# Upload results
|
||||
- name: Upload test results json artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: test-suite-results.json
|
||||
path: .github/test-suite/test-suite-results.json
|
||||
- name: Upload test results html artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: test-suite-results.html
|
||||
path: .github/test-suite/test-suite-results.html
|
||||
|
||||
compare-with-main:
|
||||
name: Compare with main
|
||||
runs-on: ubuntu-latest
|
||||
needs: test-suite
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Download test results json artifact
|
||||
id: download-test-results
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: test-suite-results.json
|
||||
- name: Compare with baseline
|
||||
uses: ProtonMail/openpgp-interop-test-analyzer@v1
|
||||
with:
|
||||
results: ${{ steps.download-test-results.outputs.download-path }}/test-suite-results.json
|
||||
output: baseline-comparison.json
|
||||
baseline: gosop-main
|
||||
target: gosop-branch
|
||||
Loading…
Add table
Add a link
Reference in a new issue