From 50f22f6d146226ee6b73b7a001f26a3d4579f360 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Tue, 25 Oct 2022 21:00:21 -0600 Subject: [PATCH] Update/set output (#90) * updating set-output to echo to $GITHUB_OUTPUT instead Signed-off-by: vsoch --- README.md | 4 +- examples/assignees-example.yml | 16 +++--- examples/branch-from-environment.yml | 15 +++-- examples/custom-body-example.yml | 86 ++++++++++++++-------------- examples/outputs-example.yml | 38 ++++++------ examples/push-example.yml | 18 +++--- examples/release-example.yml | 20 +++---- examples/reviewers-example.yml | 16 +++--- pull-request.py | 10 ++-- 9 files changed, 110 insertions(+), 113 deletions(-) diff --git a/README.md b/README.md index a149912..6cb99fb 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,9 @@ The screenshot below shows the example in action to interact with outputs in sev ## Examples 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 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: diff --git a/examples/assignees-example.yml b/examples/assignees-example.yml index 13136e4..f38ff67 100644 --- a/examples/assignees-example.yml +++ b/examples/assignees-example.yml @@ -2,16 +2,16 @@ name: Pull Request on Branch Push on: push: branches-ignore: - - devel + - devel jobs: auto-pull-request: name: PullRequestAction runs-on: ubuntu-latest steps: - - name: pull-request-action - uses: vsoch/pull-request-action@master - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH_PREFIX: "update/" - PULL_REQUEST_BRANCH: "master" - PULL_REQUEST_ASSIGNEES: vsoch + - name: pull-request-action + uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH_PREFIX: update/ + PULL_REQUEST_BRANCH: master + PULL_REQUEST_ASSIGNEES: vsoch diff --git a/examples/branch-from-environment.yml b/examples/branch-from-environment.yml index 07bd791..23c7ec4 100644 --- a/examples/branch-from-environment.yml +++ b/examples/branch-from-environment.yml @@ -1,24 +1,23 @@ name: derive-branch-from-environment on: - schedule: - # Weekly - - cron: 0 0 * * 0 + schedule: - + cron: 0 0 * * 0 jobs: DoSomeUpdate: runs-on: ubuntu-latest steps: - name: Checkout Repository - uses: actions/checkout@v1 + uses: actions/checkout@v3 - name: Install or Do Something to Change repository run: | - echo "This is a new file." >> newfile.txt + echo "This is a new file." >> newfile.txt - name: Checkout New Branch env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH_AGAINST: "master" + BRANCH_AGAINST: master run: | printf "GitHub Actor: ${GITHUB_ACTOR}\n" export BRANCH_FROM="update/newfile-$(date '+%Y-%m-%d')" @@ -43,7 +42,7 @@ jobs: echo "PULL_REQUEST_FROM_BRANCH=${BRANCH_FROM}" >> $GITHUB_ENV - name: Open Pull Request - uses: vsoch/pull-request-action@master + uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - PULL_REQUEST_BRANCH: "master" + PULL_REQUEST_BRANCH: master diff --git a/examples/custom-body-example.yml b/examples/custom-body-example.yml index 918a4f8..7002c4c 100644 --- a/examples/custom-body-example.yml +++ b/examples/custom-body-example.yml @@ -2,8 +2,8 @@ name: Hotfix Branch Pull Request on: push: branches-ignore: - - master - - production + - master + - production # See https://github.com/vsoch/pull-request-action/issues/47#issuecomment-707109132 @@ -12,44 +12,44 @@ jobs: name: PullRequestAction runs-on: ubuntu-latest steps: - - name: Generate branch name - uses: actions/github-script@v3 - id: set-branch-name - with: - script: | - const capitalize = (name) => name.charAt(0).toUpperCase() + name.slice(1); - const emoji = context.payload.ref.startsWith("refs/heads/feature") - ? "✨ " - : context.payload.ref.startsWith("refs/heads/hotfix") - ? "🚑 " - : ""; - return `${emoji}${capitalize( - context.payload.ref - .replace("refs/heads/", "") - .replace(/-/g, " ") - .replace("feature ", "") - .replace("hotfix ", "") - )}`; - result-encoding: string - - name: Set branch name - run: echo "PULL_REQUEST_TITLE=${{steps.set-branch-name.outputs.result}}" >> $GITHUB_ENV - - name: Generate PR body - uses: actions/github-script@v3 - id: set-pr-body - with: - script: | - return `I'm opening this pull request for this branch, pushed by @${ - context.payload.head_commit.author.username - } with ${context.payload.commits.length} commit${ - context.payload.commits.length === 1 ? "" : "s" - }.`; - result-encoding: string - - name: Set PR body - run: echo "PULL_REQUEST_BODY=${{steps.set-pr-body.outputs.result}}" >> $GITHUB_ENV - - name: pull-request-action - uses: vsoch/pull-request-action@master - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH_PREFIX: "hotfix-" - PULL_REQUEST_BRANCH: "production" - PULL_REQUEST_REVIEWERS: "AnandChowdhary" + - name: Generate branch name + uses: actions/github-script@v6 + id: set-branch-name + with: + script: | + const capitalize = (name) => name.charAt(0).toUpperCase() + name.slice(1); + const emoji = context.payload.ref.startsWith("refs/heads/feature") + ? "✨ " + : context.payload.ref.startsWith("refs/heads/hotfix") + ? "🚑 " + : ""; + return `${emoji}${capitalize( + context.payload.ref + .replace("refs/heads/", "") + .replace(/-/g, " ") + .replace("feature ", "") + .replace("hotfix ", "") + )}`; + result-encoding: string + - name: Set branch name + run: echo "PULL_REQUEST_TITLE=${{steps.set-branch-name.outputs.result}}" >> $GITHUB_ENV + - name: Generate PR body + uses: actions/github-script@v6 + id: set-pr-body + with: + script: | + return `I'm opening this pull request for this branch, pushed by @${ + context.payload.head_commit.author.username + } with ${context.payload.commits.length} commit${ + context.payload.commits.length === 1 ? "" : "s" + }.`; + result-encoding: string + - name: Set PR body + run: echo "PULL_REQUEST_BODY=${{steps.set-pr-body.outputs.result}}" >> $GITHUB_ENV + - name: pull-request-action + uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH_PREFIX: hotfix- + PULL_REQUEST_BRANCH: production + PULL_REQUEST_REVIEWERS: AnandChowdhary diff --git a/examples/outputs-example.yml b/examples/outputs-example.yml index 3e4b09a..f2245eb 100644 --- a/examples/outputs-example.yml +++ b/examples/outputs-example.yml @@ -2,27 +2,27 @@ name: Pull Request on Branch Push on: push: branches-ignore: - - devel + - devel jobs: auto-pull-request: name: PullRequestAction runs-on: ubuntu-latest steps: - - name: pull-request-action - id: pull_request - uses: vsoch/pull-request-action@master - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH_PREFIX: "update/" - PULL_REQUEST_BRANCH: "master" - PULL_REQUEST_REVIEWERS: vsoch - - name: Test outputs - env: - pull_request_number_output: ${{ steps.pull_request.outputs.pull_request_number }} - pull_request_url_output: ${{ steps.pull_request.outputs.pull_request_url }} - run: | - echo "Pull request number from output: ${pull_request_number_output}" - echo "Pull request url from output: ${pull_request_url_output}" - echo "Pull request number from environment: ${PULL_REQUEST_NUMBER}" - echo "Pull request url from environment: ${PULL_REQUEST_URL}" - echo "Another way to specify from output ${{ steps.pull_request.outputs.pull_request_number }}" + - name: pull-request-action + id: pull_request + uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH_PREFIX: update/ + PULL_REQUEST_BRANCH: master + PULL_REQUEST_REVIEWERS: vsoch + - name: Test outputs + env: + pull_request_number_output: ${{ steps.pull_request.outputs.pull_request_number }} + pull_request_url_output: ${{ steps.pull_request.outputs.pull_request_url }} + run: | + echo "Pull request number from output: ${pull_request_number_output}" + echo "Pull request url from output: ${pull_request_url_output}" + echo "Pull request number from environment: ${PULL_REQUEST_NUMBER}" + echo "Pull request url from environment: ${PULL_REQUEST_URL}" + echo "Another way to specify from output ${{ steps.pull_request.outputs.pull_request_number }}" diff --git a/examples/push-example.yml b/examples/push-example.yml index 4bf22d1..c3157fa 100644 --- a/examples/push-example.yml +++ b/examples/push-example.yml @@ -2,17 +2,17 @@ name: Pull Request on Branch Push on: push: branches-ignore: - - staging - - launchpad - - production + - staging + - launchpad + - production jobs: auto-pull-request: name: PullRequestAction runs-on: ubuntu-latest steps: - - name: pull-request-action - uses: vsoch/pull-request-action@master - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH_PREFIX: "update/" - PULL_REQUEST_BRANCH: "master" + - name: pull-request-action + uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH_PREFIX: update/ + PULL_REQUEST_BRANCH: master diff --git a/examples/release-example.yml b/examples/release-example.yml index 9b755cc..17eae32 100644 --- a/examples/release-example.yml +++ b/examples/release-example.yml @@ -1,7 +1,7 @@ on: release: types: - - published + - published jobs: persist-new-suite-yml: @@ -18,31 +18,27 @@ jobs: version=$(echo "$tag_name" | sed 's/^v//') echo "Version: $version" - echo "::set-output name=suite_version::${version}" - echo "::set-output name=suite_update_branch::suite_${version}" + echo "suite_version=${version}" >> $GITHUB_OUTPUT + echo "suite_update_branch=suite_${version}" >> $GITHUB_OUTPUT id: data - name: Permanently save the new suite release run: | mkdir -p releases - new_suite_version_yml="releases/suite_${{ steps.data.outputs.suite_version }}.yml" echo "Suite target file: $new_suite_version_yml" - cp suite.yml "${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" - name: Push files - run: | - git push --force "https://${{ github.actor }}:${{secrets.GITHUB_TOKEN}}@github.com/${{ github.repository }}.git" "HEAD:${{ steps.data.outputs.suite_update_branch }}" + run: 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 - uses: vsoch/pull-request-action@master + uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21 env: 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_TITLE: "Action: Update suite release file for v${{ steps.data.outputs.suite_version }}" - PULL_REQUEST_BODY: "Auto-generated PR!" + PULL_REQUEST_TITLE: 'Action: Update suite release file for v${{ steps.data.outputs.suite_version }}' + PULL_REQUEST_BODY: Auto-generated PR! diff --git a/examples/reviewers-example.yml b/examples/reviewers-example.yml index 1e38885..264e5b3 100644 --- a/examples/reviewers-example.yml +++ b/examples/reviewers-example.yml @@ -2,16 +2,16 @@ name: Pull Request on Branch Push on: push: branches-ignore: - - devel + - devel jobs: auto-pull-request: name: PullRequestAction runs-on: ubuntu-latest steps: - - name: pull-request-action - uses: vsoch/pull-request-action@master - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH_PREFIX: "update/" - PULL_REQUEST_BRANCH: "master" - PULL_REQUEST_REVIEWERS: vsoch + - name: pull-request-action + uses: vsoch/pull-request-action@d703f40f3af5ae294f9816395ddf2e3d2d3feafa # 1.0.21 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH_PREFIX: update/ + PULL_REQUEST_BRANCH: master + PULL_REQUEST_REVIEWERS: vsoch diff --git a/pull-request.py b/pull-request.py index bade721..5c40178 100755 --- a/pull-request.py +++ b/pull-request.py @@ -160,11 +160,11 @@ def set_pull_request_groups(response): html_url = response.get("html_url") print("Number opened for PR is %s" % number) set_env("PULL_REQUEST_NUMBER", number) - print("::set-output name=pull_request_number::%s" % number) + print("pull_request_number=%s >> $GITHUB_OUTPUT" % number) set_env("PULL_REQUEST_RETURN_CODE", pull_request_return_code) - print("::set-output name=pull_request_return_code::%s" % pull_request_return_code) + print("pull_request_return_code=%s >> $GITHUB_OUTPUT" % pull_request_return_code) set_env("PULL_REQUEST_URL", html_url) - print("::set-output name=pull_request_url::%s" % html_url) + print("pull_request_url=%s >> $GITHUB_OUTPUT" % html_url) def list_pull_requests(target, source): @@ -216,7 +216,7 @@ def add_assignees(entry, assignees): print(response.json()) print("::endgroup::github assignees response") set_env("ASSIGNEES_RETURN_CODE", assignees_return_code) - print("::set-output name=assignees_return_code::%s" % assignees_return_code) + print("assignees_return_code=%s >> $GITHUB_OUTPUT" % assignees_return_code) def find_pull_request(listing, source): @@ -273,7 +273,7 @@ def add_reviewers(entry, reviewers, team_reviewers): print(response.json()) print("::endgroup::github reviewers response") set_env("REVIEWERS_RETURN_CODE", reviewers_return_code) - print("::set-output name=reviewers_return_code::%s" % reviewers_return_code) + print("reviewers_return_code=%s >> $GITHUB_OUTPUT" % reviewers_return_code) print("Add reviewers return code: %s" % reviewers_return_code)