name: NoneFlow on: issues: types: [opened, reopened, edited] pull_request_target: types: [closed] issue_comment: types: [created] pull_request_review: types: [submitted] concurrency: group: ${{ github.workflow }}-${{ github.event.issue.number || github.run_id }} cancel-in-progress: false jobs: check: runs-on: ubuntu-latest name: check # do not run on forked PRs, do not run on not related issues, do not run on pr comments if: | !( ( github.event.pull_request && ( github.event.pull_request.head.repo.fork || !( contains(github.event.pull_request.labels.*.name, 'Plugin') || contains(github.event.pull_request.labels.*.name, 'Adapter') || contains(github.event.pull_request.labels.*.name, 'Bot') ) ) ) || ( github.event_name == 'issue_comment' && github.event.issue.pull_request ) ) steps: - run: echo "Check passed" reaction: runs-on: ubuntu-latest name: reaction needs: check if: | ( github.event_name == 'issue_comment' && github.event.action == 'created' ) || ( github.event_name == 'issues' && github.event.action == 'opened' ) steps: - name: Generate token id: generate-token uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_KEY }} - name: Reaction on issue if: github.event_name == 'issues' run: | gh api --method POST /repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/reactions -f "content=rocket" env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} - name: Reaction on issue comment if: github.event_name == 'issue_comment' run: | gh api --method POST /repos/${{ github.repository }}/issues/comments/${{ github.event.comment.id }}/reactions -f "content=rocket" env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} plugin_test: runs-on: ubuntu-latest name: nonebot2 plugin test needs: check permissions: issues: read outputs: result: ${{ steps.plugin-test.outputs.RESULT }} output: ${{ steps.plugin-test.outputs.OUTPUT }} metadata: ${{ steps.plugin-test.outputs.METADATA }} steps: - name: Install Poetry if: ${{ !startsWith(github.event_name, 'pull_request') }} run: pipx install poetry - name: Setup Python uses: actions/setup-python@v5 with: python-version: "3.x" - name: Test Plugin id: plugin-test run: | curl -sSL https://github.com/nonebot/noneflow/releases/latest/download/plugin_test.py | python - noneflow: runs-on: ubuntu-latest name: noneflow needs: plugin_test steps: - name: Generate token id: generate-token uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_KEY }} - name: Checkout Code uses: actions/checkout@v4 with: token: ${{ steps.generate-token.outputs.token }} - name: Cache pre-commit hooks uses: actions/cache@v4 with: path: .cache/.pre-commit key: noneflow-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }} - name: NoneFlow uses: docker://ghcr.io/nonebot/noneflow:latest with: config: > { "base": "master", "plugin_path": "assets/plugins.json", "bot_path": "assets/bots.json", "adapter_path": "assets/adapters.json" } env: PLUGIN_TEST_RESULT: ${{ needs.plugin_test.outputs.result }} PLUGIN_TEST_OUTPUT: ${{ needs.plugin_test.outputs.output }} PLUGIN_TEST_METADATA: ${{ needs.plugin_test.outputs.metadata }} APP_ID: ${{ secrets.APP_ID }} PRIVATE_KEY: ${{ secrets.APP_KEY }} PRE_COMMIT_HOME: /github/workspace/.cache/.pre-commit - name: Fix permission run: sudo chown -R $(whoami):$(id -ng) .cache/.pre-commit