Skip to content

Add sdk default config (#65) #40

Add sdk default config (#65)

Add sdk default config (#65) #40

Workflow file for this run

name: Build and Release Workflow
on:
push:
paths-ignore:
- '**.md'
- 'docs/**'
- '.gitignore'
pull_request:
branches: [ master ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: write
packages: read
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 30
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: Get Go version from go.mod
id: go-version
run: |
GO_VERSION=$(grep -E '^go [0-9]+\.[0-9]+(\.[0-9]+)?$' go.mod | cut -d ' ' -f 2)
echo "Found go directive version: $GO_VERSION"
echo "version=$GO_VERSION" >> $GITHUB_OUTPUT
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: ${{ steps.go-version.outputs.version }}
cache: true
- name: Prepare Build Variables
id: vars
run: |
repo_name=${GITHUB_REPOSITORY##*/}
# For non-tag builds, use commit SHA as identifier
build_id=${GITHUB_SHA::7}
echo "build_id=$build_id" >> $GITHUB_OUTPUT
echo "binary_name=supernode-linux-amd64" >> $GITHUB_OUTPUT
# Debug output
echo "Output variables:"
echo "- build_id: $build_id"
echo "- binary_name: supernode-linux-amd64"
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libwebp-dev
# Fix for Lumera module checksum issue
go env -w GOPRIVATE=github.com/LumeraProtocol/lumera
- name: Build binary
run: |
mkdir -p release
CGO_ENABLED=1 \
GOOS=linux \
GOARCH=amd64 \
go build \
-trimpath \
-ldflags="-s -w" \
-o release/${{ steps.vars.outputs.binary_name }} \
./supernode/main.go
# Make binary executable
chmod +x release/${{ steps.vars.outputs.binary_name }}
# Show build results
ls -la release/
# Fix permissions
- name: Fix Release Directory Permissions
run: |
sudo chown -R $USER:$USER release/
sudo chmod -R 755 release/
release:
needs: build
if: startsWith(github.ref, 'refs/tags/v') && (github.ref_type == 'tag') && (contains(github.ref, '.') && (contains(github.ref, 'v')))
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get tag information
id: tag_info
run: |
# Get the tag name
TAG_NAME=${GITHUB_REF#refs/tags/}
echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT
# Get the tag message
TAG_MESSAGE=$(git tag -l --format='%(contents)' $TAG_NAME)
# If tag message is empty, use the tag name as message
if [ -z "$TAG_MESSAGE" ]; then
TAG_MESSAGE="Release $TAG_NAME"
fi
# Handle multiline tag messages
TAG_MESSAGE="${TAG_MESSAGE//'%'/'%25'}"
TAG_MESSAGE="${TAG_MESSAGE//$'\n'/'%0A'}"
TAG_MESSAGE="${TAG_MESSAGE//$'\r'/'%0D'}"
echo "tag_message=$TAG_MESSAGE" >> $GITHUB_OUTPUT
# Get the annotated tag commit
TAG_COMMIT=$(git rev-list -n 1 $TAG_NAME)
echo "tag_commit=$TAG_COMMIT" >> $GITHUB_OUTPUT
- name: Configure Git Safe Directory
run: git config --global --add safe.directory $GITHUB_WORKSPACE
- name: Get Go version from go.mod
id: go-version
run: |
GO_VERSION=$(grep -E '^go [0-9]+\.[0-9]+(\.[0-9]+)?$' go.mod | cut -d ' ' -f 2)
echo "Found go directive version: $GO_VERSION"
echo "version=$GO_VERSION" >> $GITHUB_OUTPUT
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: ${{ steps.go-version.outputs.version }}
cache: true
- name: Prepare Release Variables
id: vars
run: |
repo_name=${GITHUB_REPOSITORY##*/}
echo "binary_name=supernode-linux-amd64" >> $GITHUB_OUTPUT
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libwebp-dev
# Fix for Lumera module checksum issue
go env -w GOPRIVATE=github.com/LumeraProtocol/lumera
- name: Build Release Version
run: |
mkdir -p release
CGO_ENABLED=1 \
GOOS=linux \
GOARCH=amd64 \
go build \
-trimpath \
-ldflags="-s -w" \
-o release/${{ steps.vars.outputs.binary_name }} \
./supernode/main.go
# Make binary executable
chmod +x release/${{ steps.vars.outputs.binary_name }}
# Show build results
ls -la release/
# Fix permissions
- 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/*
generate_release_notes: true
body: |
${{ steps.tag_info.outputs.tag_message }}
Tag: ${{ steps.tag_info.outputs.tag_name }}
Commit: ${{ steps.tag_info.outputs.tag_commit }}
Installation:
1. Download the binary
2. Make it executable: `chmod +x supernode-linux-amd64`
3. Run the binary: `./supernode-linux-amd64`
token: ${{ secrets.GITHUB_TOKEN }}