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 5dee785
Showing 1 changed file with 79 additions and 0 deletions.
79 changes: 79 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
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

# Set up Go environment for Kubebuilder projects
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: '1.22'

# Install Kubebuilder tools, specifically Kustomize v5.5.0 and controller-gen
- name: Install Kubebuilder tools
run: |
go install sigs.k8s.io/controller-tools/cmd/[email protected]
go install sigs.k8s.io/kustomize/kustomize/[email protected]
# Run `make install` to install Kubebuilder CLI
- name: Build and install Kubebuilder CLI
run: make install

# Build and prepare resources in each sample project under testdata
- name: Build sample projects in testdata
run: |
for dir in testdata/*; do
if [ -d "$dir" ]; then
(cd "$dir" && make all)
fi
done
# Initialize CodeQL analysis for the specified languages
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}

# Manual build mode for Go in generated projects only, if autobuild is insufficient
- if: matrix.language == 'go' && matrix.build-mode == 'manual'
shell: bash
run: |
for dir in testdata/*; do
if [ -d "$dir" ]; then
(cd "$dir" && 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 5dee785

Please sign in to comment.