mirror of
https://oauth2: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@github.com/m1ngsama/TNT.git
synced 2026-06-26 05:34:39 +08:00
255 lines
7.5 KiB
YAML
255 lines
7.5 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
|
|
jobs:
|
|
build:
|
|
name: Build ${{ matrix.target }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-24.04
|
|
target: linux-amd64
|
|
artifact: tnt-linux-amd64
|
|
ctl_artifact: tntctl-linux-amd64
|
|
- os: ubuntu-24.04-arm
|
|
target: linux-arm64
|
|
artifact: tnt-linux-arm64
|
|
ctl_artifact: tntctl-linux-arm64
|
|
- os: macos-15-intel
|
|
target: darwin-amd64
|
|
artifact: tnt-darwin-amd64
|
|
ctl_artifact: tntctl-darwin-amd64
|
|
- os: macos-15
|
|
target: darwin-arm64
|
|
artifact: tnt-darwin-arm64
|
|
ctl_artifact: tntctl-darwin-arm64
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Verify release tag matches source version
|
|
run: scripts/check_release_ref.sh "${GITHUB_REF_NAME}"
|
|
|
|
- name: Install dependencies (Ubuntu)
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libssh-dev
|
|
|
|
- name: Install dependencies (macOS)
|
|
if: runner.os == 'macOS'
|
|
run: |
|
|
brew install libssh
|
|
|
|
- name: Run release preflight
|
|
run: make release-check
|
|
|
|
- name: Build release binary
|
|
run: make release
|
|
|
|
- name: Verify artifact architecture
|
|
run: |
|
|
file tnt
|
|
file tntctl
|
|
case "${{ matrix.target }}" in
|
|
linux-amd64)
|
|
file tnt | grep -E 'ELF 64-bit.*x86-64'
|
|
file tntctl | grep -E 'ELF 64-bit.*x86-64'
|
|
;;
|
|
linux-arm64)
|
|
file tnt | grep -E 'ELF 64-bit.*(aarch64|ARM aarch64)'
|
|
file tntctl | grep -E 'ELF 64-bit.*(aarch64|ARM aarch64)'
|
|
;;
|
|
darwin-amd64)
|
|
file tnt | grep -E 'Mach-O 64-bit.*x86_64'
|
|
file tntctl | grep -E 'Mach-O 64-bit.*x86_64'
|
|
;;
|
|
darwin-arm64)
|
|
file tnt | grep -E 'Mach-O 64-bit.*arm64'
|
|
file tntctl | grep -E 'Mach-O 64-bit.*arm64'
|
|
;;
|
|
esac
|
|
|
|
- name: Rename binary
|
|
run: |
|
|
mv tnt ${{ matrix.artifact }}
|
|
mv tntctl ${{ matrix.ctl_artifact }}
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.artifact }}
|
|
path: |
|
|
${{ matrix.artifact }}
|
|
${{ matrix.ctl_artifact }}
|
|
|
|
source-archive:
|
|
name: Source archive
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Verify release tag matches source version
|
|
run: scripts/check_release_ref.sh "${GITHUB_REF_NAME}"
|
|
|
|
- name: Build source archive
|
|
run: |
|
|
archive=$(scripts/package_source_archive.sh "${GITHUB_REF_NAME}" dist)
|
|
sha256sum "$archive"
|
|
|
|
- name: Upload source archive
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: tnt-chat-source
|
|
path: dist/tnt-chat-v*-source.tar.gz
|
|
|
|
artifact-gate:
|
|
name: Release artifact gate
|
|
needs: [build, source-archive]
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Verify release tag matches source version
|
|
run: scripts/check_release_ref.sh "${GITHUB_REF_NAME}"
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./artifacts
|
|
|
|
- name: Verify and package release assets
|
|
run: scripts/package_release_assets.sh ./artifacts ./dist/release-assets
|
|
|
|
- name: Upload release asset bundle
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-assets
|
|
path: dist/release-assets/*
|
|
|
|
release:
|
|
needs: [artifact-gate, source-archive]
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Verify release tag matches source version
|
|
run: scripts/check_release_ref.sh "${GITHUB_REF_NAME}"
|
|
|
|
- name: Download release asset bundle
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: release-assets
|
|
path: ./release-assets
|
|
|
|
- name: Verify release checksums
|
|
run: |
|
|
cd release-assets
|
|
sha256sum -c checksums.txt
|
|
cat checksums.txt
|
|
|
|
- name: Create Release
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
files: |
|
|
release-assets/*
|
|
body: |
|
|
## Installation
|
|
|
|
Install the libssh runtime before running TNT:
|
|
```bash
|
|
# Ubuntu/Debian
|
|
sudo apt install libssh-4
|
|
|
|
# Arch
|
|
sudo pacman -S libssh
|
|
|
|
# macOS
|
|
brew install libssh
|
|
```
|
|
|
|
Download the binary for your platform:
|
|
|
|
**Linux AMD64:**
|
|
```bash
|
|
curl -LO https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/tnt-linux-amd64
|
|
curl -LO https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/tntctl-linux-amd64
|
|
chmod +x tnt-linux-amd64
|
|
chmod +x tntctl-linux-amd64
|
|
sudo mv tnt-linux-amd64 /usr/local/bin/tnt
|
|
sudo mv tntctl-linux-amd64 /usr/local/bin/tntctl
|
|
```
|
|
|
|
**Linux ARM64:**
|
|
```bash
|
|
curl -LO https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/tnt-linux-arm64
|
|
curl -LO https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/tntctl-linux-arm64
|
|
chmod +x tnt-linux-arm64
|
|
chmod +x tntctl-linux-arm64
|
|
sudo mv tnt-linux-arm64 /usr/local/bin/tnt
|
|
sudo mv tntctl-linux-arm64 /usr/local/bin/tntctl
|
|
```
|
|
|
|
**macOS Intel:**
|
|
```bash
|
|
curl -LO https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/tnt-darwin-amd64
|
|
curl -LO https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/tntctl-darwin-amd64
|
|
chmod +x tnt-darwin-amd64
|
|
chmod +x tntctl-darwin-amd64
|
|
sudo mv tnt-darwin-amd64 /usr/local/bin/tnt
|
|
sudo mv tntctl-darwin-amd64 /usr/local/bin/tntctl
|
|
```
|
|
|
|
**macOS Apple Silicon:**
|
|
```bash
|
|
curl -LO https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/tnt-darwin-arm64
|
|
curl -LO https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/tntctl-darwin-arm64
|
|
chmod +x tnt-darwin-arm64
|
|
chmod +x tntctl-darwin-arm64
|
|
sudo mv tnt-darwin-arm64 /usr/local/bin/tnt
|
|
sudo mv tntctl-darwin-arm64 /usr/local/bin/tntctl
|
|
```
|
|
|
|
**Verify checksums:**
|
|
```bash
|
|
curl -LO https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/checksums.txt
|
|
|
|
# Linux
|
|
sha256sum -c checksums.txt --ignore-missing
|
|
|
|
# macOS
|
|
for f in tnt-* tntctl-* tnt-chat-*-source.tar.gz; do
|
|
grep " $f$" checksums.txt | shasum -a 256 -c -
|
|
done
|
|
```
|
|
|
|
The release also includes `tnt-chat-${{ github.ref_name }}-source.tar.gz`
|
|
for package-manager recipes. Verify it with the same `checksums.txt`
|
|
before updating Arch, Homebrew, Debian, Ubuntu, or container package
|
|
metadata.
|
|
|
|
## What's Changed
|
|
See [docs/CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ github.ref_name }}/docs/CHANGELOG.md)
|
|
draft: true
|
|
prerelease: false
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|