mirror of https://github.com/jetkvm/kvm.git
127 lines
3.8 KiB
YAML
127 lines
3.8 KiB
YAML
name: Push
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
permissions:
|
|
id-token: write
|
|
contents: read
|
|
pull-requests: write
|
|
|
|
jobs:
|
|
build:
|
|
name: Build
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-22.04]
|
|
go: [1.21, 1.23.4]
|
|
node: [21]
|
|
goos: [linux]
|
|
goarch: [arm]
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
|
|
- name: Install Dependencies
|
|
working-directory: ui
|
|
run: npm ci
|
|
|
|
- name: Build UI
|
|
working-directory: ui
|
|
run: npm run build:device
|
|
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go }}
|
|
|
|
- name: Install Go Dependencies
|
|
run: |
|
|
go mod download
|
|
|
|
- name: Build Binaries
|
|
env:
|
|
GOOS: ${{ matrix.goos }}
|
|
GOARCH: ${{ matrix.goarch }}
|
|
run: |
|
|
GOOS=linux GOARCH=arm GOARM=7 go build -ldflags="-s -w -X kvm.builtAppVersion=dev-${GIT_COMMIT:0:7}" -o bin/jetkvm_app cmd/main.go
|
|
chmod 755 bin/jetkvm_app
|
|
|
|
- name: Upload Debug Artifact
|
|
uses: actions/upload-artifact@v4
|
|
if: ${{ (github.ref == 'refs/heads/main' || github.event_name == 'pull_request') && matrix.go == '1.21' }}
|
|
with:
|
|
name: jetkvm_app_debug
|
|
path: bin/jetkvm_app
|
|
|
|
comment:
|
|
name: Comment
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Generate Links
|
|
id: linksa
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
ARTIFACT_ID=$(gh api repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts --jq '.artifacts[0].id')
|
|
echo "ARTIFACT_URL=https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts/$ARTIFACT_ID" >> $GITHUB_ENV
|
|
echo "LATEST_COMMIT=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
|
|
|
- name: Comment on PR
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
|
TITLE="${{ github.event.pull_request.title }}"
|
|
PR_NUMBER=${{ github.event.pull_request.number }}
|
|
else
|
|
TITLE="main branch"
|
|
fi
|
|
|
|
COMMENT=$(cat << EOF
|
|
✅ **Build successfully for $TITLE!**
|
|
|
|
| Name | Link |
|
|
|------------------|----------------------------------------------------------------------|
|
|
| 🔗 Debug Binary | [Download](${{ env.ARTIFACT_URL }}) |
|
|
| 🔗 Latest commit | [${{ env.LATEST_COMMIT }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) |
|
|
EOF
|
|
)
|
|
|
|
# Post Comment
|
|
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
|
# Look for an existing comment
|
|
COMMENT_ID=$(gh api repos/${{ github.repository }}/issues/$PR_NUMBER/comments \
|
|
--jq '.[] | select(.body | contains("✅ **Build successfully for")) | .id')
|
|
|
|
if [ -z "$COMMENT_ID" ]; then
|
|
# Create a new comment if none exists
|
|
gh pr comment $PR_NUMBER --body "$COMMENT"
|
|
else
|
|
# Update the existing comment
|
|
gh api repos/${{ github.repository }}/issues/comments/$COMMENT_ID \
|
|
--method PATCH \
|
|
-f body="$COMMENT"
|
|
fi
|
|
else
|
|
# Log the comment for main branch
|
|
echo "$COMMENT"
|
|
fi
|