Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
22 changes: 22 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Commits that changed file headers, copyright lines or version constants across
# the whole tree. They carry no behavioural change, so `git blame` should look
# through them to the commit that last touched the code itself.
#
# GitHub applies this file automatically. To use it locally, run once:
#
# git config blame.ignoreRevsFile .git-blame-ignore-revs
#
# Add a commit here only when it is mechanical and repository-wide. A commit
# that changes behaviour does not belong in this file, however large it is.

# 2024-01-29 Update copyright.
# 229 files
8c3b71832c6650e022cac3c824b8cda4b728248e

# 2026-03-05 Updated copyright headers and removed revision history
# 372 files
61b0b06c3eca2690c2b80cadb09321d1479bd013

# 2026-06-06 Added copyright headers to files missing them
# 143 files
30e1d491a92c03cf8f52d1ef28fd017eb9bfb268
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: weekly
target-branch: dev
93 changes: 84 additions & 9 deletions .github/workflows/regression_test.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,100 @@
# This is a basic workflow that is manually triggered

name: regression_test

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
workflow_dispatch:
push:
branches: [ master ]
branches: [dev, master]
pull_request:
branches: [ master ]
branches: [dev, master]

concurrency:
group: filex-regression-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "linux_job"
run_tests:
permissions:
contents: read
issues: read
checks: write
pull-requests: write
# GitHub validates the called workflow's skipped deploy job permissions.
# Its test job narrows its own token permissions.
pages: write
id-token: write
uses: eclipse-threadx/threadx/.github/workflows/regression_template.yml@80dfbe7797f4e03bb878f06b9557ddc4041cf212
with:
coverage_name: merged
coverage_thresholds: '99 100'
skip_deploy: true

win64:
runs-on: windows-2022
timeout-minutes: 90
permissions:
contents: read
steps:
- name: Check out FileX
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Check out ThreadX
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: eclipse-threadx/threadx
ref: 80dfbe7797f4e03bb878f06b9557ddc4041cf212
path: threadx
- name: Build Win64 configurations
timeout-minutes: 35
shell: pwsh
run: |
Start-Transcript -Path win64-build.log
try {
./scripts/build_fx.ps1 -Arch win64 -Configuration all -ThreadXDir "$env:GITHUB_WORKSPACE/threadx" -BuildTimeoutSeconds 300
} finally {
Stop-Transcript
}
- name: Test Win64 configurations
timeout-minutes: 50
shell: pwsh
run: |
Start-Transcript -Path win64-test.log
try {
./scripts/test_fx.ps1 -Arch win64 -Configuration all -Parallel 1 -TestTimeoutSeconds 600
} finally {
Stop-Transcript
}
- name: Upload failure diagnostics
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: win64-diagnostics
path: |
win64-build.log
win64-test.log
build/tests/win64/**/Testing/Temporary/*
build/tests/win64/**/CMakeFiles/CMakeConfigureLog.yaml
if-no-files-found: warn

deploy:
if: ${{ (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/master' }}
needs: [run_tests, win64]
runs-on: ubuntu-24.04
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
permissions:
pages: write
id-token: write
uses: eclipse-threadx/threadx/.github/workflows/regression_template.yml@master
steps:
- name: Download merged coverage
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: coverage_report-*
merge-multiple: true
path: coverage_report
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
path: coverage_report/merged
- name: Deploy coverage
id: deployment
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
63 changes: 63 additions & 0 deletions .github/workflows/repo_checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
###############################################################################
# Copyright (c) 2026 Eclipse ThreadX contributors
#
# This program and the accompanying materials are made available under the
# terms of the MIT License which is available at
# https://opensource.org/licenses/MIT.
#
# AI Disclosure: This file was largely AI-generated by Claude Code (Opus 5).
# The AI-generated portions may be considered public domain (CC0-1.0)
# and not subject to the project's licence. The human contributor has
# reviewed and verified that the code is correct.
#
# SPDX-License-Identifier: MIT and CC0-1.0
###############################################################################

name: repo_checks

# Repository-wide text checks.
#
# THIS LIVES IN ITS OWN WORKFLOW BECAUSE IT MUST NOT BE PATH-FILTERED, and a
# path filter is a property of a workflow rather than of a job. The check
# selects its input with `git ls-files` and scans every tracked file, so any
# file at all can carry a finding.
#
# That is not hypothetical here. The pass that introduced the fixed
# disclosure line covered source files only, and the drift it was meant to end
# survived for months afterwards in CMake files, toolchain files, shell and
# PowerShell scripts, a GDB script and a Visual Studio manifest -- precisely
# the files a source-path filter would have skipped. A workflow that gates no
# pull request anybody opens is worse than no workflow, because it looks like
# coverage.
#
# Cheap enough that running it on everything costs nothing worth measuring: it
# is grep over a repository this size, with no toolchain, no build and no
# cache.

on:
# No `paths:` on either trigger, deliberately. See above.
push:
branches: [ dev, master ]
pull_request:
branches: [ dev, master ]

# A second push to the same branch makes the first answer irrelevant.
concurrency:
group: repo-checks-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
checks:
runs-on: ubuntu-24.04
steps:
# Actions are pinned to a commit SHA with the version in the trailing
# comment. A tag can be moved; a SHA cannot, which is what makes "which
# code ran in our CI" answerable from the repository.
- name: Check out the repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Check the AI disclosure comments
run: scripts/check_ai_disclosure.sh
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.13 FATAL_ERROR)

# Set up the project
project(filex
LANGUAGES C ASM
LANGUAGES C
)


Expand Down
Loading
Loading