Skip to content

Commit

Permalink
🔨 Improve Vercel workflow with label-based deployment conditions (#16)
Browse files Browse the repository at this point in the history
* 🔨 Vercelワークフローの改善: PRラベルに基づくデプロイの条件を追加

* test

* 変数名のミス

* 変数名のミス2

* コメントのミスを修正し、テスト

* 変数名のミス
  • Loading branch information
yuito-it authored Jan 27, 2025
1 parent 1bb5148 commit f014fee
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 27 deletions.
92 changes: 66 additions & 26 deletions .github/workflows/VercelPreview.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,70 @@ on:
pull_request:
branches:
- main
label:
types: [created, deleted]
jobs:
deployment:
runs-on: ubuntu-latest
concurrency: Preview
environment:
name: Preview
url: ${{ steps.get_release_url.outputs.release_url }}
steps:
- uses: actions/checkout@v4
- name: Install Vercel CLI
run: npm install -g vercel
- name: Link Vercel Project
run: vercel link --token=${{secrets.VERCEL_TOKEN}} --project ${{secrets.VERCEL_PROJECT}} --yes
- name: Deploy with Vercel
run: vercel deploy --target=staging --token=${{secrets.VERCEL_TOKEN}} >deployment-url.txt 2>error.txt
- name: Set release url
id: get_release_url
run: echo release_url=$(cat deployment-url.txt) >> $GITHUB_OUTPUT
- name: Comment on PR
run: |
cat << EOF > comment.md
## :rocket: Preview Deployment
[Preview Deployment](${{ steps.get_release_url.outputs.release_url }})
EOF
gh pr comment ${{ github.event.number }} --body-file comment.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
checkLabels:
runs-on: ubuntu-latest
outputs:
output1: ${{ steps.labels.outputs.json }}
steps:
- uses: actions/checkout@v4
- name: Get PR labels
id: labels
shell: bash
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.number }}
run: |
json=$(gh pr view "$PR_NUMBER" --json labels | jq -c '.labels|map(.name)')
echo "json=$json" >> "$GITHUB_OUTPUT"
- name: Comment on PR
if: ${{ contains(fromJSON(steps.labels.outputs.json), 'dependencies') || contains(fromJSON(steps.labels.outputs.json), 'documentation') || contains(fromJSON(steps.labels.outputs.json), 'duplicate') }}
run: |
cat << EOF > comment.md
## :rocket: Preview Deployment
Deployment skipped due to label(s) - dependencies, documentation, duplicate
EOF
gh pr comment ${{ github.event.number }} --body-file comment.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
deployment:
needs: checkLabels
if: ${{ !(contains(fromJSON(needs.checkLabels.outputs.output1), 'dependencies') || contains(fromJSON(needs.checkLabels.outputs.output1), 'documentation') || contains(fromJSON(needs.checkLabels.outputs.output1), 'duplicate')) }}
runs-on: ubuntu-latest
concurrency: Preview
environment:
name: Preview
url: ${{ steps.get_release_url.outputs.release_url }}
steps:
- uses: actions/checkout@v4
- name: Get PR labels
id: labels
shell: bash
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.number }}
run: |
json=$(gh pr view "$PR_NUMBER" --json labels | jq -c '.labels|map(.name)')
echo "json=$json" >> "$GITHUB_OUTPUT"
- name: Install Vercel CLI
run: npm install -g vercel
- name: Link Vercel Project
run: vercel link --token=${{secrets.VERCEL_TOKEN}} --project ${{vars.VERCEL_PROJECT}} --yes
- name: Deploy with Vercel
run: vercel deploy --target=staging --token=${{secrets.VERCEL_TOKEN}} >deployment-url.txt 2>error.txt
- name: Set release url
id: get_release_url
run: echo release_url=$(cat deployment-url.txt) >> $GITHUB_OUTPUT
- name: Comment on PR
run: |
cat << EOF > comment.md
## :rocket: Preview Deployment
[Preview Deployment](${{ steps.get_release_url.outputs.release_url }})
EOF
gh pr comment ${{ github.event.number }} --body-file comment.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/VercelProduct.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
- name: Install Vercel CLI
run: npm install -g vercel
- name: Link Vercel Project
run: vercel link --token=${{secrets.VERCEL_TOKEN}} --project ${{secrets.VERCEL_PROJECT}} --yes
run: vercel link --token=${{secrets.VERCEL_TOKEN}} --project ${{vars.VERCEL_PROJECT}} --yes
- name: Deploy with Vercel
run: vercel deploy --prod --token=${{secrets.VERCEL_TOKEN}} >deployment-url.txt 2>error.txt
- name: Set release url
Expand Down

0 comments on commit f014fee

Please sign in to comment.