diff --git a/.github/actions/assign.mjs b/.github/actions/assign.mjs new file mode 100644 index 000000000000..d08aa21ec8a4 --- /dev/null +++ b/.github/actions/assign.mjs @@ -0,0 +1,27 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import { Octokit } from "@octokit/action"; + +const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); + +new Octokit().rest.issues.addAssignees({ + owner, + repo, + issue_number: process.env.ISSUE_NUMBER, + assignees: [process.env.ASSIGNEE], +}); diff --git a/.github/workflows/take.yml b/.github/workflows/take.yml index 86dc190add1d..4985e151d43b 100644 --- a/.github/workflows/take.yml +++ b/.github/workflows/take.yml @@ -25,17 +25,16 @@ permissions: jobs: issue_assign: - runs-on: ubuntu-latest if: (!github.event.issue.pull_request) && github.event.comment.body == 'take' - concurrency: - group: ${{ github.actor }}-issue-assign + runs-on: ubuntu-latest steps: - - run: | - CODE=$(curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -LI https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/assignees/${{ github.event.comment.user.login }} -o /dev/null -w '%{http_code}\n' -s) - if [ "$CODE" -eq "204" ] - then - echo "Assigning issue ${{ github.event.issue.number }} to ${{ github.event.comment.user.login }}" - curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -d '{"assignees": ["${{ github.event.comment.user.login }}"]}' https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/assignees - else - echo "Cannot assign issue ${{ github.event.issue.number }} to ${{ github.event.comment.user.login }}" - fi \ No newline at end of file + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + - run: npm install @octokit/action + - run: node .github/actions/assign.mjs + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ISSUE_NUMBER: ${{ github.event.issue.number }} + ASSIGNEE: ${{ github.event.comment.user.login }}