gitlink-cli/.github/workflows/release.yml

103 lines
3.0 KiB
YAML

name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- uses: actions/setup-node@v4
with:
node-version: '20'
registry-url: 'https://registry.npmjs.org'
- name: Build binaries
run: |
mkdir -p dist
VERSION=${GITHUB_REF#refs/tags/v}
for pair in "darwin amd64" "darwin arm64" "linux amd64" "linux arm64" "windows amd64" "windows arm64"; do
GOOS=$(echo $pair | cut -d' ' -f1)
GOARCH=$(echo $pair | cut -d' ' -f2)
echo "Building ${GOOS}-${GOARCH}..."
EXT=""
if [ "$GOOS" = "windows" ]; then EXT=".exe"; fi
GOOS=$GOOS GOARCH=$GOARCH go build -ldflags "-s -w -X 'github.com/gitlink-org/gitlink-cli/cmd.Version=${VERSION}'" -o "dist/gitlink-cli${EXT}" .
cd dist
if [ "$GOOS" = "windows" ]; then
zip "gitlink-cli_${VERSION}_${GOOS}_${GOARCH}.zip" "gitlink-cli${EXT}"
else
tar -czf "gitlink-cli_${VERSION}_${GOOS}_${GOARCH}.tar.gz" "gitlink-cli${EXT}"
fi
rm "gitlink-cli${EXT}"
cd ..
done
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: |
dist/*.tar.gz
dist/*.zip
generate_release_notes: true
- name: Publish npm package
run: |
VERSION=${GITHUB_REF#refs/tags/v}
mkdir -p npm-pkg/bin npm-pkg/scripts npm-pkg/skills
cp -r skills/* npm-pkg/skills/
cp npm/bin/cli.js npm-pkg/bin/
cp npm/bin/install-skills.js npm-pkg/bin/
cp npm/scripts/install.js npm-pkg/scripts/
cp README.md npm-pkg/
cat > npm-pkg/package.json << PKGEOF
{
"name": "@gitlink-ai/cli",
"version": "${VERSION}",
"description": "GitLink CLI — 面向 AI Agent 的 GitLink 命令行工具",
"main": "bin/cli.js",
"bin": {
"gitlink-cli": "./bin/cli.js",
"gitlink-cli-install-skills": "./bin/install-skills.js"
},
"scripts": {
"postinstall": "node scripts/install.js"
},
"files": [
"bin/",
"scripts/",
"skills/",
"README.md",
"package.json"
],
"repository": {
"type": "git",
"url": "https://www.gitlink.org.cn/Gitlink/gitlink-cli.git"
},
"keywords": ["gitlink", "cli", "ai-agent", "skills"],
"author": "GitLink <support@gitlink.org.cn>",
"license": "MulanPSL-2.0"
}
PKGEOF
cd npm-pkg
npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}