mirror of
https://github.com/shankar0123/certctl.git
synced 2026-06-08 11:08:54 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f276d8c069 | |||
| 3247fbcf92 | |||
| c1aa0ebfa6 | |||
| 77b0452a2f |
@@ -0,0 +1,81 @@
|
|||||||
|
name: CodeQL
|
||||||
|
|
||||||
|
# Public-facing SAST baseline that complements the existing security-deep-scan
|
||||||
|
# workflow (gosec, osv-scanner, trivy, ZAP, semgrep, schemathesis, nuclei,
|
||||||
|
# testssl) with cross-file Go and JavaScript dataflow analysis. Results land
|
||||||
|
# in the repository's Security → Code scanning tab as a public signal — any
|
||||||
|
# operator/security team auditing certctl can see the scan history and
|
||||||
|
# triage state without asking.
|
||||||
|
#
|
||||||
|
# Why CodeQL in addition to gosec:
|
||||||
|
# - gosec is single-file pattern matching (catches obvious issues like
|
||||||
|
# `os/exec.Command(userInput)`); CodeQL does interprocedural taint
|
||||||
|
# tracking (catches the same issue when the userInput is laundered
|
||||||
|
# through several function calls or struct fields).
|
||||||
|
# - GitHub-native; no third-party SaaS license gate (works for BSL 1.1
|
||||||
|
# and other source-available licenses, unlike Aikido / Snyk / SonarCloud
|
||||||
|
# free tiers which require OSI-approved licenses).
|
||||||
|
# - SARIF results auto-deduplicate and persist on PRs, so reviewers see
|
||||||
|
# "this PR introduces N new findings" rather than re-running ad hoc.
|
||||||
|
#
|
||||||
|
# Findings that are intentional (e.g., the SSH connector's
|
||||||
|
# InsecureIgnoreHostKey, ACME DNS solver's intentional shell-out to operator-
|
||||||
|
# supplied scripts) get suppressed via inline `// codeql[<rule-id>]`
|
||||||
|
# comments OR via a `.github/codeql/codeql-config.yml` query-pack tweak —
|
||||||
|
# document the rationale in the same commit that adds the suppression so
|
||||||
|
# the public scan-tab readers see the threat-model justification.
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [master]
|
||||||
|
pull_request:
|
||||||
|
branches: [master]
|
||||||
|
schedule:
|
||||||
|
# Weekly Sunday 06:00 UTC, in addition to push/PR coverage. Catches
|
||||||
|
# rule-pack updates from CodeQL upstream (their Go/JS rulesets ship
|
||||||
|
# new queries on a roughly-monthly cadence).
|
||||||
|
- cron: '0 6 * * 0'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write # SARIF upload to GitHub code scanning
|
||||||
|
actions: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: Analyze (${{ matrix.language }})
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 30
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
language: [go, javascript-typescript]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
if: matrix.language == 'go'
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
# Match ci.yml + release.yml + security-deep-scan.yml.
|
||||||
|
go-version: '1.25.9'
|
||||||
|
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v3
|
||||||
|
with:
|
||||||
|
languages: ${{ matrix.language }}
|
||||||
|
# Use the security-and-quality query suite — security finds plus
|
||||||
|
# maintainability/correctness issues that the smaller security-extended
|
||||||
|
# suite skips. Comparable scope to what Aikido / SonarCloud run.
|
||||||
|
queries: security-and-quality
|
||||||
|
|
||||||
|
- name: Autobuild
|
||||||
|
uses: github/codeql-action/autobuild@v3
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v3
|
||||||
|
with:
|
||||||
|
category: "/language:${{ matrix.language }}"
|
||||||
|
# SARIF upload is implicit (and is what populates the Security tab).
|
||||||
@@ -334,75 +334,21 @@ jobs:
|
|||||||
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"
|
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Create release with notes
|
- name: Create release with notes
|
||||||
|
# generate_release_notes: true asks GitHub to auto-generate the
|
||||||
|
# "What's Changed" section from PRs+commits between this tag and the
|
||||||
|
# previous one. The hardcoded body below appends a per-release
|
||||||
|
# supply-chain verification block (Cosign / SLSA / SBOM steps with the
|
||||||
|
# current version baked into the commands) plus a single link to the
|
||||||
|
# README's Quick Start section for install/upgrade instructions.
|
||||||
|
# We deliberately do NOT duplicate install instructions here — the
|
||||||
|
# README is the source of truth for those, and inlining them in every
|
||||||
|
# release page produces the kind of "every release looks identical"
|
||||||
|
# noise that gives operators no signal about what actually changed.
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
generate_release_notes: true
|
generate_release_notes: true
|
||||||
body: |
|
body: |
|
||||||
## Installation
|
> **Install / upgrade:** see the [Quick Start section in the README](https://github.com/shankar0123/certctl/blob/master/README.md#quick-start) for Docker Compose, agent install, Helm, and binary download instructions.
|
||||||
|
|
||||||
### Quick Install (Linux/macOS)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -sSL https://raw.githubusercontent.com/shankar0123/certctl/master/install-agent.sh | bash
|
|
||||||
```
|
|
||||||
|
|
||||||
### Manual Binary Download
|
|
||||||
|
|
||||||
Download the appropriate binary for your OS and architecture:
|
|
||||||
|
|
||||||
- **Linux x86_64**: `certctl-agent-linux-amd64`
|
|
||||||
- **Linux ARM64**: `certctl-agent-linux-arm64`
|
|
||||||
- **macOS x86_64**: `certctl-agent-darwin-amd64`
|
|
||||||
- **macOS ARM64 (Apple Silicon)**: `certctl-agent-darwin-arm64`
|
|
||||||
|
|
||||||
Then make it executable and start the service:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
chmod +x certctl-agent-linux-amd64
|
|
||||||
sudo mv certctl-agent-linux-amd64 /usr/local/bin/certctl-agent
|
|
||||||
```
|
|
||||||
|
|
||||||
## Docker Images
|
|
||||||
|
|
||||||
Pull pre-built Docker images for server and agent:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker pull ghcr.io/shankar0123/certctl-server:${{ steps.version.outputs.VERSION }}
|
|
||||||
docker pull ghcr.io/shankar0123/certctl-agent:${{ steps.version.outputs.VERSION }}
|
|
||||||
```
|
|
||||||
|
|
||||||
Or use the latest tag:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker pull ghcr.io/shankar0123/certctl-server:latest
|
|
||||||
docker pull ghcr.io/shankar0123/certctl-agent:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
## Docker Compose Quick Start
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/shankar0123/certctl.git
|
|
||||||
cd certctl
|
|
||||||
cp deploy/.env.example deploy/.env
|
|
||||||
docker compose -f deploy/docker-compose.yml up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
## Server Binaries
|
|
||||||
|
|
||||||
Pre-compiled server binaries are also available for direct installation:
|
|
||||||
|
|
||||||
- **Linux x86_64**: `certctl-server-linux-amd64`
|
|
||||||
- **Linux ARM64**: `certctl-server-linux-arm64`
|
|
||||||
- **macOS x86_64**: `certctl-server-darwin-amd64`
|
|
||||||
- **macOS ARM64 (Apple Silicon)**: `certctl-server-darwin-arm64`
|
|
||||||
|
|
||||||
## CLI & MCP Server Binaries
|
|
||||||
|
|
||||||
The `certctl-cli` (REST API wrapper) and `certctl-mcp-server` (Model Context
|
|
||||||
Protocol bridge) binaries ship for all four platforms as well:
|
|
||||||
|
|
||||||
- `certctl-cli-{linux,darwin}-{amd64,arm64}`
|
|
||||||
- `certctl-mcp-server-{linux,darwin}-{amd64,arm64}`
|
|
||||||
|
|
||||||
## Verifying this release
|
## Verifying this release
|
||||||
|
|
||||||
@@ -463,15 +409,3 @@ jobs:
|
|||||||
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
|
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
|
||||||
"$IMAGE"
|
"$IMAGE"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Helm Chart
|
|
||||||
|
|
||||||
Deploy certctl to Kubernetes using Helm:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm repo add certctl https://github.com/shankar0123/certctl/tree/master/deploy/helm
|
|
||||||
helm repo update
|
|
||||||
helm install certctl certctl/certctl
|
|
||||||
```
|
|
||||||
|
|
||||||
See `deploy/helm/certctl/` for values customization.
|
|
||||||
|
|||||||
+29
-1436
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user