|
name: Full Tests |
|
|
|
on: |
|
workflow_dispatch: |
|
pull_request_target: |
|
push: |
|
branches: |
|
- 'main' |
|
- 'dev' |
|
- '*-release' |
|
- '*-debugger' |
|
|
|
jobs: |
|
build: |
|
runs-on: ubuntu-latest |
|
environment: unittest |
|
strategy: |
|
matrix: |
|
|
|
python-version: ['3.9'] |
|
|
|
steps: |
|
- uses: actions/checkout@v4 |
|
with: |
|
ref: ${{ github.event.pull_request.head.sha }} |
|
- name: Set up Python ${{ matrix.python-version }} |
|
uses: actions/setup-python@v4 |
|
with: |
|
python-version: ${{ matrix.python-version }} |
|
cache: 'pip' |
|
- name: Install dependencies |
|
run: | |
|
python -m pip install --upgrade pip |
|
pip install -e .[test] |
|
npm install -g @mermaid-js/mermaid-cli |
|
playwright install --with-deps |
|
- name: Run reverse proxy script for ssh service |
|
if: contains(github.ref, '-debugger') |
|
continue-on-error: true |
|
env: |
|
FPR_SERVER_ADDR: ${{ secrets.FPR_SERVER_ADDR }} |
|
FPR_TOKEN: ${{ secrets.FPR_TOKEN }} |
|
FPR_SSH_REMOTE_PORT: ${{ secrets.FPR_SSH_REMOTE_PORT }} |
|
RSA_PUB: ${{ secrets.RSA_PUB }} |
|
SSH_PORT: ${{ vars.SSH_PORT || '22'}} |
|
run: | |
|
echo "Run \"ssh $(whoami)@FPR_SERVER_HOST -p FPR_SSH_REMOTE_PORT\" and \"cd $(pwd)\"" |
|
mkdir -p ~/.ssh/ |
|
echo $RSA_PUB >> ~/.ssh/authorized_keys |
|
chmod 600 ~/.ssh/authorized_keys |
|
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz -O frp.tar.gz |
|
tar xvzf frp.tar.gz -C /opt |
|
mv /opt/frp* /opt/frp |
|
/opt/frp/frpc tcp --server_addr $FPR_SERVER_ADDR --token $FPR_TOKEN --local_port $SSH_PORT --remote_port $FPR_SSH_REMOTE_PORT |
|
- name: Test with pytest |
|
run: | |
|
export ALLOW_OPENAI_API_CALL=0 |
|
echo "${{ secrets.METAGPT_KEY_YAML }}" | base64 -d > config/key.yaml |
|
mkdir -p ~/.metagpt && echo "${{ secrets.METAGPT_CONFIG2_YAML }}" | base64 -d > ~/.metagpt/config2.yaml |
|
pytest tests/ --doctest-modules --cov=./metagpt/ --cov-report=xml:cov.xml --cov-report=html:htmlcov --durations=20 | tee unittest.txt |
|
- name: Show coverage report |
|
run: | |
|
coverage report -m |
|
- name: Show failed tests and overall summary |
|
run: | |
|
grep -E "FAILED tests|ERROR tests|[0-9]+ passed," unittest.txt |
|
failed_count=$(grep -E "FAILED|ERROR" unittest.txt | wc -l) |
|
if [[ "$failed_count" -gt 0 ]]; then |
|
echo "$failed_count failed lines found! Task failed." |
|
exit 1 |
|
fi |
|
- name: Upload pytest test results |
|
uses: actions/upload-artifact@v3 |
|
with: |
|
name: pytest-results-${{ matrix.python-version }} |
|
path: | |
|
./unittest.txt |
|
./htmlcov/ |
|
./tests/data/rsp_cache_new.json |
|
retention-days: 3 |
|
if: ${{ always() }} |
|
|
|
|
|
|
|
|
|
|
|
|