refact(ci): Preview workflow to create PR (#901)

* refact: use tags instead of runner id

* refact: pr instead of auto commit

---------

Co-authored-by: Chris Titus <contact@christitus.com>
This commit is contained in:
JEEVITHA KANNAN K S 2024-11-02 00:13:05 +05:30 committed by GitHub
parent 6eba207f27
commit 904ea6ee53
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 44 additions and 36 deletions

View File

@ -78,11 +78,3 @@ jobs:
env: env:
version: ${{ env.version }} version: ${{ env.version }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: linutil-artifact
path: build/x86_64-unknown-linux-musl/release/linutil
compression-level: 0
overwrite: true

View File

@ -3,8 +3,8 @@ name: LinUtil Preview
on: on:
workflow_dispatch: workflow_dispatch:
inputs: inputs:
run_id: tag_name:
description: 'Run ID of LinUtil Release' description: 'Tag name'
required: true required: true
workflow_run: workflow_run:
workflows: ["LinUtil Release"] workflows: ["LinUtil Release"]
@ -14,29 +14,46 @@ on:
jobs: jobs:
generate_preview: generate_preview:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps: steps:
- uses: actions/checkout@v4 - name: Checkout source
uses: actions/checkout@v4
- name: Set Run ID - name: Get tag name ( Workflow Run )
run: | id: latest_tag
if [ "${{ github.event_name }}" == "workflow_run" ]; then uses: actions/github-script@v7
echo "run_id=${{ github.event.workflow_run.id }}" >> $GITHUB_ENV if: ${{ github.event_name }} == 'workflow_run'
else
echo "run_id=${{ github.event.inputs.run_id }}" >> $GITHUB_ENV
fi
- name: Download build artifacts
uses: actions/download-artifact@v4
with: with:
name: linutil-artifact script: |
github-token: ${{ secrets.GITHUB_TOKEN }} const releases = await github.rest.repos.listReleases({
run-id: ${{ env.run_id }} owner: context.repo.owner,
repo: context.repo.repo,
per_page: 1
});
return releases.data[0].tag_name;
result-encoding: string
- name: Set tag name ( Workflow Run )
if: ${{ github.event_name }} == 'workflow_run'
run: echo "tag_name=${{ steps.latest_tag.outputs.result }}" >> $GITHUB_ENV
- name: Set tag name ( Workflow Dispatch )
if: ${{ github.event_name }} == 'workflow_dispatch'
run: echo "tag_name=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV
- name: Download binary
run: |
curl -LO "https://github.com/${{ github.repository }}/releases/download/${{ env.tag_name }}/linutil"
- name: Set env - name: Set env
run: | run: |
chmod +x linutil chmod +x linutil
echo "${{ github.workspace }}" >> $GITHUB_PATH mkdir -p build
mv linutil build/linutil
echo "${{ github.workspace }}/build" >> $GITHUB_PATH
- name: Generate preview - name: Generate preview
uses: charmbracelet/vhs-action@v2.1.0 uses: charmbracelet/vhs-action@v2.1.0
@ -46,16 +63,15 @@ jobs:
- name: Move preview - name: Move preview
run: mv preview.gif docs/assets/preview.gif run: mv preview.gif docs/assets/preview.gif
- name: Create Pull Request - name: Create PR
uses: peter-evans/create-pull-request@v6 uses: peter-evans/create-pull-request@v7.0.5
with: with:
token: ${{ secrets.GITHUB_TOKEN }} title: "release: Preview for ${{ env.tag_name }}"
commit-message: Preview for ${{ env.run_id }} commit-message: "release: Preview for ${{ env.tag_name }}"
title: 'Update preview GIF' branch: "preview-${{ env.tag_name }}"
body: 'Automatically generated preview GIF from workflow run ${{ env.run_id }}'
branch: update-preview-gif
base: main
delete-branch: true delete-branch: true
add-paths: | labels: "documentation"
docs/assets/preview.gif body: |
if: success() ## Preview for ${{ env.tag_name }}
- Tag: [${{ env.tag_name }}](https://github.com/${{ github.repository }}/tree/${{ env.tag_name }})
- Preview: ![Preview](https://raw.githubusercontent.com/${{ github.repository }}/preview-${{ env.tag_name }}/docs/assets/preview.gif)