Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 13 additions & 87 deletions .github/workflows/build&release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,82 +19,28 @@ permissions:
jobs:
build:
runs-on: ubuntu-22.04
timeout-minutes: 30

timeout-minutes: 10
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Configure Git Safe Directory
run: git config --global --add safe.directory $GITHUB_WORKSPACE


- name: Setup Go and dependencies
uses: ./.github/actions/setup-env

- name: Prepare Build Variables
id: vars
run: |
# Prepare version information
VERSION=$(git describe --tags --always --dirty 2>/dev/null || echo "dev")
GIT_COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
BUILD_TIME=$(date -u '+%Y-%m-%d_%H:%M:%S')

echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "git_commit=$GIT_COMMIT" >> $GITHUB_OUTPUT
echo "build_time=$BUILD_TIME" >> $GITHUB_OUTPUT
echo "binary_name=supernode-linux-amd64" >> $GITHUB_OUTPUT


- name: Build binaries
run: |
mkdir -p release

# Build supernode
CGO_ENABLED=1 \
GOOS=linux \
GOARCH=amd64 \
go build \
-trimpath \
-ldflags="-s -w \
-X github.com/LumeraProtocol/supernode/supernode/cmd.Version=${{ steps.vars.outputs.version }} \
-X github.com/LumeraProtocol/supernode/supernode/cmd.GitCommit=${{ steps.vars.outputs.git_commit }} \
-X github.com/LumeraProtocol/supernode/supernode/cmd.BuildTime=${{ steps.vars.outputs.build_time }}" \
-o release/supernode \
./supernode
CGO_ENABLED=1 go build -trimpath -o /tmp/supernode ./supernode

# Build sn-manager
# Build sn-manager
cd sn-manager
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64 \
go build \
-trimpath \
-ldflags="-s -w \
-X main.Version=${{ steps.vars.outputs.version }} \
-X main.GitCommit=${{ steps.vars.outputs.git_commit }} \
-X main.BuildTime=${{ steps.vars.outputs.build_time }}" \
-o ../release/sn-manager \
.
cd ..

chmod +x release/supernode release/sn-manager
CGO_ENABLED=0 go build -trimpath -o /tmp/sn-manager .

# Create tarball
cd release
tar -czf ${{ steps.vars.outputs.binary_name }}.tar.gz supernode sn-manager
cd ..

cp release/supernode release/${{ steps.vars.outputs.binary_name }}

- name: Fix Release Directory Permissions
run: |
sudo chown -R $USER:$USER release/
sudo chmod -R 755 release/
echo "✅ Build successful"

release:
needs: build
if: startsWith(github.ref, 'refs/tags/v') && (github.ref_type == 'tag') && (contains(github.ref, '.') && (contains(github.ref, 'v')))
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-22.04
timeout-minutes: 15

Expand All @@ -119,17 +65,14 @@ jobs:
TAG_MESSAGE="${TAG_MESSAGE//$'\r'/'%0D'}"
echo "tag_message=$TAG_MESSAGE" >> $GITHUB_OUTPUT

- name: Configure Git Safe Directory
run: git config --global --add safe.directory $GITHUB_WORKSPACE

- name: Setup Go and dependencies
uses: ./.github/actions/setup-env

- name: Prepare Release Variables
id: vars
run: |
VERSION=${{ steps.tag_info.outputs.tag_name }}
GIT_COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
GIT_COMMIT=$(git rev-parse --short HEAD)
BUILD_TIME=$(date -u '+%Y-%m-%d_%H:%M:%S')

echo "version=$VERSION" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -178,36 +121,19 @@ jobs:

cp release/supernode release/${{ steps.vars.outputs.binary_name }}

- name: Fix Release Directory Permissions
run: |
sudo chown -R $USER:$USER release/
sudo chmod -R 755 release/

- name: Publish the Release
uses: softprops/action-gh-release@v0.1.15
if: success()
with:
tag_name: ${{ steps.tag_info.outputs.tag_name }}
files: release/*
files: |
release/${{ steps.vars.outputs.binary_name }}.tar.gz
release/${{ steps.vars.outputs.binary_name }}
generate_release_notes: true
body: |
${{ steps.tag_info.outputs.tag_message }}

Version: ${{ steps.vars.outputs.version }}
Git Commit: ${{ steps.vars.outputs.git_commit }}
Build Time: ${{ steps.vars.outputs.build_time }}

## Installation

### Option 1: Download the tarball (includes both binaries)
1. Download: `supernode-linux-amd64.tar.gz`
2. Extract: `tar -xzf supernode-linux-amd64.tar.gz`
3. Make executable: `chmod +x supernode sn-manager`
4. Run supernode: `./supernode`
5. Run sn-manager: `./sn-manager`

### Option 2: Download supernode binary only
1. Download: `supernode-linux-amd64`
2. Make executable: `chmod +x supernode-linux-amd64`
3. Run: `./supernode-linux-amd64`
token: ${{ secrets.GITHUB_TOKEN }}
28 changes: 14 additions & 14 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,23 +56,23 @@ jobs:
- name: Run cascade e2e tests
run: make test-cascade

sn-manager-e2e-tests:
name: sn-manager-e2e-tests
runs-on: ubuntu-latest
# sn-manager-e2e-tests:
# name: sn-manager-e2e-tests
# runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4
# steps:
# - name: Checkout code
# uses: actions/checkout@v4

- name: Setup Go and system deps
uses: ./.github/actions/setup-env
# - name: Setup Go and system deps
# uses: ./.github/actions/setup-env


- name: Install Lumera
run: make install-lumera
# - name: Install Lumera
# run: make install-lumera

- name: Setup Supernode environments
run: make setup-supernodes
# - name: Setup Supernode environments
# run: make setup-supernodes

# - name: Run sn-manager e2e tests
# run: make test-sn-manager
# - name: Run sn-manager e2e tests
# run: make test-sn-manager