From 207e4f3b92879545c015a17bb26a2607bc5544c3 Mon Sep 17 00:00:00 2001
From: Srgr0 <66754887+Srgr0@users.noreply.github.com>
Date: Sat, 10 Feb 2024 14:18:30 +0900
Subject: [PATCH] dev: Update misskey-tga deploy-test-environment.yml (#13221)

---
 .github/workflows/deploy-test-environment.yml | 59 ++++++++++++++++---
 1 file changed, 51 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/deploy-test-environment.yml b/.github/workflows/deploy-test-environment.yml
index acfe7dec2..62a4d018d 100644
--- a/.github/workflows/deploy-test-environment.yml
+++ b/.github/workflows/deploy-test-environment.yml
@@ -1,23 +1,66 @@
 name: deploy-test-environment
 
 on:
-  #push:
+  issue_comment:
+    types: [created]
   workflow_dispatch:
     inputs:
       repository:
-        description: 'Repository to deploy (optional)'
-        type: string
+        description: 'Repository to deploy (optional, use the repository where this workflow is stored by default)'
         required: false
+        default: ''
       branch_or_hash:
-        description: 'Branch or Commit hash to deploy (optional)'
-        type: string
+        description: 'Branch or Commit hash to deploy (optional, use the branch where this workflow is stored by default)'
         required: false
+        default: ''
+      wait_time:
+        description: 'Time to wait in seconds (optional, 1800 seconds by default)'
+        required: false
+        default: ''
 
 jobs:
-  deploy-test-environment:
+  get-pr-ref:
+    runs-on: ubuntu-latest
+    if: github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/preview')
+    outputs:
+      pr-ref: ${{ steps.get-ref.outputs.pr-ref }}
+      wait_time: ${{ steps.get-wait-time.outputs.wait_time }}
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Get PR ref
+        id: get-ref
+        env:
+          GH_TOKEN: ${{ github.token }}
+        run: |
+          PR_NUMBER=$(jq --raw-output .issue.number $GITHUB_EVENT_PATH)
+          PR_REF=$(gh pr view $PR_NUMBER --json headRefName -q '.headRefName')
+          echo "pr-ref=$PR_REF" > $GITHUB_OUTPUT
+
+      - name: Extract wait time
+        id: get-wait-time
+        run: |
+          COMMENT_BODY="${{ github.event.comment.body }}"
+          WAIT_TIME=$(echo "$COMMENT_BODY" | grep -oP '(?<=/preview\s)\d+' || echo "1800")
+          echo "wait_time=$WAIT_TIME" > $GITHUB_OUTPUT
+
+  deploy-test-environment-pr-comment:
+    needs: get-pr-ref
     uses: joinmisskey/misskey-tga/.github/workflows/deploy-test-environment.yml@main
     with:
-      repository: ${{ github.event.inputs.repository }}
-      branch_or_hash: ${{ github.event.inputs.branch_or_hash }}
+      repository: ${{ github.repository }}
+      branch_or_hash: ${{ needs.get-pr-ref.outputs.pr-ref }}
+      wait_time: ${{ needs.get-pr-ref.outputs.wait_time }}
+    secrets:
+      DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
+
+  deploy-test-environment-wd:
+    if: github.event_name == 'workflow_dispatch'
+    uses: joinmisskey/misskey-tga/.github/workflows/deploy-test-environment.yml@main
+    with:
+      repository: ${{ inputs.repository || github.repository }}
+      branch_or_hash: ${{ inputs.branch_or_hash || github.ref_name }}
+      wait_time: ${{ inputs.wait_time || '1800' }}
     secrets:
       DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}