From dc059053c9d323a429234006e8b8c0fc52d2801a Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Sun, 25 Jan 2026 06:56:45 -0700 Subject: [PATCH] chore: Add take/untake workflow for issue self-assignment Adds a GitHub Actions workflow that allows contributors to self-assign issues by commenting "take" and unassign by commenting "untake". Co-Authored-By: Claude Opus 4.5 --- .github/workflows/take.yml | 55 +++++++++++++++++++ docs/source/contributor-guide/contributing.md | 2 + 2 files changed, 57 insertions(+) create mode 100644 .github/workflows/take.yml diff --git a/.github/workflows/take.yml b/.github/workflows/take.yml new file mode 100644 index 0000000000..fad5065c92 --- /dev/null +++ b/.github/workflows/take.yml @@ -0,0 +1,55 @@ +# 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. + +name: Assign/unassign the issue via `take` or `untake` comment +on: + issue_comment: + types: created + +permissions: + issues: write + +jobs: + issue_assign: + runs-on: ubuntu-latest + if: (!github.event.issue.pull_request) && (github.event.comment.body == 'take' || github.event.comment.body == 'untake') + concurrency: + group: ${{ github.actor }}-issue-assign + steps: + - name: Take or untake issue + env: + COMMENT_BODY: ${{ github.event.comment.body }} + ISSUE_NUMBER: ${{ github.event.issue.number }} + USER_LOGIN: ${{ github.event.comment.user.login }} + REPO: ${{ github.repository }} + TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if [ "$COMMENT_BODY" == "take" ] + then + CODE=$(curl -H "Authorization: token $TOKEN" -LI https://api.github.com/repos/$REPO/issues/$ISSUE_NUMBER/assignees/$USER_LOGIN -o /dev/null -w '%{http_code}\n' -s) + if [ "$CODE" -eq "204" ] + then + echo "Assigning issue $ISSUE_NUMBER to $USER_LOGIN" + curl -X POST -H "Authorization: token $TOKEN" -H "Content-Type: application/json" -d "{\"assignees\": [\"$USER_LOGIN\"]}" https://api.github.com/repos/$REPO/issues/$ISSUE_NUMBER/assignees + else + echo "Cannot assign issue $ISSUE_NUMBER to $USER_LOGIN" + fi + elif [ "$COMMENT_BODY" == "untake" ] + then + echo "Unassigning issue $ISSUE_NUMBER from $USER_LOGIN" + curl -X DELETE -H "Authorization: token $TOKEN" -H "Content-Type: application/json" -d "{\"assignees\": [\"$USER_LOGIN\"]}" https://api.github.com/repos/$REPO/issues/$ISSUE_NUMBER/assignees + fi diff --git a/docs/source/contributor-guide/contributing.md b/docs/source/contributor-guide/contributing.md index 3a983f78d1..e3a4d00793 100644 --- a/docs/source/contributor-guide/contributing.md +++ b/docs/source/contributor-guide/contributing.md @@ -32,6 +32,8 @@ Here are some areas where you can help: We maintain a list of good first issues in GitHub [here](https://github.com/apache/datafusion-comet/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22). We also have a [roadmap](roadmap.md). +To assign yourself an issue, comment `take` on the issue. To unassign yourself, comment `untake`. + ## Reporting issues We use [GitHub issues](https://github.com/apache/datafusion-comet/issues) for bug reports and feature requests.