add goSec, go-lint, update actions #2

Merged
lerentis merged 4 commits from add-gosec-scan into main 2025-10-09 15:47:41 +00:00
5 changed files with 53 additions and 13 deletions

View File

@@ -10,13 +10,21 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Setup Go - name: Setup Go
uses: actions/setup-go@v5 uses: actions/setup-go@v6
with: with:
go-version: '1.24.x' go-version: '1.24.x'
- name: golangci-lint
uses: golangci/golangci-lint-action@v8
with:
version: v2.1
- name: Test with the Go CLI - name: Test with the Go CLI
run: go test ./... run: go test ./... -v
- name: Run Gosec Security Scanner
uses: securego/gosec@master
with:
args: ./...
Build_Image: Build_Image:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@@ -46,4 +54,4 @@ jobs:
# - name: Sign the published Docker image # - name: Sign the published Docker image
# env: # env:
# COSIGN_EXPERIMENTAL: "true" # COSIGN_EXPERIMENTAL: "true"
# run: cosign sign lerentis/canada-kaktus:${{ github.sha }}@${{ steps.build-and-push.outputs.digest }} # run: cosign sign lerentis/canada-kaktus:${{ github.sha }}@${{ steps.build-and-push.outputs.digest }}

View File

@@ -7,13 +7,21 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Setup Go - name: Setup Go
uses: actions/setup-go@v5 uses: actions/setup-go@v6
with: with:
go-version: '1.24.x' go-version: '1.24.x'
- name: golangci-lint
uses: golangci/golangci-lint-action@v8
with:
version: v2.1
- name: Test with the Go CLI - name: Test with the Go CLI
run: go test ./... run: go test ./... -v
- name: Run Gosec Security Scanner
uses: securego/gosec@master
with:
args: ./...
Build_Image: Build_Image:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:

View File

@@ -7,13 +7,21 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Setup Go - name: Setup Go
uses: actions/setup-go@v5 uses: actions/setup-go@v6
with: with:
go-version: '1.24.x' go-version: '1.24.x'
- name: golangci-lint
uses: golangci/golangci-lint-action@v8
with:
version: v2.1
- name: Test with the Go CLI - name: Test with the Go CLI
run: go test ./... run: go test ./... -v
- name: Run Gosec Security Scanner
uses: securego/gosec@master
with:
args: ./...
Build_Image: Build_Image:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@@ -43,4 +51,4 @@ jobs:
# - name: Sign the published Docker image # - name: Sign the published Docker image
# env: # env:
# COSIGN_EXPERIMENTAL: "true" # COSIGN_EXPERIMENTAL: "true"
# run: cosign sign lerentis/canada-kaktus:${{ github.event.release.tag_name }}@${{ steps.build-and-push.outputs.digest }} # run: cosign sign lerentis/canada-kaktus:${{ github.event.release.tag_name }}@${{ steps.build-and-push.outputs.digest }}

View File

@@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"sync" "sync"
"time"
"github.com/gorilla/mux" "github.com/gorilla/mux"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
@@ -36,7 +37,16 @@ func (hs *HealthServer) Start() {
r := mux.NewRouter() r := mux.NewRouter()
r.Use(mux.CORSMethodMiddleware(r)) r.Use(mux.CORSMethodMiddleware(r))
r.HandleFunc("/health", hs.sendHealth).Methods(http.MethodGet) r.HandleFunc("/health", hs.sendHealth).Methods(http.MethodGet)
err := http.ListenAndServe("0.0.0.0:8080", r)
server := &http.Server{
Addr: "0.0.0.0:8080",
Handler: r,
ReadTimeout: 15 * time.Second,
WriteTimeout: 15 * time.Second,
IdleTimeout: 60 * time.Second,
}
err := server.ListenAndServe()
if err != nil { if err != nil {
log.WithFields(log.Fields{ log.WithFields(log.Fields{
"Caller": "HealthServer.Start", "Caller": "HealthServer.Start",

View File

@@ -4,6 +4,7 @@ import (
"net/http" "net/http"
"strings" "strings"
"testing" "testing"
"time"
) )
func TestHealth(t *testing.T) { func TestHealth(t *testing.T) {
@@ -11,14 +12,19 @@ func TestHealth(t *testing.T) {
go func() { go func() {
hs.Start() hs.Start()
}() }()
// Give the server time to start up
time.Sleep(100 * time.Millisecond)
request, _ := http.NewRequest(http.MethodGet, "http://localhost:8080/health", strings.NewReader("")) request, _ := http.NewRequest(http.MethodGet, "http://localhost:8080/health", strings.NewReader(""))
resp, err := http.DefaultClient.Do(request) resp, err := http.DefaultClient.Do(request)
if err != nil { if err != nil {
t.Errorf("Health endpoint did not start: %v", err) t.Errorf("Health endpoint did not start: %v", err)
return
} }
if resp.StatusCode != http.StatusOK { if resp != nil && resp.StatusCode != http.StatusOK {
t.Errorf("Bad response from health endpoint. Want: %d, got %d", http.StatusOK, resp.StatusCode) t.Errorf("Bad response from health endpoint. Want: %d, got %d", http.StatusOK, resp.StatusCode)
} }
} }