diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 488317edf..df64e196b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -45,6 +45,9 @@ on: - 'archive/r/ruby/*.rb' - 'archive/s/swift/*.swift' - 'archive/t/typescript/*.ts' + schedule: + # Run every Thursday at 4:53 UTC (randomly chosen) + - cron: '53 4 * * 6' jobs: # We need this job to check if changed files should trigger analysis @@ -77,7 +80,7 @@ jobs: - name: Get CodeQL Languages id: set-matrix run: | - matrix=$(python scripts/get_codeql_languages.py ${{ steps.changed-files.outputs.all_changed_files }}) + matrix=$(python scripts/get_codeql_languages.py --event ${{ github.event_name}} ${{ steps.changed-files.outputs.all_changed_files }}) echo "${matrix}" echo "matrix={\"include\": ${matrix}}" >> $GITHUB_OUTPUT diff --git a/scripts/get_codeql_languages.py b/scripts/get_codeql_languages.py index 423731482..97dbc9c2e 100644 --- a/scripts/get_codeql_languages.py +++ b/scripts/get_codeql_languages.py @@ -40,12 +40,16 @@ class LanguageInfo: def main(): parser = argparse.ArgumentParser() + parser.add_argument("--event", help="GitHub event") parser.add_argument("files_changed", nargs="*", help="files that have changed") parsed_args = parser.parse_args() languages: Set[LanguageInfo] = set() language_paths: DefaultDict[str, Set[str]] = defaultdict(set) language_paths_ignore: DefaultDict[str, Set[str]] = defaultdict(set) - if set(parsed_args.files_changed) & ALL_CODEQL_LANGUAGES_FILES: + if ( + parsed_args.event == "schedule" + or set(parsed_args.files_changed) & ALL_CODEQL_LANGUAGES_FILES + ): for glob, language_info in CODEQL_LANGUAGES.items(): languages.add(language_info) language_paths[language_info.language].add(glob)