♻️ 使用 anyio memory object stream 重构消息发送逻辑 #2636
This file contains hidden or 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: test-build | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - next | |
| paths: | |
| - admin-frontend/** | |
| - docker/** | |
| - nonebot_bison/** | |
| - tests/** | |
| - pyproject.toml | |
| - uv.lock | |
| - docker.env.prod | |
| - .github/** | |
| pull_request: | |
| paths: | |
| - admin-frontend/** | |
| - docker/** | |
| - nonebot_bison/** | |
| - tests/** | |
| - pyproject.toml | |
| - uv.lock | |
| - docker.env.prod | |
| - .github/** | |
| types: | |
| - opened | |
| - synchronize | |
| - reopened | |
| # 以上为默认情况 | |
| - labeled | |
| - unlabeled | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build-frontend: | |
| name: Build Frontend | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build Frontend | |
| uses: ./.github/actions/build-frontend | |
| - name: Upload dist | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: frontend | |
| path: ./admin-frontend/build/ | |
| test: | |
| name: Smoke-test Coverage | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'all-test') }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12"] | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| fail-fast: false | |
| env: | |
| OS: ${{ matrix.os }} | |
| PYTHON_VERSION: ${{ matrix.python-version }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Python environment | |
| uses: ./.github/actions/setup-python | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| install-deps: "true" | |
| install-playwright: "true" | |
| - name: Run Pytest | |
| run: uv run pytest --cov-report xml --cov=./nonebot_bison -k 'not compare and not render' -n auto | |
| - name: Upload coverage report | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| flags: smoke-test | |
| env_vars: OS,PYTHON_VERSION | |
| test-all: | |
| name: All-test Coverage | |
| if: ${{ contains(github.event.pull_request.labels.*.name, 'all-test') }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12"] | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| fail-fast: false | |
| env: | |
| OS: ${{ matrix.os }} | |
| PYTHON_VERSION: ${{ matrix.python-version }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Python environment | |
| uses: ./.github/actions/setup-python | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| install-deps: "true" | |
| install-playwright: "true" | |
| - name: Run Pytest | |
| run: uv run pytest --cov-report xml --cov=./nonebot_bison -k 'not compare' -n auto | |
| - name: Upload coverage report | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| flags: all-test | |
| env_vars: OS,PYTHON_VERSION | |
| docker-main: | |
| name: Docker main | |
| runs-on: ubuntu-latest | |
| needs: [build-frontend, test] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Test Build | |
| uses: docker/build-push-action@v6 | |
| if: github.event_name == 'pull_request' | |
| with: | |
| context: . | |
| file: ./docker/Dockerfile | |
| push: false | |
| load: true | |
| tags: felinae98/nonebot-bison:dummy | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| - name: Test image | |
| uses: ./.github/actions/test-docker | |
| if: github.event_name == 'pull_request' | |
| with: | |
| docker-image-name: felinae98/nonebot-bison:dummy | |
| wait-time: 10 | |
| - name: Login to DockerHub | |
| if: github.event_name != 'pull_request' | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Git Branch Name | |
| id: git-branch-name | |
| uses: EthanSK/git-branch-name-action@v1 | |
| - name: Build and push | |
| uses: docker/build-push-action@v6 | |
| if: github.event_name != 'pull_request' | |
| with: | |
| context: . | |
| file: ./docker/Dockerfile | |
| push: true | |
| tags: felinae98/nonebot-bison:${{ env.GIT_BRANCH_NAME }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| docker-main-nobrowser: | |
| name: Docker main without browser | |
| runs-on: ubuntu-latest | |
| needs: [build-frontend, test] | |
| if: github.event_name != 'pull_request' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Git Branch Name | |
| id: git-branch-name | |
| uses: EthanSK/git-branch-name-action@v1 | |
| - name: Login to DockerHub | |
| if: github.event_name != 'pull_request' | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Build and push | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: ./docker/Dockerfile_without_browser | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: felinae98/nonebot-bison:${{ env.GIT_BRANCH_NAME }}-nobrowser | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max |