ci: Add companion agent release workflow
All checks were successful
Test Asgard Runner / test (push) Successful in 2s
All checks were successful
Test Asgard Runner / test (push) Successful in 2s
Production build pipeline for companion agent: - Triggers on version tags (v*.*.*) - Cross-compiles for Linux and Windows (AMD64) - Generates SHA256 checksums for verification - Creates Gitea release with auto-generated notes - Uploads binaries and checksums as release assets - Provides build summary in workflow output Built artifacts: - corrosion-companion-linux-amd64 - corrosion-companion-windows-amd64.exe - checksums.txt Usage: git tag v1.0.0 && git push origin v1.0.0 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
126
.gitea/workflows/build-companion.yml
Normal file
126
.gitea/workflows/build-companion.yml
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
name: Build Companion Agent
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*.*.*' # Trigger on version tags (v1.0.0, v1.2.3, etc.)
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '1.21'
|
||||||
|
|
||||||
|
- name: Get version from tag
|
||||||
|
id: version
|
||||||
|
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Build Linux AMD64
|
||||||
|
run: |
|
||||||
|
cd companion-agent
|
||||||
|
mkdir -p bin
|
||||||
|
GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o bin/corrosion-companion-linux-amd64 ./cmd/agent
|
||||||
|
chmod +x bin/corrosion-companion-linux-amd64
|
||||||
|
|
||||||
|
- name: Build Windows AMD64
|
||||||
|
run: |
|
||||||
|
cd companion-agent
|
||||||
|
GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o bin/corrosion-companion-windows-amd64.exe ./cmd/agent
|
||||||
|
|
||||||
|
- name: Generate checksums
|
||||||
|
run: |
|
||||||
|
cd companion-agent/bin
|
||||||
|
sha256sum corrosion-companion-linux-amd64 > checksums.txt
|
||||||
|
sha256sum corrosion-companion-windows-amd64.exe >> checksums.txt
|
||||||
|
cat checksums.txt
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
env:
|
||||||
|
VERSION: ${{ steps.version.outputs.VERSION }}
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const fs = require('fs').promises;
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
// Create release
|
||||||
|
const release = await github.rest.repos.createRelease({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
tag_name: process.env.VERSION,
|
||||||
|
name: `Companion Agent ${process.env.VERSION}`,
|
||||||
|
body: `## Corrosion Companion Agent ${process.env.VERSION}
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
**Linux:**
|
||||||
|
\`\`\`bash
|
||||||
|
wget https://git.corrosionmgmt.com/vantzs/corrosion-admin-panel/releases/download/${process.env.VERSION}/corrosion-companion-linux-amd64
|
||||||
|
chmod +x corrosion-companion-linux-amd64
|
||||||
|
sudo mv corrosion-companion-linux-amd64 /usr/local/bin/corrosion-companion
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
**Windows:**
|
||||||
|
Download \`corrosion-companion-windows-amd64.exe\` and run as administrator.
|
||||||
|
|
||||||
|
### Checksums
|
||||||
|
See \`checksums.txt\` for SHA256 verification.
|
||||||
|
|
||||||
|
### What's New
|
||||||
|
- Built from commit: ${context.sha.substring(0, 7)}
|
||||||
|
- Go version: 1.21
|
||||||
|
- Platforms: Linux AMD64, Windows AMD64
|
||||||
|
`,
|
||||||
|
draft: false,
|
||||||
|
prerelease: false
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(`Created release: ${release.data.html_url}`);
|
||||||
|
|
||||||
|
// Upload Linux binary
|
||||||
|
await github.rest.repos.uploadReleaseAsset({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
release_id: release.data.id,
|
||||||
|
name: 'corrosion-companion-linux-amd64',
|
||||||
|
data: await fs.readFile('companion-agent/bin/corrosion-companion-linux-amd64')
|
||||||
|
});
|
||||||
|
|
||||||
|
// Upload Windows binary
|
||||||
|
await github.rest.repos.uploadReleaseAsset({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
release_id: release.data.id,
|
||||||
|
name: 'corrosion-companion-windows-amd64.exe',
|
||||||
|
data: await fs.readFile('companion-agent/bin/corrosion-companion-windows-amd64.exe')
|
||||||
|
});
|
||||||
|
|
||||||
|
// Upload checksums
|
||||||
|
await github.rest.repos.uploadReleaseAsset({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
release_id: release.data.id,
|
||||||
|
name: 'checksums.txt',
|
||||||
|
data: await fs.readFile('companion-agent/bin/checksums.txt')
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('Uploaded all release assets');
|
||||||
|
|
||||||
|
- name: Build Summary
|
||||||
|
run: |
|
||||||
|
echo "## 🚀 Companion Agent Build Complete" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "**Version:** ${{ steps.version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "**Commit:** ${GITHUB_SHA:0:7}" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "### Built Artifacts:" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "- ✅ Linux AMD64 ($(stat -f%z companion-agent/bin/corrosion-companion-linux-amd64 2>/dev/null || stat -c%s companion-agent/bin/corrosion-companion-linux-amd64) bytes)" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "- ✅ Windows AMD64 ($(stat -f%z companion-agent/bin/corrosion-companion-windows-amd64.exe 2>/dev/null || stat -c%s companion-agent/bin/corrosion-companion-windows-amd64.exe) bytes)" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "- ✅ SHA256 checksums" >> $GITHUB_STEP_SUMMARY
|
||||||
Reference in New Issue
Block a user