61 lines
2.0 KiB
YAML
61 lines
2.0 KiB
YAML
name: build-and-release
|
||
run-name: Build #${{ github.run_number }}
|
||
|
||
on:
|
||
push:
|
||
branches: [main]
|
||
workflow_dispatch:
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: windows-latest
|
||
steps:
|
||
# runner 到 github.com 网络不稳定,不使用 actions/checkout@v4,
|
||
# 改为直接从本 Gitea 实例克隆代码
|
||
- name: Checkout
|
||
shell: pwsh
|
||
env:
|
||
GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
run: |
|
||
$url = "${{ gitea.server_url }}/${{ github.repository }}.git" -replace '^https://', "https://x-access-token:$env:GITEA_TOKEN@"
|
||
git clone $url .
|
||
git checkout ${{ github.sha }}
|
||
|
||
- name: Install dependencies
|
||
run: npm ci
|
||
|
||
- name: Build
|
||
run: npm run build
|
||
|
||
- name: Smoke test
|
||
run: node dist/app.js
|
||
|
||
- name: Package
|
||
shell: pwsh
|
||
run: |
|
||
$tag = "v0.1.${{ github.run_number }}"
|
||
Compress-Archive -Path dist\* -DestinationPath "test-runner-$tag.zip"
|
||
echo "TAG=$tag" >> $env:GITHUB_ENV
|
||
|
||
- name: Create Gitea release with artifact
|
||
shell: pwsh
|
||
env:
|
||
GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
run: |
|
||
$repo = "${{ github.repository }}"
|
||
$tag = $env:TAG
|
||
$server = "${{ gitea.server_url }}"
|
||
$headers = @{ Authorization = "token $env:GITEA_TOKEN" }
|
||
$body = @{
|
||
tag_name = $tag
|
||
name = "Test build $tag"
|
||
target_commitish = "${{ github.sha }}"
|
||
draft = $false
|
||
prerelease = $true
|
||
} | ConvertTo-Json
|
||
$release = Invoke-RestMethod -Method Post -Uri "$server/api/v1/repos/$repo/releases" -Headers $headers -Body $body -ContentType "application/json"
|
||
Write-Host "Created release id=$($release.id) tag=$tag"
|
||
$zip = Get-Item "test-runner-$tag.zip"
|
||
Invoke-RestMethod -Method Post -Uri "$server/api/v1/repos/$repo/releases/$($release.id)/assets?name=$($zip.Name)" -Headers $headers -Form @{ attachment = $zip }
|
||
Write-Host "Uploaded asset $($zip.Name)"
|