9 Commits

7 changed files with 82 additions and 3 deletions

View File

@@ -0,0 +1,54 @@
name: Release
on:
workflow_dispatch:
push:
tags:
- 'v*.*.*'
jobs:
release:
runs-on: ubuntu-latest
steps:
# 1. Checkout source code
- name: Checkout
uses: actions/checkout@v4
# 2. Setup Go environment
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24.5'
# 3. Build binary with Version injected
- name: Build binary
run: |
VERSION=${GITEA_REF_NAME}
echo "Building version $VERSION"
go mod tidy
go build -ldflags "-s -w -X main.Version=$VERSION" -o lab-ca .
# 4. Install the tea CLI
- name: Install tea CLI
run: go install code.gitea.io/tea@latest
# 5. Authenticate tea CLI
- name: Login to Gitea
run: |
tea login add --name ci --url $GITEA_URL --token $GITEA_TOKEN
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
GITEA_URL: ${{ secrets.GITEA_URL }}
# 6. Create or update release
- name: Create or update release
run: |
tea release create $GITEA_REF_NAME \
--title "$GITEA_REF_NAME" \
--note "Automated release for $GITEA_REF_NAME" || \
echo "Release already exists, skipping create."
# 7. Upload binary to the release
- name: Upload binary
run: tea release upload $GITEA_REF_NAME lab-ca

View File

@@ -221,6 +221,16 @@ The tool checks that SANs are valid for the selected certificate type(s). Certif
See `examples/example-certificates.hcl` for a more advanced provisioning file with templates and variables. See `examples/example-certificates.hcl` for a more advanced provisioning file with templates and variables.
## Building the Tool
The repository includes a `build.sh` script to build the CLI tool. It updates the version in `version.go` and builds the binary.
To ignore changes made to `version.go` in Git, you can run:
```bash
git update-index --assume-unchanged version.go
```
--- ---
## Notes ## Notes

View File

@@ -7,6 +7,9 @@ else
VERSION="dev" VERSION="dev"
fi fi
# Hardcode the version into main.go
sed -i '' "s/^var Version = .*/var Version = \"$VERSION\"/" version.go
if echo $VERSION | grep -q 'dirty$'; then if echo $VERSION | grep -q 'dirty$'; then
echo "Building in development mode, output directory is set to 'build'." echo "Building in development mode, output directory is set to 'build'."
OUTPUT_DIR=build OUTPUT_DIR=build
@@ -19,4 +22,5 @@ else
fi fi
# Build the Lab CA binary with version information # Build the Lab CA binary with version information
go build -ldflags "-X main.Version=$VERSION" -o $OUTPUT_DIR/lab-ca # go build -ldflags "-X main.Version=$VERSION" -o $OUTPUT_DIR/lab-ca
go build -o $OUTPUT_DIR/lab-ca

View File

@@ -0,0 +1,3 @@
#!/bin/bash
git update-index --assume-unchanged version.go

View File

@@ -7,8 +7,6 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
var Version = ""
// Global flags available to all commands // Global flags available to all commands
var overwrite bool var overwrite bool
var dryRun bool var dryRun bool

7
set-version.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
VERSION=$(git describe --tags --always --dirty 2>/dev/null || echo "dev")
# Allow git to track changes to version.go
git update-index --no-assume-unchanged version.go
# Hardcode the version into main.go
sed -i '' "s/^var Version = .*/var Version = \"$VERSION\"/" version.go

3
version.go Normal file
View File

@@ -0,0 +1,3 @@
package main
var Version = "dev"