mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-12-18 17:10:29 +03:00
c3dc46a307
This is necessary for glob.glob() with the root_dir argument
126 lines
4.6 KiB
YAML
126 lines
4.6 KiB
YAML
name: 'PR Testing'
|
|
|
|
on:
|
|
pull_request_target:
|
|
branches: [ master ]
|
|
|
|
jobs:
|
|
check-bridges:
|
|
name: Check if bridges were changed
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
BRIDGES: ${{ steps.check1.outputs.BRIDGES }}
|
|
steps:
|
|
- name: Check number of bridges
|
|
id: check1
|
|
run: |
|
|
PR=${{github.event.number}};
|
|
wget https://patch-diff.githubusercontent.com/raw/$GITHUB_REPOSITORY/pull/$PR.patch;
|
|
bridgeamount=$(cat $PR.patch | grep "\bbridges/[A-Za-z0-9]*Bridge\.php\b" | sed "s=.*\bbridges/\([A-Za-z0-9]*\)Bridge\.php\b.*=\1=g" | sort | uniq | wc -l);
|
|
echo "BRIDGES=$bridgeamount" >> "$GITHUB_OUTPUT"
|
|
test-pr:
|
|
name: Generate HTML
|
|
runs-on: ubuntu-latest
|
|
needs: check-bridges
|
|
if: needs.check-bridges.outputs.BRIDGES > 0
|
|
env:
|
|
PYTHONUNBUFFERED: 1
|
|
# Needs additional permissions https://github.com/actions/first-interaction/issues/10#issuecomment-1041402989
|
|
steps:
|
|
- name: Check out self
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{github.event.pull_request.head.ref}}
|
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
- name: Check out rss-bridge
|
|
run: |
|
|
PR=${{github.event.number}};
|
|
wget -O requirements.txt https://raw.githubusercontent.com/$GITHUB_REPOSITORY/${{ github.event.pull_request.base.ref }}/.github/prtester-requirements.txt;
|
|
wget https://raw.githubusercontent.com/$GITHUB_REPOSITORY/${{ github.event.pull_request.base.ref }}/.github/prtester.py;
|
|
wget https://patch-diff.githubusercontent.com/raw/$GITHUB_REPOSITORY/pull/$PR.patch;
|
|
touch DEBUG;
|
|
cat $PR.patch | grep "\bbridges/[A-Za-z0-9]*Bridge\.php\b" | sed "s=.*\bbridges/\([A-Za-z0-9]*\)Bridge\.php\b.*=\1=g" | sort | uniq > whitelist.txt
|
|
- name: Start Docker - Current
|
|
run: |
|
|
docker run -d -v $GITHUB_WORKSPACE/whitelist.txt:/app/whitelist.txt -v $GITHUB_WORKSPACE/DEBUG:/app/DEBUG -p 3000:80 ghcr.io/rss-bridge/rss-bridge:latest
|
|
- name: Start Docker - PR
|
|
run: |
|
|
docker build -t prbuild .;
|
|
docker run -d -v $GITHUB_WORKSPACE/whitelist.txt:/app/whitelist.txt -v $GITHUB_WORKSPACE/DEBUG:/app/DEBUG -p 3001:80 prbuild
|
|
- name: Setup python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.13'
|
|
cache: 'pip'
|
|
- name: Install requirements
|
|
run: |
|
|
cd $GITHUB_WORKSPACE
|
|
pip install -r requirements.txt
|
|
- name: Run bridge tests
|
|
id: testrun
|
|
run: |
|
|
mkdir results;
|
|
python prtester.py;
|
|
body="$(cat comment.txt)";
|
|
body="${body//'%'/'%25'}";
|
|
body="${body//$'\n'/'%0A'}";
|
|
body="${body//$'\r'/'%0D'}";
|
|
echo "bodylength=${#body}" >> $GITHUB_OUTPUT
|
|
env:
|
|
PR: ${{ github.event.number }}
|
|
- name: Upload generated tests
|
|
uses: actions/upload-artifact@v4
|
|
id: upload-generated-tests
|
|
with:
|
|
name: tests
|
|
path: '*.html'
|
|
- name: Find Comment
|
|
if: ${{ steps.testrun.outputs.bodylength > 130 }}
|
|
uses: peter-evans/find-comment@v3
|
|
id: fc
|
|
with:
|
|
issue-number: ${{ github.event.pull_request.number }}
|
|
comment-author: 'github-actions[bot]'
|
|
body-includes: Pull request artifacts
|
|
- name: Create or update comment
|
|
if: ${{ steps.testrun.outputs.bodylength > 130 }}
|
|
uses: peter-evans/create-or-update-comment@v4
|
|
with:
|
|
comment-id: ${{ steps.fc.outputs.comment-id }}
|
|
issue-number: ${{ github.event.pull_request.number }}
|
|
body-file: comment.txt
|
|
edit-mode: replace
|
|
upload_tests:
|
|
name: Upload tests
|
|
runs-on: ubuntu-latest
|
|
needs: test-pr
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: 'RSS-Bridge/rss-bridge-tests'
|
|
ref: 'main'
|
|
token: ${{ secrets.RSSTESTER_ACTION }}
|
|
|
|
- name: Setup git config
|
|
run: |
|
|
git config --global user.name "GitHub Actions"
|
|
git config --global user.email "<>"
|
|
|
|
- name: Download tests
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: tests
|
|
|
|
- name: Move tests
|
|
run: |
|
|
cd prs
|
|
mkdir -p ${{github.event.number}}
|
|
cd ${{github.event.number}}
|
|
mv -f $GITHUB_WORKSPACE/*.html .
|
|
|
|
- name: Commit and push generated tests
|
|
run: |
|
|
export COMMIT_MESSAGE="Added tests for PR ${{github.event.number}}"
|
|
git add .
|
|
git commit -m "$COMMIT_MESSAGE"
|
|
git push
|