Skip to content

Commit

Permalink
Add GitHub workflow to scan project with CodeQL
Browse files Browse the repository at this point in the history
- Set up CodeQL analysis workflow to scan both the Kubebuilder CLI and generated projects in 'testdata'.
- Run 'make install' in the root directory to build and install the Kubebuilder CLI as part of the setup.
- For sample projects in 'testdata' (e.g., project-v4, project-v4-multigroup, and project-v4-with-plugins), add a step to run 'make all' to ensure all resources are generated and ready for analysis.
- Configure the manual build mode for Go projects in 'testdata' to run 'make manifests' and 'make build' if autobuild is insufficient.
  • Loading branch information
camilamacedo86 committed Oct 30, 2024
1 parent f7a02ad commit 4c80737
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: "CodeQL Advanced"

on:
# We are checking master and book-v4 because book-v4 has always the code
# from the latest release
push:
branches: ["master", "book-v4"]
pull_request:
branches: ["master", "book-v4"]
schedule:
- cron: '30 20 * * 1' # Runs a periodic scan every Monday at 8:30 PM

jobs:
analyze:
name: Analyze (${{ matrix.language }})
runs-on: ubuntu-latest
permissions:
security-events: write
packages: read
actions: read
contents: read

strategy:
fail-fast: false
matrix:
include:
- language: go
build-mode: autobuild

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: '1.22'

- name: Install Kubebuilder tools
run: |
go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.16.4
go install sigs.k8s.io/kustomize/kustomize/v5@v5.5.0
- name: Build and install Kubebuilder CLI
run: make install

# Adicione a etapa go mod tidy antes do make all
- name: Build sample projects in testdata
run: |
for dir in testdata/*; do
if [ -d "$dir" ]; then
(cd "$dir" && go mod tidy && make all)
fi
done
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}

- if: matrix.language == 'go' && matrix.build-mode == 'manual'
shell: bash
run: |
for dir in testdata/*; do
if [ -d "$dir" ]; then
(cd "$dir" && go mod tidy && echo 'Running manual build commands for Go in sample project' && make manifests && make build)
fi
done
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"

0 comments on commit 4c80737

Please sign in to comment.