mirror of
https://github.com/cmderdev/cmder.git
synced 2026-04-15 06:44:31 +08:00
resolve conflicts
This commit is contained in:
179
.github/workflows/build.yml
vendored
179
.github/workflows/build.yml
vendored
@@ -12,6 +12,7 @@ on:
|
||||
- "v*"
|
||||
pull_request:
|
||||
branches: [ "master", "development" ]
|
||||
workflow_dispatch:
|
||||
|
||||
#---------------------------------#
|
||||
# environment configuration #
|
||||
@@ -42,21 +43,91 @@ jobs:
|
||||
- name: Summary - Repository checkout
|
||||
shell: pwsh
|
||||
run: |
|
||||
# Get Cmder version
|
||||
. scripts/utils.ps1
|
||||
$cmderVersion = Get-VersionStr
|
||||
$buildTime = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
|
||||
|
||||
# Determine branch and PR information
|
||||
$refName = "${{ github.ref_name }}"
|
||||
$headRef = "${{ github.head_ref }}"
|
||||
$eventName = "${{ github.event_name }}"
|
||||
$prNumber = $null
|
||||
$actualBranchName = $refName
|
||||
$branchLink = ""
|
||||
$prLink = ""
|
||||
|
||||
# Check if this is a PR merge ref (e.g., "3061/merge")
|
||||
if ($refName -match '^(\d+)/(merge|head)$') {
|
||||
$prNumber = $Matches[1]
|
||||
# Use head_ref for the actual branch name if available
|
||||
if ($headRef) {
|
||||
$actualBranchName = $headRef
|
||||
}
|
||||
$branchLink = "https://github.com/${{ github.repository }}/tree/$actualBranchName"
|
||||
$prLink = "https://github.com/${{ github.repository }}/pull/$prNumber"
|
||||
} elseif ($eventName -eq "pull_request") {
|
||||
# This is a pull request event
|
||||
$prNumber = "${{ github.event.pull_request.number }}"
|
||||
if ($headRef) {
|
||||
$actualBranchName = $headRef
|
||||
}
|
||||
$branchLink = "https://github.com/${{ github.repository }}/tree/$actualBranchName"
|
||||
$prLink = "https://github.com/${{ github.repository }}/pull/$prNumber"
|
||||
} else {
|
||||
# Regular branch, link to the branch tree
|
||||
$branchLink = "https://github.com/${{ github.repository }}/tree/$refName"
|
||||
}
|
||||
|
||||
$summary = @"
|
||||
## 📦 Build Cmder - Workflow Summary
|
||||
|
||||
<small>Build started: $buildTime</small>
|
||||
<small>Build started: ``$buildTime``</small>
|
||||
|
||||
### Repository Information
|
||||
| Property | Value |
|
||||
| --- | --- |
|
||||
| Repository | [``${{ github.repository }}``](https://github.com/${{ github.repository }}) |
|
||||
| Branch | [``$branchName``]($branchLink) |
|
||||
| Branch | [``$actualBranchName``]($branchLink) |
|
||||
$(if ($prNumber) { "| Pull Request | [#$prNumber]($prLink) |" })
|
||||
| Commit | [``${{ github.sha }}``](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) |
|
||||
| Actor | [@${{ github.actor }}](https://github.com/${{ github.actor }}) |
|
||||
| Workflow | ``${{ github.workflow }}`` |
|
||||
| Cmder Version | **$cmderVersion** |
|
||||
|
||||
---
|
||||
|
||||
### 🗃️ Vendor Packages ([sources.json](vendor/sources.json))
|
||||
| Package | Version |
|
||||
| --- | --- |
|
||||
"@
|
||||
|
||||
# Read vendor sources.json and add to summary
|
||||
$vendorSources = Get-Content -Raw "vendor/sources.json" | ConvertFrom-Json
|
||||
if ($vendorSources.Count -eq 0) {
|
||||
$summary += "`n| _No vendor packages found_ | |"
|
||||
} else {
|
||||
foreach ($vendor in $vendorSources) {
|
||||
# Create release link based on vendor package
|
||||
$versionLink = "$($vendor.version)"
|
||||
if ($vendor.url) {
|
||||
# Extract owner/repo/tag from the URL and create release link
|
||||
# Handle both /releases/download/ and /archive/ URLs
|
||||
if ($vendor.url -match 'github\.com/([^/]+)/([^/]+)/(releases/download|archive)/([^/]+)') {
|
||||
$owner = $Matches[1]
|
||||
$repo = $Matches[2]
|
||||
$pathType = $Matches[3]
|
||||
$tag = $Matches[4]
|
||||
if ($pathType -eq 'archive') {
|
||||
$tag = $tag -replace '\.(?:tar\.gz|tgz|zip)$', ''
|
||||
}
|
||||
$versionLink = "[$($vendor.version)](https://github.com/$owner/$repo/releases/tag/$tag)"
|
||||
}
|
||||
}
|
||||
$summary += "`n| ``$($vendor.name)`` | $versionLink |"
|
||||
}
|
||||
}
|
||||
|
||||
$summary += "`n"
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
@@ -77,8 +148,6 @@ jobs:
|
||||
|
||||
---
|
||||
|
||||
### Build Status
|
||||
|
||||
✅ Cmder built successfully.
|
||||
|
||||
"@
|
||||
@@ -90,26 +159,6 @@ jobs:
|
||||
working-directory: scripts
|
||||
run: .\pack.ps1 -verbose
|
||||
|
||||
- name: Summary - Package artifacts
|
||||
if: success()
|
||||
shell: pwsh
|
||||
run: |
|
||||
echo "### 📦 Artifacts Created" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "| Artifact | Size | Hash (SHA256) |" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "| --- | --- | --- |" >> $env:GITHUB_STEP_SUMMARY
|
||||
$artifacts = @("cmder.zip", "cmder.7z", "cmder_mini.zip")
|
||||
foreach ($artifact in $artifacts) {
|
||||
$path = "build/$artifact"
|
||||
if (Test-Path $path) {
|
||||
$size = (Get-Item $path).Length / 1MB
|
||||
# Truncate hash to first 16 chars for summary readability (full hash in hashes.txt)
|
||||
$hash = (Get-FileHash $path -Algorithm SHA256).Hash.Substring(0, 16)
|
||||
echo "| \`$artifact\` | $([math]::Round($size, 2)) MB | \`$hash...\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||
}
|
||||
}
|
||||
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||
|
||||
- name: Upload artifact (cmder.zip)
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
@@ -142,15 +191,55 @@ jobs:
|
||||
- name: Summary - Artifacts uploaded
|
||||
if: success()
|
||||
shell: pwsh
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
echo "### ☁️ Upload Status" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "All artifacts successfully uploaded to GitHub Actions:" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo '- ✅ `cmder.zip`' >> $env:GITHUB_STEP_SUMMARY
|
||||
echo '- ✅ `cmder.7z`' >> $env:GITHUB_STEP_SUMMARY
|
||||
echo '- ✅ `cmder_mini.zip`' >> $env:GITHUB_STEP_SUMMARY
|
||||
echo '- ✅ `hashes.txt`' >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||
# Source utility functions
|
||||
. scripts/utils.ps1
|
||||
|
||||
$summary = @"
|
||||
|
||||
### 🗃️ Artifacts
|
||||
|
||||
| Artifact | Size | Hash (SHA256) |
|
||||
| --- | --- | --- |
|
||||
"@
|
||||
|
||||
# Get all files from the build directory (excluding directories and hidden files)
|
||||
if (Test-Path "build") {
|
||||
$buildFiles = Get-ChildItem -Path "build" -File | Where-Object { -not $_.Name.StartsWith('.') } | Sort-Object Name
|
||||
|
||||
foreach ($file in $buildFiles) {
|
||||
$artifact = $file.Name
|
||||
$path = $file.FullName
|
||||
$sizeFormatted = Format-FileSize -Bytes $file.Length
|
||||
$hash = (Get-FileHash $path -Algorithm SHA256).Hash
|
||||
|
||||
# Try to get the actual artifact download URL
|
||||
$downloadUrl = Get-ArtifactDownloadUrl -ArtifactName $artifact -Repository "${{ github.repository }}" -RunId "${{ github.run_id }}"
|
||||
$warning = ""
|
||||
|
||||
if (-not $downloadUrl) {
|
||||
# Fallback to workflow run page if artifact URL fetch fails
|
||||
$downloadUrl = "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
|
||||
$warning = " ⚠️"
|
||||
}
|
||||
|
||||
# Determine emoji based on file type
|
||||
if ($artifact -match '\.txt$') {
|
||||
$emoji = "📄"
|
||||
} elseif ($artifact -match '\.(zip|rar|7z)$') {
|
||||
$emoji = "🗄️"
|
||||
} else {
|
||||
$emoji = "📦"
|
||||
}
|
||||
|
||||
$summary += "`n| $emoji [``$artifact``$warning]($downloadUrl) | $sizeFormatted | ``$hash`` |"
|
||||
}
|
||||
}
|
||||
$summary += "`n"
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
@@ -168,14 +257,20 @@ jobs:
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
shell: pwsh
|
||||
run: |
|
||||
echo "### 🚀 Release Information" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "Draft release created for tag: **\`${{ github.ref_name }}\`**" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "Release includes:" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "- Full version (\`cmder.zip\`, \`cmder.7z\`)" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "- Mini version (\`cmder_mini.zip\`)" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "- File hashes (\`hashes.txt\`)" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||
echo "> ⚠️ Release is in **draft** mode. Please review and publish manually." >> $env:GITHUB_STEP_SUMMARY
|
||||
$summary = @"
|
||||
|
||||
---
|
||||
|
||||
### Release Information
|
||||
|
||||
🚀 Draft release created for tag: **``${{ github.ref_name }}``**
|
||||
|
||||
Release includes:
|
||||
- Full version (``cmder.zip``, ``cmder.7z``)
|
||||
- Mini version (``cmder_mini.zip``)
|
||||
- File hashes (``hashes.txt``)
|
||||
|
||||
> ⚠️ Release is in **draft** mode. Please review and publish manually.
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
Reference in New Issue
Block a user