Skip to content
Merged
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 102 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# Copyright 2026 The Apache Software Foundation
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This was adapted from the GitHub-generated template.
# See https://docs.github.com/en/code-security/how-tos/find-and-fix-code-vulnerabilities/configure-code-scanning/configuring-default-setup-for-code-scanning

name: "CodeQL Advanced"
Comment thread
ajfabbri marked this conversation as resolved.

on:
push:
branches: [ "trunk", "branch-*" ]
pull_request:
branches: [ "trunk", "branch-*" ]
Comment thread
ajfabbri marked this conversation as resolved.
paths:
- '.github/**'
schedule:
- cron: '22 4 * * 4'

jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. See:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
Comment thread
ajfabbri marked this conversation as resolved.
Outdated
permissions:
# required for all workflows
security-events: write
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think on.pull_request will limit this to read, so it does not take effect for PR

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the review. Hummm. The first commit was generated by GitHub. Do you have a link you can share?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if the workflow was triggered by a pull request event other than pull_request_target from a forked repository, and the Send write tokens to workflows from pull requests setting is not selected, the permissions are adjusted to change any write permissions to read only.

https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#how-permissions-are-calculated-for-a-workflow-job

Copy link
Copy Markdown
Contributor Author

@ajfabbri ajfabbri Apr 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yes, the Default config for CodeQL does not support fork pull requests, but the Advanced config is supposed to I think. Related: github/codeql#19698. This PR creates an Advanced config (i.e. we have an explicit codeql action .yml versus the push-putton enabling of Default CodeQL in the github repository settings.)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @pan3793 for helping test this with ajfabbri/hadoop/pull/3 Looks like it works ok. Did you have any problems on your side?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, it works in your forked repo, as you are the owner of that repo. but are you sure we are granted sufficient permission to enable it in apache/hadoop repo? I didn't find this option, which is mentioned by https://docs.github.com/en/code-security/how-tos/find-and-fix-code-vulnerabilities/configure-code-scanning/configuring-advanced-setup-for-code-scanning

Image

Copy link
Copy Markdown
Contributor Author

@ajfabbri ajfabbri Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it should work but we need to test. If we get stuck we can ask infra for help. Do you want to merge and try it out, or should I attempt testing on a branch upstream?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not against merging this (but maybe not in its current shape), and we can always revert if it does not work.

BTW, maybe the fastest way to check it is to contact the ASF infra team in Slack?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They are pretty busy but I started a thread here.

Can you please re-review this and let me know if you want particular changes? I left some of the generated comments that I felt would be useful for future authors.

Copy link
Copy Markdown
Contributor Author

@ajfabbri ajfabbri Apr 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BTW, I think this should just work (in my test advanced security is automatically enabled when you add a relevant workflow). Also note this comment which implies it is active for this apache repo: #8428 (comment)


# required to fetch internal or private CodeQL packs
packages: read

strategy:
fail-fast: false
matrix:
include:
# Initially only enabling scans for github actions
- language: actions
build-mode: none
# We should consider enabling these in the future:
#- language: c-cpp
# build-mode: autobuild
#- language: java-kotlin
# build-mode: none # This mode only analyzes Java. Set to 'autobuild' or 'manual' to include Kotlin.
#- language: javascript-typescript
# build-mode: none
Comment thread
ajfabbri marked this conversation as resolved.
Outdated

steps:
- name: Checkout repository
uses: actions/checkout@v4
Comment thread
ajfabbri marked this conversation as resolved.
Outdated

# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# Query details can be added here or in a config file.
# For more details on CodeQL's query packs, see:
# https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality

# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- name: Run manual build steps
if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{matrix.language}}"
Loading