Skip to content

Fixed command

Fixed command #166

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-22.04
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: 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 binary
run: |
mkdir -p release
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/${{ steps.vars.outputs.binary_name }} \
./supernode
chmod +x release/${{ steps.vars.outputs.binary_name }}
- 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-22.04
timeout-minutes: 15
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get tag information
id: tag_info
run: |
TAG_NAME=${GITHUB_REF#refs/tags/}
echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT
TAG_MESSAGE=$(git tag -l --format='%(contents)' $TAG_NAME)
if [ -z "$TAG_MESSAGE" ]; then
TAG_MESSAGE="Release $TAG_NAME"
fi
TAG_MESSAGE="${TAG_MESSAGE//'%'/'%25'}"
TAG_MESSAGE="${TAG_MESSAGE//$'\n'/'%0A'}"
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")
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 Release Version
run: |
mkdir -p release
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/${{ steps.vars.outputs.binary_name }} \
./supernode
chmod +x 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/*
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:
1. Download: `supernode-linux-amd64`
2. Make executable: `chmod +x supernode-linux-amd64`
3. Run: `./supernode-linux-amd64`
token: ${{ secrets.GITHUB_TOKEN }}