Skip to content

PR lifetime lock #23

Open
Open
@imranismail

Description

@imranismail

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',
            });

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions