18 Commits

Author SHA1 Message Date
Vanessasaurus
882391869b Merge pull request #102 from vsoch/test-envar-files
Testing to see if envar files environment variables are set (or not)
2024-03-14 11:09:59 -06:00
Vanessasaurus
8f0f9ee92b Update pull-request.py 2024-03-11 17:27:24 -06:00
Vanessasaurus
0969c26295 Merge pull request #100 from vsoch/update-container-base
fix bug with docker build
2023-12-07 19:40:22 -07:00
vsoch
d2ea9c206b fix bug with docker build
the alpine image no longer allows installing to system python
the fix is to target a virtual environment python3.

Signed-off-by: vsoch <vsoch@users.noreply.github.com>
2023-12-07 19:35:49 -07:00
Vanessasaurus
81b48d94ab Add LICENSE 2023-09-21 12:20:03 -06:00
Vanessasaurus
f9e7f419d6 Merge pull request #94 from vsoch/check-for-branch
Check for PR branch
2023-01-11 12:39:17 -07:00
Vanessasaurus
dcba08c9c2 Check for PR branch
before using the API so we hopefully save a call.
2023-01-06 20:03:27 -07:00
Yoshihisa Mochihara
c8e84cea4c fix GITHUB_OUTPUT bug (#92)
* fix GITHUB_OUTPUT bug
* Update CHANGELOG.md
2022-11-23 14:02:13 -07:00
Vanessasaurus
50f22f6d14 Update/set output (#90)
* updating set-output to echo to $GITHUB_OUTPUT instead

Signed-off-by: vsoch <vsoch@users.noreply.github.com>
2022-10-25 21:00:21 -06:00
Yunqi(Alice)
d703f40f3a Update the list_pull_request 401 case (#89)
* Update the list_pull_request 401 case
Hi, I find this http request is also missing the 401 case.
* Update CHANGELOG.md
2022-09-28 10:03:05 -06:00
Vanessasaurus
415544869c Merge pull request #88 from ohenak/fix/ghe-get-401-error
[Chore] Provide token when getting 401 error
2022-09-22 03:59:00 -06:00
Kane Ho
667293445b [Chore] Provide token when getting 401 error
Issue #87

In GHE, token is necessary when querying the repo API,
When it fails, it returns 401 error. Will need to specify the token in
this case.
2022-09-21 23:44:03 -07:00
Felix Breidenstein
e64deeba68 Fix example in README (#85) 2022-03-18 08:44:13 -06:00
Vanessasaurus
58a078aed9 Update CHANGELOG.md 2022-02-03 06:00:46 -07:00
Sviatoslav Sydorenko
408336c607 Fix emitting LF-separated GHA environment vars (#84)
Fixes #83 (hopefully)
2022-02-03 05:59:59 -07:00
Vanessasaurus
d99aa3ed71 Adding quick option to be able to specify a GitHub enterprise url (#80)
* adding quick option to be able to specify a GitHub enterprise url
Signed-off-by: vsoch <vsoch@users.noreply.github.com>
* Use GITHUB_API_URL instead
Co-authored-by: Tobias <github@tobiasgabriel.de>

* Update README.md
* Update pull-request.py

Co-authored-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: Tobias <github@tobiasgabriel.de>
2021-10-02 22:40:48 -06:00
Vanessasaurus
a48b660567 Merge pull request #81 from vsoch/add/open-source-halloween-2021
adding open source halloween!
2021-10-02 18:26:20 -06:00
vsoch
4b09070b0a adding open source halloween!
Signed-off-by: vsoch <vsoch@users.noreply.github.com>
2021-10-02 18:25:26 -06:00
13 changed files with 171 additions and 144 deletions

View File

@@ -14,8 +14,12 @@ represented by the pull requests that fixed them. Critical items to know are:
Versions correspond with GitHub releases that can be referenced with @ using actions. Versions correspond with GitHub releases that can be referenced with @ using actions.
## [master](https://github.com/vsoch/pull-request-action/tree/master) (master) ## [master](https://github.com/vsoch/pull-request-action/tree/master) (master)
- bugfix of missing from branch with scheduled run (1.0.16) - alpine cannot install to system python anymore (1.1.0)
- forgot to add assignees (1.0.15) - bugfix of missing output values (1.0.23)
- output and environment variables for PR number and return codes (1.0.5) - bugfix of token handling if 401 error received (missing 401 case) (1.0.21)
- added support for reviewer (individual and team) assignments (1.0.4) - bugfix of writing to environment file (missing newline) (1.0.19)
- added support for maintainer can modify and assignees (1.0.3) - bugfix of missing from branch with scheduled run (1.0.16)
- forgot to add assignees (1.0.15)
- output and environment variables for PR number and return codes (1.0.5)
- added support for reviewer (individual and team) assignments (1.0.4)
- added support for maintainer can modify and assignees (1.0.3)

View File

@@ -7,9 +7,11 @@ LABEL "com.github.actions.description"="Create a pull request when a branch is c
LABEL "com.github.actions.icon"="activity" LABEL "com.github.actions.icon"="activity"
LABEL "com.github.actions.color"="yellow" LABEL "com.github.actions.color"="yellow"
RUN apk --no-cache add python3 py3-pip git bash && \ # Newer alpine we are not allowed to install to system python
pip3 install requests RUN apk --no-cache add python3 py3-pip py3-virtualenv git bash && \
python3 -m venv /opt/env && \
/opt/env/bin/pip3 install requests
COPY pull-request.py /pull-request.py COPY pull-request.py /pull-request.py
RUN chmod u+x /pull-request.py RUN chmod u+x /pull-request.py
ENTRYPOINT ["python3", "/pull-request.py"] ENTRYPOINT ["/opt/env/bin/python3", "/pull-request.py"]

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019-2023 Vanessa Sochat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -50,10 +50,10 @@ Unlike standard actions, this action just uses variables from the environment.
| PULL_REQUEST_ASSIGNEES | A list (string with spaces) of users to assign | false | unset | | PULL_REQUEST_ASSIGNEES | A list (string with spaces) of users to assign | false | unset |
| PULL_REQUEST_REVIEWERS | A list (string with spaces) of users to assign review | false | unset | | PULL_REQUEST_REVIEWERS | A list (string with spaces) of users to assign review | false | unset |
| PULL_REQUEST_TEAM_REVIEWERS | A list (string with spaces) of teams to assign review | false | unset | | PULL_REQUEST_TEAM_REVIEWERS | A list (string with spaces) of teams to assign review | false | unset |
| PASS_ON_ERROR | Instead of failing on an error response, pass | unset | | PASS_ON_ERROR | Instead of failing on an error response, pass | false | unset |
| PASS_IF_EXISTS | Instead of failing if the pull request already exists, pass | unset | | PASS_IF_EXISTS | Instead of failing if the pull request already exists, pass | false | unset |
| PULL_REQUEST_UPDATE | If the pull request already exists, update it | unset | | PULL_REQUEST_UPDATE | If the pull request already exists, update it | false | unset |
| PULL_REQUEST_STATE | If `PULL_REQUEST_UPDATE` is true, update to this state (open, closed) | open | | PULL_REQUEST_STATE | If `PULL_REQUEST_UPDATE` is true, update to this state (open, closed) | false |open |
For `PULL_REQUEST_DRAFT`, `PASS_ON_ERROR`, `PASS_IF_EXISTS`, and `MAINTAINER_CANT_MODIFY`, these are For `PULL_REQUEST_DRAFT`, `PASS_ON_ERROR`, `PASS_IF_EXISTS`, and `MAINTAINER_CANT_MODIFY`, these are
treated as environment booleans. If they are defined in the environment, they trigger the treated as environment booleans. If they are defined in the environment, they trigger the
@@ -100,7 +100,9 @@ The screenshot below shows the example in action to interact with outputs in sev
## Examples ## Examples
Example workflows are provided in [examples](examples), and please contribute any Example workflows are provided in [examples](examples), and please contribute any
examples that you might have to help other users! We will walk through a basic examples that you might have to help other users! You can get the same commit hashes
and commented tags if you use the [action-updater](https://github.com/vsoch/action-updater)
also maintained by @vsoch. We will walk through a basic
example here for a niche case. Let's say that we are opening a pull request on the release event. This would mean example here for a niche case. Let's say that we are opening a pull request on the release event. This would mean
that the payload's branch variable would be null. We would need to define `PULL_REQUEST_FROM`. How would that the payload's branch variable would be null. We would need to define `PULL_REQUEST_FROM`. How would
we do that? We can [set environment variables](https://github.com/actions/toolkit/blob/main/docs/commands.md#environment-files) for next steps. Here is an example: we do that? We can [set environment variables](https://github.com/actions/toolkit/blob/main/docs/commands.md#environment-files) for next steps. Here is an example:
@@ -119,7 +121,7 @@ jobs:
run: | run: |
# do custom parsing of your code / date to derive a branch from # do custom parsing of your code / date to derive a branch from
PR_BRANCH_FROM=release-v$(cat VERSION) PR_BRANCH_FROM=release-v$(cat VERSION)
export "PULL_REQUEST_FROM_BRANCH=${PR_BRANCH_FROM}" >> $GITHUB_ENV echo "PULL_REQUEST_FROM_BRANCH=${PR_BRANCH_FROM}" >> $GITHUB_ENV
- name: pull-request-action - name: pull-request-action
uses: vsoch/pull-request-action@master uses: vsoch/pull-request-action@master
env: env:

View File

@@ -2,16 +2,16 @@ name: Pull Request on Branch Push
on: on:
push: push:
branches-ignore: branches-ignore:
- devel - devel
jobs: jobs:
auto-pull-request: auto-pull-request:
name: PullRequestAction name: PullRequestAction
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: pull-request-action - name: pull-request-action
uses: vsoch/pull-request-action@master uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_PREFIX: "update/" BRANCH_PREFIX: update/
PULL_REQUEST_BRANCH: "master" PULL_REQUEST_BRANCH: master
PULL_REQUEST_ASSIGNEES: vsoch PULL_REQUEST_ASSIGNEES: vsoch

View File

@@ -1,24 +1,23 @@
name: derive-branch-from-environment name: derive-branch-from-environment
on: on:
schedule: schedule: -
# Weekly cron: 0 0 * * 0
- cron: 0 0 * * 0
jobs: jobs:
DoSomeUpdate: DoSomeUpdate:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v1 uses: actions/checkout@v3
- name: Install or Do Something to Change repository - name: Install or Do Something to Change repository
run: | run: |
echo "This is a new file." >> newfile.txt echo "This is a new file." >> newfile.txt
- name: Checkout New Branch - name: Checkout New Branch
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_AGAINST: "master" BRANCH_AGAINST: master
run: | run: |
printf "GitHub Actor: ${GITHUB_ACTOR}\n" printf "GitHub Actor: ${GITHUB_ACTOR}\n"
export BRANCH_FROM="update/newfile-$(date '+%Y-%m-%d')" export BRANCH_FROM="update/newfile-$(date '+%Y-%m-%d')"
@@ -43,7 +42,7 @@ jobs:
echo "PULL_REQUEST_FROM_BRANCH=${BRANCH_FROM}" >> $GITHUB_ENV echo "PULL_REQUEST_FROM_BRANCH=${BRANCH_FROM}" >> $GITHUB_ENV
- name: Open Pull Request - name: Open Pull Request
uses: vsoch/pull-request-action@master uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PULL_REQUEST_BRANCH: "master" PULL_REQUEST_BRANCH: master

View File

@@ -2,8 +2,8 @@ name: Hotfix Branch Pull Request
on: on:
push: push:
branches-ignore: branches-ignore:
- master - master
- production - production
# See https://github.com/vsoch/pull-request-action/issues/47#issuecomment-707109132 # See https://github.com/vsoch/pull-request-action/issues/47#issuecomment-707109132
@@ -12,44 +12,44 @@ jobs:
name: PullRequestAction name: PullRequestAction
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Generate branch name - name: Generate branch name
uses: actions/github-script@v3 uses: actions/github-script@v6
id: set-branch-name id: set-branch-name
with: with:
script: | script: |
const capitalize = (name) => name.charAt(0).toUpperCase() + name.slice(1); const capitalize = (name) => name.charAt(0).toUpperCase() + name.slice(1);
const emoji = context.payload.ref.startsWith("refs/heads/feature") const emoji = context.payload.ref.startsWith("refs/heads/feature")
? "✨ " ? "✨ "
: context.payload.ref.startsWith("refs/heads/hotfix") : context.payload.ref.startsWith("refs/heads/hotfix")
? "🚑 " ? "🚑 "
: ""; : "";
return `${emoji}${capitalize( return `${emoji}${capitalize(
context.payload.ref context.payload.ref
.replace("refs/heads/", "") .replace("refs/heads/", "")
.replace(/-/g, " ") .replace(/-/g, " ")
.replace("feature ", "") .replace("feature ", "")
.replace("hotfix ", "") .replace("hotfix ", "")
)}`; )}`;
result-encoding: string result-encoding: string
- name: Set branch name - name: Set branch name
run: echo "PULL_REQUEST_TITLE=${{steps.set-branch-name.outputs.result}}" >> $GITHUB_ENV run: echo "PULL_REQUEST_TITLE=${{steps.set-branch-name.outputs.result}}" >> $GITHUB_ENV
- name: Generate PR body - name: Generate PR body
uses: actions/github-script@v3 uses: actions/github-script@v6
id: set-pr-body id: set-pr-body
with: with:
script: | script: |
return `I'm opening this pull request for this branch, pushed by @${ return `I'm opening this pull request for this branch, pushed by @${
context.payload.head_commit.author.username context.payload.head_commit.author.username
} with ${context.payload.commits.length} commit${ } with ${context.payload.commits.length} commit${
context.payload.commits.length === 1 ? "" : "s" context.payload.commits.length === 1 ? "" : "s"
}.`; }.`;
result-encoding: string result-encoding: string
- name: Set PR body - name: Set PR body
run: echo "PULL_REQUEST_BODY=${{steps.set-pr-body.outputs.result}}" >> $GITHUB_ENV run: echo "PULL_REQUEST_BODY=${{steps.set-pr-body.outputs.result}}" >> $GITHUB_ENV
- name: pull-request-action - name: pull-request-action
uses: vsoch/pull-request-action@master uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_PREFIX: "hotfix-" BRANCH_PREFIX: hotfix-
PULL_REQUEST_BRANCH: "production" PULL_REQUEST_BRANCH: production
PULL_REQUEST_REVIEWERS: "AnandChowdhary" PULL_REQUEST_REVIEWERS: AnandChowdhary

View File

@@ -2,27 +2,27 @@ name: Pull Request on Branch Push
on: on:
push: push:
branches-ignore: branches-ignore:
- devel - devel
jobs: jobs:
auto-pull-request: auto-pull-request:
name: PullRequestAction name: PullRequestAction
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: pull-request-action - name: pull-request-action
id: pull_request id: pull_request
uses: vsoch/pull-request-action@master uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_PREFIX: "update/" BRANCH_PREFIX: update/
PULL_REQUEST_BRANCH: "master" PULL_REQUEST_BRANCH: master
PULL_REQUEST_REVIEWERS: vsoch PULL_REQUEST_REVIEWERS: vsoch
- name: Test outputs - name: Test outputs
env: env:
pull_request_number_output: ${{ steps.pull_request.outputs.pull_request_number }} pull_request_number_output: ${{ steps.pull_request.outputs.pull_request_number }}
pull_request_url_output: ${{ steps.pull_request.outputs.pull_request_url }} pull_request_url_output: ${{ steps.pull_request.outputs.pull_request_url }}
run: | run: |
echo "Pull request number from output: ${pull_request_number_output}" echo "Pull request number from output: ${pull_request_number_output}"
echo "Pull request url from output: ${pull_request_url_output}" echo "Pull request url from output: ${pull_request_url_output}"
echo "Pull request number from environment: ${PULL_REQUEST_NUMBER}" echo "Pull request number from environment: ${PULL_REQUEST_NUMBER}"
echo "Pull request url from environment: ${PULL_REQUEST_URL}" echo "Pull request url from environment: ${PULL_REQUEST_URL}"
echo "Another way to specify from output ${{ steps.pull_request.outputs.pull_request_number }}" echo "Another way to specify from output ${{ steps.pull_request.outputs.pull_request_number }}"

View File

@@ -2,17 +2,17 @@ name: Pull Request on Branch Push
on: on:
push: push:
branches-ignore: branches-ignore:
- staging - staging
- launchpad - launchpad
- production - production
jobs: jobs:
auto-pull-request: auto-pull-request:
name: PullRequestAction name: PullRequestAction
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: pull-request-action - name: pull-request-action
uses: vsoch/pull-request-action@master uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_PREFIX: "update/" BRANCH_PREFIX: update/
PULL_REQUEST_BRANCH: "master" PULL_REQUEST_BRANCH: master

View File

@@ -1,7 +1,7 @@
on: on:
release: release:
types: types:
- published - published
jobs: jobs:
persist-new-suite-yml: persist-new-suite-yml:
@@ -18,31 +18,27 @@ jobs:
version=$(echo "$tag_name" | sed 's/^v//') version=$(echo "$tag_name" | sed 's/^v//')
echo "Version: $version" echo "Version: $version"
echo "::set-output name=suite_version::${version}" echo "suite_version=${version}" >> $GITHUB_OUTPUT
echo "::set-output name=suite_update_branch::suite_${version}" echo "suite_update_branch=suite_${version}" >> $GITHUB_OUTPUT
id: data id: data
- name: Permanently save the new suite release - name: Permanently save the new suite release
run: | run: |
mkdir -p releases mkdir -p releases
new_suite_version_yml="releases/suite_${{ steps.data.outputs.suite_version }}.yml" new_suite_version_yml="releases/suite_${{ steps.data.outputs.suite_version }}.yml"
echo "Suite target file: $new_suite_version_yml" echo "Suite target file: $new_suite_version_yml"
cp suite.yml "${new_suite_version_yml}" cp suite.yml "${new_suite_version_yml}"
git add "${new_suite_version_yml}" git add "${new_suite_version_yml}"
git commit -m "Suite v${{ steps.data.outputs.suite_version }} auto-commit of new release files" git commit -m "Suite v${{ steps.data.outputs.suite_version }} auto-commit of new release files"
- name: Push files - name: Push files
run: | run: git push --force "https://${{ github.actor }}:${{secrets.GITHUB_TOKEN}}@github.com/${{ github.repository }}.git" "HEAD:${{ steps.data.outputs.suite_update_branch }}"
git push --force "https://${{ github.actor }}:${{secrets.GITHUB_TOKEN}}@github.com/${{ github.repository }}.git" "HEAD:${{ steps.data.outputs.suite_update_branch }}"
- name: Open a PR to the default branch - name: Open a PR to the default branch
uses: vsoch/pull-request-action@master uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PULL_REQUEST_FROM_BRANCH: "${{ steps.data.outputs.suite_update_branch }}" PULL_REQUEST_FROM_BRANCH: ${{ steps.data.outputs.suite_update_branch }}
PULL_REQUEST_BRANCH: master PULL_REQUEST_BRANCH: master
PULL_REQUEST_TITLE: "Action: Update suite release file for v${{ steps.data.outputs.suite_version }}" PULL_REQUEST_TITLE: 'Action: Update suite release file for v${{ steps.data.outputs.suite_version }}'
PULL_REQUEST_BODY: "Auto-generated PR!" PULL_REQUEST_BODY: Auto-generated PR!

View File

@@ -2,16 +2,16 @@ name: Pull Request on Branch Push
on: on:
push: push:
branches-ignore: branches-ignore:
- devel - devel
jobs: jobs:
auto-pull-request: auto-pull-request:
name: PullRequestAction name: PullRequestAction
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: pull-request-action - name: pull-request-action
uses: vsoch/pull-request-action@master uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_PREFIX: "update/" BRANCH_PREFIX: update/
PULL_REQUEST_BRANCH: "master" PULL_REQUEST_BRANCH: master
PULL_REQUEST_REVIEWERS: vsoch PULL_REQUEST_REVIEWERS: vsoch

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -69,17 +69,22 @@ def parse_into_list(values):
return [x.strip() for x in values.split(" ")] return [x.strip() for x in values.split(" ")]
def set_env(name, value): def set_env_and_output(name, value):
"""helper function to echo a key/value pair to the environement file """helper function to echo a key/value pair to the environement file
Parameters: Parameters:
name (str) : the name of the environment variable name (str) : the name of the environment variable
value (str) : the value to write to file value (str) : the value to write to file
""" """
environment_file_path = os.environ.get("GITHUB_ENV") for env_var in ("GITHUB_ENV", "GITHUB_OUTPUT"):
environment_file_path = os.environ.get(env_var)
if not environment_file_path:
print(f"Warning: {env_var} is unset, skipping.")
continue
print("Writing %s=%s to %s" % (name, value, env_var))
with open(environment_file_path, "a") as environment_file: with open(environment_file_path, "a") as environment_file:
environment_file.write("%s=%s" % (name, value)) environment_file.write("%s=%s\n" % (name, value))
def open_pull_request(title, body, target, source, is_draft=False, can_modify=True): def open_pull_request(title, body, target, source, is_draft=False, can_modify=True):
@@ -159,12 +164,9 @@ def set_pull_request_groups(response):
number = response.get("number") number = response.get("number")
html_url = response.get("html_url") html_url = response.get("html_url")
print("Number opened for PR is %s" % number) print("Number opened for PR is %s" % number)
set_env("PULL_REQUEST_NUMBER", number) set_env_and_output("PULL_REQUEST_NUMBER", number)
print("::set-output name=pull_request_number::%s" % number) set_env_and_output("PULL_REQUEST_RETURN_CODE", pull_request_return_code)
set_env("PULL_REQUEST_RETURN_CODE", pull_request_return_code) set_env_and_output("PULL_REQUEST_URL", html_url)
print("::set-output name=pull_request_return_code::%s" % pull_request_return_code)
set_env("PULL_REQUEST_URL", html_url)
print("::set-output name=pull_request_url::%s" % html_url)
def list_pull_requests(target, source): def list_pull_requests(target, source):
@@ -180,8 +182,8 @@ def list_pull_requests(target, source):
print("Params for checking if pull request exists: %s" % params) print("Params for checking if pull request exists: %s" % params)
response = requests.get(PULLS_URL, params=params) response = requests.get(PULLS_URL, params=params)
# Case 1: 404 might warrant needing a token # Case 1: 401, 404 might warrant needing a token
if response.status_code == 404: if response.status_code in [401, 404]:
response = requests.get(PULLS_URL, params=params, headers=HEADERS) response = requests.get(PULLS_URL, params=params, headers=HEADERS)
if response.status_code != 200: if response.status_code != 200:
abort_if_fail(response, "Unable to retrieve information about pull requests") abort_if_fail(response, "Unable to retrieve information about pull requests")
@@ -215,8 +217,7 @@ def add_assignees(entry, assignees):
print("::group::github assignees response") print("::group::github assignees response")
print(response.json()) print(response.json())
print("::endgroup::github assignees response") print("::endgroup::github assignees response")
set_env("ASSIGNEES_RETURN_CODE", assignees_return_code) set_env_and_output("ASSIGNEES_RETURN_CODE", assignees_return_code)
print("::set-output name=assignees_return_code::%s" % assignees_return_code)
def find_pull_request(listing, source): def find_pull_request(listing, source):
@@ -235,12 +236,11 @@ def find_pull_request(listing, source):
def find_default_branch(): def find_default_branch():
"""Find default branch for a repo (only called if branch not provided) """Find default branch for a repo (only called if branch not provided)"""
"""
response = requests.get(REPO_URL) response = requests.get(REPO_URL)
# Case 1: 404 might need a token # Case 1: 401, 404 might need a token
if response.status_code == 404: if response.status_code in [401, 404]:
response = requests.get(REPO_URL, headers=HEADERS) response = requests.get(REPO_URL, headers=HEADERS)
if response.status_code != 200: if response.status_code != 200:
abort_if_fail(response, "Unable to retrieve default branch") abort_if_fail(response, "Unable to retrieve default branch")
@@ -273,9 +273,7 @@ def add_reviewers(entry, reviewers, team_reviewers):
print("::group::github reviewers response") print("::group::github reviewers response")
print(response.json()) print(response.json())
print("::endgroup::github reviewers response") print("::endgroup::github reviewers response")
set_env("REVIEWERS_RETURN_CODE", reviewers_return_code) set_env_and_output("REVIEWERS_RETURN_CODE", reviewers_return_code)
print("::set-output name=reviewers_return_code::%s" % reviewers_return_code)
print("Add reviewers return code: %s" % reviewers_return_code)
################################################################################ ################################################################################
@@ -283,7 +281,9 @@ def add_reviewers(entry, reviewers, team_reviewers):
################################################################################ ################################################################################
API_VERSION = "v3" API_VERSION = "v3"
BASE = "https://api.github.com"
# Allow for a GitHub enterprise URL
BASE = os.environ.get("GITHUB_API_URL") or "https://api.github.com"
PR_TOKEN = os.environ.get("PULL_REQUEST_TOKEN") or get_envar("GITHUB_TOKEN") PR_TOKEN = os.environ.get("PULL_REQUEST_TOKEN") or get_envar("GITHUB_TOKEN")
PR_REPO = os.environ.get("PULL_REQUEST_REPOSITORY") or get_envar("GITHUB_REPOSITORY") PR_REPO = os.environ.get("PULL_REQUEST_REPOSITORY") or get_envar("GITHUB_REPOSITORY")
@@ -360,7 +360,10 @@ def main():
print("No branch prefix is set, all branches will be used.") print("No branch prefix is set, all branches will be used.")
# Default to project default branch if none provided # Default to project default branch if none provided
pull_request_branch = os.environ.get("PULL_REQUEST_BRANCH", find_default_branch()) pull_request_branch = os.environ.get("PULL_REQUEST_BRANCH")
if not pull_request_branch:
pull_request_branch = find_default_branch()
print("Pull requests will go to %s" % pull_request_branch) print("Pull requests will go to %s" % pull_request_branch)
# Pull request draft # Pull request draft