Merge branch 'latest_tag' into SecureKeyX_Account_Check #9
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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: Setup Go and dependencies | |
| uses: ./.github/actions/setup-env | |
| - 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: 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: Setup Go and dependencies | |
| uses: ./.github/actions/setup-env | |
| - name: Prepare Release Variables | |
| id: vars | |
| run: | | |
| repo_name=${GITHUB_REPOSITORY##*/} | |
| 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" \ | |
| -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 }} |