diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 7bd6170..9cf96ac 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -9,27 +9,28 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: - go-version: "^1" + go-version: "stable" - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 + - name: Setup golangci-lint - uses: golangci/golangci-lint-action@v6 + uses: golangci/golangci-lint-action@v9 with: - version: latest + version: v2.6 args: --verbose - - uses: hadolint/hadolint-action@v3.1.0 + - uses: hadolint/hadolint-action@v3.3.0 name: hadolint for Dockerfile with: - dockerfile: docker/Dockerfile + dockerfile: Dockerfile - test: + testing: strategy: matrix: os: [ubuntu-latest] - go: [1.22, 1.23] + go: ["1.25"] include: - os: ubuntu-latest go-build: ~/.cache/go-build @@ -40,12 +41,12 @@ jobs: GOPROXY: https://proxy.golang.org steps: - name: Set up Go ${{ matrix.go }} - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: ${{ matrix.go }} - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: ${{ github.ref }} @@ -59,9 +60,9 @@ jobs: ${{ runner.os }}-go- - name: Run Tests run: | - go test -v -covermode=atomic -coverprofile=coverage.out + go test -race -cover -coverprofile=coverage.out ./... - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: flags: ${{ matrix.os }},go-${{ matrix.go }} diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml new file mode 100644 index 0000000..942f676 --- /dev/null +++ b/.github/workflows/trivy.yml @@ -0,0 +1,56 @@ +name: Trivy Security Scan + +on: + push: + branches: + - master + pull_request: + branches: + - master + schedule: + # Run daily at 00:00 UTC + - cron: "0 0 * * *" + workflow_dispatch: # Allow manual trigger + +permissions: + contents: read + security-events: write # Required for uploading SARIF results + +jobs: + trivy-scan: + name: Trivy Security Scan + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Run Trivy vulnerability scanner (source code) + uses: aquasecurity/trivy-action@0.33.1 + with: + scan-type: "fs" + scan-ref: "." + scanners: "vuln,secret,misconfig" + format: "sarif" + output: "trivy-results.sarif" + severity: "CRITICAL,HIGH,MEDIUM" + ignore-unfixed: true + + - name: Upload Trivy results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v4 + if: always() + with: + sarif_file: "trivy-results.sarif" + + - name: Run Trivy scanner (table output for logs) + uses: aquasecurity/trivy-action@0.33.1 + if: always() + with: + scan-type: "fs" + scan-ref: "." + scanners: "vuln,secret,misconfig" + format: "table" + severity: "CRITICAL,HIGH,MEDIUM" + ignore-unfixed: true + exit-code: "1"