Compare commits
10 Commits
v0.3.0
...
b0f0467346
Author | SHA1 | Date | |
---|---|---|---|
b0f0467346 | |||
028788f357 | |||
090fb4b423 | |||
eb5c5c0e43 | |||
8181ac8287 | |||
3fe908226d | |||
8a36588c62 | |||
90ce7edd28 | |||
11bed9c8b1 | |||
2fe228858f |
54
.gitea/workflows/release.yml
Normal file
54
.gitea/workflows/release.yml
Normal 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
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,6 +2,7 @@
|
|||||||
**/go.sum
|
**/go.sum
|
||||||
# Ignore the binary output
|
# Ignore the binary output
|
||||||
lab-ca*
|
lab-ca*
|
||||||
|
build
|
||||||
# Ignore any certificate files
|
# Ignore any certificate files
|
||||||
*.pem
|
*.pem
|
||||||
# Ignore CA configuration and certificate definitions.
|
# Ignore CA configuration and certificate definitions.
|
||||||
|
10
README.md
10
README.md
@@ -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
|
||||||
|
19
build.sh
19
build.sh
@@ -6,4 +6,21 @@ if [ $? -eq 0 ]; then
|
|||||||
else
|
else
|
||||||
VERSION="dev"
|
VERSION="dev"
|
||||||
fi
|
fi
|
||||||
go build -ldflags "-X main.Version=$VERSION" -o lab-ca
|
|
||||||
|
# Hardcode the version into main.go
|
||||||
|
sed -i '' "s/^var Version = .*/var Version = \"$VERSION\"/" version.go
|
||||||
|
|
||||||
|
if echo $VERSION | grep -q 'dirty$'; then
|
||||||
|
echo "Building in development mode, output directory is set to 'build'."
|
||||||
|
OUTPUT_DIR=build
|
||||||
|
|
||||||
|
# Make sure the output directory exists, create it if it is not
|
||||||
|
mkdir -p $OUTPUT_DIR
|
||||||
|
else
|
||||||
|
echo "Building with version: $VERSION"
|
||||||
|
OUTPUT_DIR=$GOHOME/bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build the Lab CA binary with version information
|
||||||
|
# go build -ldflags "-X main.Version=$VERSION" -o $OUTPUT_DIR/lab-ca
|
||||||
|
go build -o $OUTPUT_DIR/lab-ca
|
||||||
|
3
ignore-changes-to-version-go.sh
Executable file
3
ignore-changes-to-version-go.sh
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
git update-index --assume-unchanged version.go
|
14
main.go
14
main.go
@@ -7,8 +7,6 @@ import (
|
|||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Version = "dev"
|
|
||||||
|
|
||||||
// Global flags available to all commands
|
// Global flags available to all commands
|
||||||
var overwrite bool
|
var overwrite bool
|
||||||
var dryRun bool
|
var dryRun bool
|
||||||
@@ -225,7 +223,7 @@ func main() {
|
|||||||
Use: "version",
|
Use: "version",
|
||||||
Short: "Show version information",
|
Short: "Show version information",
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
fmt.Printf("lab-ca version: %s\n", Version)
|
fmt.Printf("lab-ca version: %s\n", getVersionDescription())
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
rootCmd.AddCommand(versionCmd)
|
rootCmd.AddCommand(versionCmd)
|
||||||
@@ -235,15 +233,23 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getVersionDescription() string {
|
||||||
|
if Version == "" {
|
||||||
|
return "no version information was compiled in"
|
||||||
|
}
|
||||||
|
return Version
|
||||||
|
}
|
||||||
|
|
||||||
func printMainHelp() {
|
func printMainHelp() {
|
||||||
fmt.Printf("lab-ca - Certificate Authority Utility\n")
|
fmt.Printf("lab-ca - Certificate Authority Utility\n")
|
||||||
fmt.Printf("Version: %s\n", Version)
|
fmt.Printf("Version: %s\n", getVersionDescription())
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
fmt.Println("Usage:")
|
fmt.Println("Usage:")
|
||||||
fmt.Println(" lab-ca <command> [options]")
|
fmt.Println(" lab-ca <command> [options]")
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
fmt.Println("Available commands:")
|
fmt.Println("Available commands:")
|
||||||
fmt.Println(" initca Generate a new CA certificate and key")
|
fmt.Println(" initca Generate a new CA certificate and key")
|
||||||
|
fmt.Println(" list List issued certificates")
|
||||||
fmt.Println(" issue Issue a new certificate")
|
fmt.Println(" issue Issue a new certificate")
|
||||||
fmt.Println(" provision Provision certificates from a batch file (HCL)")
|
fmt.Println(" provision Provision certificates from a batch file (HCL)")
|
||||||
fmt.Println(" revoke Revoke a certificate by name or serial number")
|
fmt.Println(" revoke Revoke a certificate by name or serial number")
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
NC='\033[0m' # No Color
|
NC='\033[0m' # No Color
|
||||||
LAB_CA="./lab-ca"
|
LAB_CA="build/lab-ca"
|
||||||
PROVISION_CONFIG="examples/example-certificates.hcl"
|
PROVISION_CONFIG="examples/example-certificates.hcl"
|
||||||
# Build and install
|
# Build and install
|
||||||
# Build script for lab-ca with version injection from git tag
|
# Build script for lab-ca with version injection from git tag
|
||||||
|
7
set-version.sh
Executable file
7
set-version.sh
Executable 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
3
version.go
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
var Version = "dev"
|
Reference in New Issue
Block a user