Repository navigation
Open
Description
I can't get this to work with headless mode and PR lifetime lock. The unlock would trigger for any PR that was closed and because the lock was locked using headless mode, there is nothing that ties the lock to the pull-request.
name: deploy
on:
issue_comment:
types: [created]
pull_request:
types: [closed]
permissions:
pull-requests: write
contents: write
jobs:
ilock:
runs-on: ubuntu-latest
if: ${{ github.event_name == 'issue_comment' && github.event.issue.pull_request }}
steps:
- name: ilock
uses: github/lock@v2.1.1
with:
lock_trigger: /lock
unlock_trigger: /unlock
lock_info_alias: /wcid
unlock:
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' && github.event.action == 'closed' }}
steps:
- name: unlock
uses: github/lock@v2.1.1
with:
mode: unlock
deploy:
runs-on: ubuntu-latest
if: ${{ github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '/deploy') }}
steps:
- name: acknowledge
uses: actions/github-script@v6
with:
script: |
github.rest.reactions.createForIssueComment({
comment_id: context.payload.comment.id,
owner: context.repo.owner,
repo: context.repo.repo,
content: 'eyes',
});
- name: lock
id: lock
uses: github/lock@v2.1.1
with:
mode: check
- name: locked_comment
uses: actions/github-script@v6
if: ${{ steps.lock.outputs.locked == 'true' && steps.lock.outputs.created_by != github.actor }}
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "This repo is currently locked by ${{ steps.lock.outputs.created_by }}. Please wait for them to finish before trying again."
});
- name: acquire_lock
uses: github/lock@v2.1.1
if: ${{ steps.lock.outputs.locked == 'false' }}
with:
mode: lock
- name: deploy
uses: actions/github-script@v6
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "Deploying!"
});
- name: success
uses: actions/github-script@v6
if: ${{ success() }}
with:
script: |
github.rest.reactions.createForIssueComment({
comment_id: context.payload.comment.id,
owner: context.repo.owner,
repo: context.repo.repo,
content: '+1',
});
- name: failure
uses: actions/github-script@v6
if: ${{ failure() }}
with:
script: |
github.rest.reactions.createForIssueComment({
comment_id: context.payload.comment.id,
owner: context.repo.owner,
repo: context.repo.repo,
content: '-1',
});Reacted by John McCall
Metadata
Metadata
Assignees
Labels
No labels
Activity
GrantBirki commentedon Oct 25, 2023
👋 @imranismail, happy to help!
Firstly, it should be noted that this Action is considered supplemental to the main
github/branch-deployAction. This Action is mainly used when more advanced or custom "lock" operations are required that the branch-deploy Action cannot handle out-of-the-box. If you are using this Action in conjunction with deployments, I would highly suggest using thegithub/branch-deployAction to obtain locks on pull requests as it will add metadata to the lock file that can be used to associate a lock with a pull request. See below:Example commenting
.lock <environment>on a pull request using the github/branch-deploy Action:When performing a "lock" operation on a pull request using the
github/branch-deployAction, a link to the issue comment is left as metadata within the lock file. The link can be used to reference the pull request. Here is a live example:{ "reason": null, "branch": "test", "created_at": "2023-10-25T17:25:28.893Z", "created_by": "GrantBirki", "sticky": true, "environment": "production", "global": false, "unlock_command": ".unlock production", "link": "https://github.com/GrantBirki/actions-sandbox/pull/93#issuecomment-1779733746" }GrantBirki commentedon Oct 25, 2023
If the above comment does not complete what you are after, changes will likely need to be made to this Action to add more metadata into the
lock.jsonfile that will allow some sort of reference or ties back to a pull request.imranismail commentedon Oct 31, 2023
Would you be happy to accept a PR for this?
I don't mind contributing to it, as I had a deep look into the code and found that the metadata was the key to enable this.
GrantBirki commentedon Oct 31, 2023
Of course! PRs are always welcome ⭐