CI v5.0 (#459)
Signed-off-by: Justin Williams <Justin.Williams@amd.com>
[ROCm/amdsmi commit: ae4f56d14b]
This commit is contained in:
-116
@@ -1,116 +0,0 @@
|
||||
name: Major ABI Compliance Check
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- amd-staging
|
||||
- release/rocm-rel-*
|
||||
paths:
|
||||
- 'include/amd_smi/amdsmi.h'
|
||||
push:
|
||||
branches:
|
||||
- amd-staging
|
||||
- release/rocm-rel-*
|
||||
paths:
|
||||
- 'include/amd_smi/amdsmi.h'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
check-abi:
|
||||
runs-on: lstt5
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
run: |
|
||||
sudo rm -rf $GITHUB_WORKSPACE/* || true
|
||||
sudo rm -rf $GITHUB_WORKSPACE/.[!.]* || true
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y perl build-essential git universal-ctags
|
||||
git clone https://github.com/lvc/abi-compliance-checker.git
|
||||
cd abi-compliance-checker
|
||||
sudo make install
|
||||
abi-compliance-checker --version
|
||||
|
||||
- name: Checkout feature branch
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.head_ref }}
|
||||
submodules: true
|
||||
|
||||
- name: Copy feature branch file as new
|
||||
run: |
|
||||
cp include/amd_smi/amdsmi.h amdsmi_new.h
|
||||
|
||||
- name: Fetch old file
|
||||
run: |
|
||||
# Print debug info
|
||||
echo "Pull request base branch: ${{ github.base_ref }}"
|
||||
echo "Pull request head branch: ${{ github.head_ref }}"
|
||||
|
||||
# Fetch the appropriate base branch
|
||||
if [ "${{ github.base_ref }}" = "amd-staging" ]; then
|
||||
# Pull request to amd-staging: use amd-staging as old
|
||||
git fetch origin amd-staging
|
||||
git checkout FETCH_HEAD -- include/amd_smi/amdsmi.h
|
||||
mv include/amd_smi/amdsmi.h amdsmi_old.h
|
||||
fi
|
||||
|
||||
- name: Run ABI Compliance Check
|
||||
id: abi-check
|
||||
run: |
|
||||
# Create a status file with default failure
|
||||
echo "abi_exit_code=1" > $GITHUB_WORKSPACE/abi_status.txt
|
||||
|
||||
if [ "${{ github.base_ref }}" = "amd-staging" ]; then
|
||||
echo "Comparing amd-staging (old) with ${{ github.head_ref }} (new)"
|
||||
abi-compliance-checker -lib amdsmi -old amdsmi_old.h -new amdsmi_new.h -v1 amd-staging -v2 ${{ github.head_ref }} -report-path abi-report.html && echo "abi_exit_code=0" > $GITHUB_WORKSPACE/abi_status.txt
|
||||
fi
|
||||
continue-on-error: true
|
||||
|
||||
- name: Display ABI Check Logs
|
||||
if: always()
|
||||
run: |
|
||||
echo "Displaying ABI compliance check logs"
|
||||
find logs -type f -name "*.txt" -exec cat {} \;
|
||||
|
||||
- name: Label PR as ABI BREAKAGE
|
||||
if: always() && github.event_name == 'pull_request'
|
||||
run: |
|
||||
if [ -f $GITHUB_WORKSPACE/abi_status.txt ]; then
|
||||
source $GITHUB_WORKSPACE/abi_status.txt
|
||||
if [ "$abi_exit_code" -ne 0 ]; then
|
||||
echo "ABI check failed, adding ABI BREAKAGE label to PR #${{ github.event.pull_request.number }}"
|
||||
gh pr edit ${{ github.event.pull_request.number }} --add-label "MAJOR ABI BREAKAGE"
|
||||
fi
|
||||
fi
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Upload ABI Report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: abi-report
|
||||
path: abi-report.html
|
||||
|
||||
- name: Fail Workflow on ABI Check Failure
|
||||
if: always()
|
||||
run: |
|
||||
echo "Checking ABI check exit code..."
|
||||
if [ -f $GITHUB_WORKSPACE/abi_status.txt ]; then
|
||||
source $GITHUB_WORKSPACE/abi_status.txt
|
||||
echo "ABI check exit code: $abi_exit_code"
|
||||
if [ "$abi_exit_code" -ne 0 ]; then
|
||||
echo "::error::⚠️ ABI BREAKAGE FOUND ⚠️ CHECK \"Run ABI Compliance Check\" LOGS OR THE abi-report ARTIFACT ATTACHED TO THIS WORKFLOW FOR MORE DETAILS"
|
||||
echo "::error::View the HTML report in the Artifacts section of this workflow run for detailed ABI compatibility analysis"
|
||||
exit 1
|
||||
else
|
||||
echo "✅ ABI check succeeded"
|
||||
fi
|
||||
else
|
||||
echo "ABI status file not found at $GITHUB_WORKSPACE/abi_status.txt, assuming failure"
|
||||
exit 1
|
||||
fi
|
||||
-185
@@ -1,185 +0,0 @@
|
||||
name: Minor ABI Compliance Check
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- amd-staging
|
||||
- release/rocm-rel-*
|
||||
paths:
|
||||
- 'include/amd_smi/amdsmi.h'
|
||||
push:
|
||||
branches:
|
||||
- amd-staging
|
||||
- release/rocm-rel-*
|
||||
paths:
|
||||
- 'include/amd_smi/amdsmi.h'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
check-abi:
|
||||
runs-on: lstt5
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
run: |
|
||||
sudo rm -rf $GITHUB_WORKSPACE/* || true
|
||||
sudo rm -rf $GITHUB_WORKSPACE/.[!.]* || true
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y perl build-essential git universal-ctags
|
||||
git clone https://github.com/lvc/abi-compliance-checker.git
|
||||
cd abi-compliance-checker
|
||||
sudo make install
|
||||
abi-compliance-checker --version
|
||||
- name: Checkout feature branch
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.head_ref || github.ref_name }}
|
||||
submodules: true
|
||||
|
||||
- name: Copy feature branch file as new
|
||||
run: |
|
||||
cp include/amd_smi/amdsmi.h amdsmi_new.h
|
||||
|
||||
- name: Fetch old file
|
||||
run: |
|
||||
# Print debug info
|
||||
echo "Pull request base branch: ${{ github.base_ref }}"
|
||||
echo "Pull request head branch: ${{ github.head_ref }}"
|
||||
|
||||
if [ "${{ github.event_name }}" = "pull_request" ]; then
|
||||
# For pull requests, use the target branch as the old file
|
||||
if [ "${{ github.base_ref }}" = "amd-staging" ]; then
|
||||
# Pull request to amd-staging: use amd-staging as old
|
||||
git fetch origin amd-staging
|
||||
git checkout FETCH_HEAD -- include/amd_smi/amdsmi.h
|
||||
mv include/amd_smi/amdsmi.h amdsmi_old.h
|
||||
fi
|
||||
elif [ "${{ github.event_name }}" = "push" ]; then
|
||||
# For pushes, determine which branch was pushed to
|
||||
if [ "${{ github.ref_name }}" = "amd-staging" ]; then
|
||||
# Push to amd-staging: use amd-staging as old
|
||||
git fetch origin amd-staging
|
||||
git checkout FETCH_HEAD -- include/amd_smi/amdsmi.h
|
||||
mv include/amd_smi/amdsmi.h amdsmi_old.h
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: Run ABI Compliance Check
|
||||
id: abi-check
|
||||
run: |
|
||||
# Create a custom descriptor with strict options
|
||||
cat > strict_descriptor.xml << EOF
|
||||
<descriptor>
|
||||
<libs>
|
||||
<lib>
|
||||
<name>amdsmi</name>
|
||||
<headers>
|
||||
<path>amdsmi_old.h</path>
|
||||
</headers>
|
||||
<skip_headers>
|
||||
<symbol>assert.h</symbol>
|
||||
</skip_headers>
|
||||
</lib>
|
||||
</libs>
|
||||
</descriptor>
|
||||
EOF
|
||||
|
||||
# Set comparison message and run the appropriate check
|
||||
if [ "${{ github.event_name }}" = "pull_request" ]; then
|
||||
if [ "${{ github.base_ref }}" = "amd-staging" ]; then
|
||||
COMPARE_MSG="amd-staging vs ${{ github.head_ref }}"
|
||||
abi-compliance-checker -l amdsmi -old amdsmi_old.h -new amdsmi_new.h -v1 amd-staging -v2 ${{ github.head_ref }} -report-path abi-report.html -strict || { EXIT_CODE=$?; echo "abi_exit_code=$EXIT_CODE" > $GITHUB_WORKSPACE/abi_status.txt; exit $EXIT_CODE; }
|
||||
fi
|
||||
elif [ "${{ github.event_name }}" = "push" ]; then
|
||||
if [ "${{ github.ref_name }}" = "amd-staging" ]; then
|
||||
COMPARE_MSG="amd-staging vs ${{ github.ref_name }}"
|
||||
abi-compliance-checker -l amdsmi -old amdsmi_old.h -new amdsmi_new.h -v1 amd-staging -v2 ${{ github.ref_name }} -report-path abi-report.html -strict || { EXIT_CODE=$?; echo "abi_exit_code=$EXIT_CODE" > $GITHUB_WORKSPACE/abi_status.txt; exit $EXIT_CODE; }
|
||||
fi
|
||||
fi
|
||||
|
||||
# If the report was generated, check for ANY changes
|
||||
if [ -f abi-report.html ]; then
|
||||
echo "Report generated successfully"
|
||||
# Check for ANY changes in the ABI by examining specific patterns in the report
|
||||
CHANGED=0
|
||||
# Check for added symbols
|
||||
if grep -q "Added Symbols.*[1-9]" abi-report.html; then
|
||||
echo "::error::STRICT ABI CHECK FAILED: Found added symbols comparing $COMPARE_MSG"
|
||||
CHANGED=1
|
||||
fi
|
||||
# Check for removed symbols
|
||||
if grep -q "Removed Symbols.*[1-9]" abi-report.html; then
|
||||
echo "::error::STRICT ABI CHECK FAILED: Found removed symbols comparing $COMPARE_MSG"
|
||||
CHANGED=1
|
||||
fi
|
||||
# Check for problems with data types
|
||||
if grep -q "Problems with.*Data Types.*[1-9]" abi-report.html; then
|
||||
echo "::error::STRICT ABI CHECK FAILED: Found problems with data types comparing $COMPARE_MSG"
|
||||
CHANGED=1
|
||||
fi
|
||||
# Check for problems with symbols
|
||||
if grep -q "Problems with.*Symbols.*[1-9]" abi-report.html; then
|
||||
echo "::error::STRICT ABI CHECK FAILED: Found problems with symbols comparing $COMPARE_MSG"
|
||||
CHANGED=1
|
||||
fi
|
||||
# Check for problems with constants
|
||||
if grep -q "Problems with.*Constants.*[1-9]" abi-report.html; then
|
||||
echo "::error::STRICT ABI CHECK FAILED: Found problems with constants comparing $COMPARE_MSG"
|
||||
CHANGED=1
|
||||
fi
|
||||
# Fail if any changes were found
|
||||
if [ "$CHANGED" -eq 1 ]; then
|
||||
echo "abi_exit_code=1" > $GITHUB_WORKSPACE/abi_status.txt
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
# If successful, write exit code 0
|
||||
echo "abi_exit_code=0" > $GITHUB_WORKSPACE/abi_status.txt
|
||||
echo "ABI check wrote exit code to $GITHUB_WORKSPACE/abi_status.txt"
|
||||
continue-on-error: true
|
||||
|
||||
- name: Display ABI Check Logs
|
||||
if: always()
|
||||
run: |
|
||||
echo "Displaying ABI compliance check logs for ${{ github.ref_name }}"
|
||||
if [ -f logs/amdsmi/${{ github.ref_name }}/log.txt ]; then
|
||||
cat logs/amdsmi/${{ github.ref_name }}/log.txt
|
||||
else
|
||||
echo "No ABI check log found at logs/amdsmi/${{ github.ref_name }}/log.txt"
|
||||
fi
|
||||
- name: Label PR as ABI BREAKAGE
|
||||
if: github.event_name == 'pull_request' && steps.abi-check.outcome == 'failure'
|
||||
run: |
|
||||
echo "ABI check failed, adding ABI BREAKAGE label to PR #${{ github.event.pull_request.number }}"
|
||||
gh pr edit ${{ github.event.pull_request.number }} --add-label "MINOR ABI BREAKAGE"
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Upload ABI Report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: abi-report
|
||||
path: abi-report.html
|
||||
|
||||
- name: Fail Workflow on ABI Check Failure
|
||||
if: always()
|
||||
run: |
|
||||
echo "Checking ABI check exit code..."
|
||||
if [ -f $GITHUB_WORKSPACE/abi_status.txt ]; then
|
||||
source $GITHUB_WORKSPACE/abi_status.txt
|
||||
echo "ABI check exit code: $abi_exit_code"
|
||||
if [ "$abi_exit_code" -ne 0 ]; then
|
||||
echo "::error::⚠️ CHANGES TO AMDSMI.H FILE FOUND ⚠️ CHECK \"Run ABI Compliance Check\" LOGS OR THE abi-report ARTIFACT ATTACHED TO THIS WORKFLOW FOR MORE DETAILS"
|
||||
echo "::error::View the HTML report in the Artifacts section of this workflow run for detailed ABI compatibility analysis"
|
||||
exit 1
|
||||
else
|
||||
echo "✅ ABI check succeeded"
|
||||
fi
|
||||
else
|
||||
echo "::error::ABI status file not found at $GITHUB_WORKSPACE/abi_status.txt, assuming failure"
|
||||
exit 1
|
||||
fi
|
||||
@@ -0,0 +1,316 @@
|
||||
name: ABI Compliance Check
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- amd-staging
|
||||
- release/rocm-rel-*
|
||||
paths:
|
||||
- 'include/amd_smi/amdsmi.h'
|
||||
push:
|
||||
branches:
|
||||
- amd-staging
|
||||
- release/rocm-rel-*
|
||||
paths:
|
||||
- 'include/amd_smi/amdsmi.h'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
major_abi_check:
|
||||
name: Major ABI Compliance Check
|
||||
runs-on: lstt5
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
run: |
|
||||
sudo rm -rf $GITHUB_WORKSPACE/* || true
|
||||
sudo rm -rf $GITHUB_WORKSPACE/.[!.]* || true
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y -qq perl build-essential git universal-ctags
|
||||
git clone https://github.com/lvc/abi-compliance-checker.git
|
||||
cd abi-compliance-checker
|
||||
sudo make install
|
||||
abi-compliance-checker --version
|
||||
|
||||
- name: Checkout current code (new version)
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||
|
||||
- name: Fetch base branch for PR
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
echo "Fetching base branch: ${{ github.base_ref }}"
|
||||
git fetch origin ${{ github.base_ref }}:${{ github.base_ref }}
|
||||
git branch -a
|
||||
|
||||
- name: Prepare amdsmi.h files for comparison
|
||||
id: prepare_files
|
||||
run: |
|
||||
echo "Preparing amdsmi.h files..."
|
||||
echo "abi_exit_code=1" > $GITHUB_WORKSPACE/major_abi_status.txt
|
||||
|
||||
if [ -f include/amd_smi/amdsmi.h ]; then
|
||||
cp include/amd_smi/amdsmi.h amdsmi_new.h
|
||||
echo "Copied current amdsmi.h to amdsmi_new.h"
|
||||
else
|
||||
echo "::error::New amdsmi.h (include/amd_smi/amdsmi.h) not found in current checkout."
|
||||
touch amdsmi_new.h
|
||||
exit 0
|
||||
fi
|
||||
|
||||
OLD_VERSION_REF=""
|
||||
V1_NAME_SUFFIX=""
|
||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
OLD_VERSION_REF="${{ github.base_ref }}"
|
||||
V1_NAME_SUFFIX="base_${{ github.base_ref }}"
|
||||
echo "Event is Pull Request. Old version source is base branch: ${OLD_VERSION_REF}"
|
||||
elif [[ "${{ github.event_name }}" == "push" ]]; then
|
||||
if [[ "${{ github.event.before }}" != "0000000000000000000000000000000000000000" ]]; then
|
||||
OLD_VERSION_REF="${{ github.event.before }}"
|
||||
V1_NAME_SUFFIX="before_$(echo ${{ github.event.before }} | cut -c1-7)"
|
||||
echo "Event is Push. Old version source is commit before push: ${OLD_VERSION_REF}"
|
||||
else
|
||||
echo "Push event is for a new branch or forced push. Cannot determine 'old' version."
|
||||
touch amdsmi_old.h
|
||||
echo "Created dummy amdsmi_old.h. Assuming no ABI breakage as no baseline."
|
||||
echo "abi_exit_code=0" > $GITHUB_WORKSPACE/major_abi_status.txt
|
||||
echo "skip_check=true" >> $GITHUB_OUTPUT
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "::warning::Unsupported event type: ${{ github.event_name }}. Cannot determine old version."
|
||||
touch amdsmi_old.h
|
||||
echo "abi_exit_code=0" > $GITHUB_WORKSPACE/major_abi_status.txt
|
||||
echo "skip_check=true" >> $GITHUB_OUTPUT
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Fetching amdsmi.h from ref: $OLD_VERSION_REF (as amdsmi_old.h)"
|
||||
git show $OLD_VERSION_REF:include/amd_smi/amdsmi.h > amdsmi_old.h 2>/dev/null
|
||||
if [ $? -ne 0 ] || [ ! -s amdsmi_old.h ]; then
|
||||
echo "::warning::Failed to fetch 'include/amd_smi/amdsmi.h' from ref '$OLD_VERSION_REF' or file is empty/missing."
|
||||
echo "Proceeding with an empty amdsmi_old.h. This may result in all symbols reported as 'added'."
|
||||
echo -n "" > amdsmi_old.h
|
||||
if [ ! -s amdsmi_new.h ]; then
|
||||
echo "abi_exit_code=0" > $GITHUB_WORKSPACE/major_abi_status.txt
|
||||
fi
|
||||
else
|
||||
echo "Successfully fetched amdsmi.h from $OLD_VERSION_REF to amdsmi_old.h"
|
||||
fi
|
||||
echo "v1_name_suffix=${V1_NAME_SUFFIX}" >> $GITHUB_OUTPUT
|
||||
echo "skip_check=false" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Run Major ABI Compliance Check
|
||||
if: steps.prepare_files.outputs.skip_check == 'false'
|
||||
run: |
|
||||
V1_NAME_SUFFIX_CLEAN=$(echo "${{ steps.prepare_files.outputs.v1_name_suffix }}" | tr '/' '-')
|
||||
V2_NAME_CLEAN=$(echo "${{ github.ref_name || github.head_ref }}" | tr '/' '-')
|
||||
|
||||
echo "Comparing $V1_NAME_SUFFIX_CLEAN (old) with $V2_NAME_CLEAN (new) for Major ABI Check"
|
||||
abi-compliance-checker -lib amdsmi -old amdsmi_old.h -new amdsmi_new.h -v1 "$V1_NAME_SUFFIX_CLEAN" -v2 "$V2_NAME_CLEAN" -report-path major-abi-report.html && echo "abi_exit_code=0" > $GITHUB_WORKSPACE/major_abi_status.txt
|
||||
continue-on-error: true
|
||||
|
||||
- name: Display ABI Check Logs (Major)
|
||||
if: always() && steps.prepare_files.outputs.skip_check == 'false'
|
||||
run: |
|
||||
echo "Displaying Major ABI compliance check logs (if any)"
|
||||
find logs -type f -name "*.txt" -exec echo "--- {} ---" \; -exec cat {} \; || echo "No .txt logs found in logs/ directory."
|
||||
|
||||
- name: Label PR on Major ABI Breakage
|
||||
if: always() && github.event_name == 'pull_request'
|
||||
run: |
|
||||
source $GITHUB_WORKSPACE/major_abi_status.txt
|
||||
if [ "$abi_exit_code" -ne 0 ]; then
|
||||
echo "Major ABI check failed, adding 'MAJOR ABI BREAKAGE' label to PR #${{ github.event.pull_request.number }}"
|
||||
gh pr edit ${{ github.event.pull_request.number }} --add-label "MAJOR ABI BREAKAGE"
|
||||
fi
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Upload Major ABI Report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: major-abi-report
|
||||
path: major-abi-report.html
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Fail Workflow on Major ABI Check Failure
|
||||
if: always()
|
||||
run: |
|
||||
echo "Checking Major ABI check exit code..."
|
||||
source $GITHUB_WORKSPACE/major_abi_status.txt
|
||||
echo "Major ABI check exit code: $abi_exit_code"
|
||||
if [ "$abi_exit_code" -ne 0 ]; then
|
||||
echo "::error::⚠️ MAJOR ABI BREAKAGE FOUND ⚠️ CHECK \"Run Major ABI Compliance Check\" LOGS OR THE major-abi-report ARTIFACT FOR DETAILS."
|
||||
exit 1
|
||||
else
|
||||
echo "✅ Major ABI check succeeded."
|
||||
fi
|
||||
|
||||
minor_abi_check:
|
||||
name: Minor ABI Compliance Check
|
||||
runs-on: lstt5
|
||||
steps:
|
||||
- name: Setup Environment
|
||||
run: |
|
||||
sudo rm -rf $GITHUB_WORKSPACE/* || true
|
||||
sudo rm -rf $GITHUB_WORKSPACE/.[!.]* || true
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y -qq perl build-essential git universal-ctags
|
||||
git clone https://github.com/lvc/abi-compliance-checker.git
|
||||
cd abi-compliance-checker
|
||||
sudo make install
|
||||
abi-compliance-checker --version
|
||||
|
||||
- name: Checkout current code (new version)
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||
|
||||
- name: Fetch base branch for PR
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
echo "Fetching base branch: ${{ github.base_ref }}"
|
||||
git fetch origin ${{ github.base_ref }}:${{ github.base_ref }}
|
||||
git branch -a
|
||||
|
||||
- name: Prepare amdsmi.h files for comparison
|
||||
id: prepare_files_minor
|
||||
run: |
|
||||
echo "Preparing amdsmi.h files for Minor check..."
|
||||
echo "abi_exit_code=1" > $GITHUB_WORKSPACE/minor_abi_status.txt
|
||||
|
||||
if [ -f include/amd_smi/amdsmi.h ]; then
|
||||
cp include/amd_smi/amdsmi.h amdsmi_new.h
|
||||
echo "Copied current amdsmi.h to amdsmi_new.h for Minor check"
|
||||
else
|
||||
echo "::error::New amdsmi.h (include/amd_smi/amdsmi.h) not found in current checkout for Minor check."
|
||||
touch amdsmi_new.h
|
||||
exit 0
|
||||
fi
|
||||
|
||||
OLD_VERSION_REF_MINOR=""
|
||||
V1_NAME_SUFFIX_MINOR=""
|
||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
OLD_VERSION_REF_MINOR="${{ github.base_ref }}"
|
||||
V1_NAME_SUFFIX_MINOR="base_${{ github.base_ref }}"
|
||||
elif [[ "${{ github.event_name }}" == "push" ]]; then
|
||||
if [[ "${{ github.event.before }}" != "0000000000000000000000000000000000000000" ]]; then
|
||||
OLD_VERSION_REF_MINOR="${{ github.event.before }}"
|
||||
V1_NAME_SUFFIX_MINOR="before_$(echo ${{ github.event.before }} | cut -c1-7)"
|
||||
else
|
||||
echo "Push event is for a new branch (Minor check). Assuming no ABI changes as no baseline."
|
||||
touch amdsmi_old.h
|
||||
echo "abi_exit_code=0" > $GITHUB_WORKSPACE/minor_abi_status.txt
|
||||
echo "skip_check_minor=true" >> $GITHUB_OUTPUT
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "::warning::Unsupported event type for Minor ABI check: ${{ github.event_name }}."
|
||||
touch amdsmi_old.h
|
||||
echo "abi_exit_code=0" > $GITHUB_WORKSPACE/minor_abi_status.txt
|
||||
echo "skip_check_minor=true" >> $GITHUB_OUTPUT
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Fetching amdsmi.h from ref: $OLD_VERSION_REF_MINOR (as amdsmi_old.h) for Minor check"
|
||||
git show $OLD_VERSION_REF_MINOR:include/amd_smi/amdsmi.h > amdsmi_old.h 2>/dev/null
|
||||
if [ $? -ne 0 ] || [ ! -s amdsmi_old.h ]; then
|
||||
echo "::warning::Failed to fetch 'include/amd_smi/amdsmi.h' from ref '$OLD_VERSION_REF_MINOR' or file is empty/missing for Minor check."
|
||||
echo "Proceeding with an empty amdsmi_old.h for Minor check."
|
||||
echo -n "" > amdsmi_old.h
|
||||
if [ ! -s amdsmi_new.h ]; then
|
||||
echo "abi_exit_code=0" > $GITHUB_WORKSPACE/minor_abi_status.txt
|
||||
fi
|
||||
else
|
||||
echo "Successfully fetched amdsmi.h from $OLD_VERSION_REF_MINOR to amdsmi_old.h for Minor check"
|
||||
fi
|
||||
echo "v1_name_suffix_minor=${V1_NAME_SUFFIX_MINOR}" >> $GITHUB_OUTPUT
|
||||
echo "skip_check_minor=false" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Run Minor ABI Compliance Check (Strict)
|
||||
if: steps.prepare_files_minor.outputs.skip_check_minor == 'false'
|
||||
run: |
|
||||
V1_NAME_SUFFIX_CLEAN=$(echo "${{ steps.prepare_files_minor.outputs.v1_name_suffix_minor }}" | tr '/' '-')
|
||||
V2_NAME_CLEAN=$(echo "${{ github.ref_name || github.head_ref }}" | tr '/' '-')
|
||||
COMPARE_MSG="$V1_NAME_SUFFIX_CLEAN vs $V2_NAME_CLEAN"
|
||||
|
||||
echo "Comparing $COMPARE_MSG for Minor ABI Check (Strict)"
|
||||
|
||||
abi-compliance-checker -lib amdsmi -old amdsmi_old.h -new amdsmi_new.h -v1 "$V1_NAME_SUFFIX_CLEAN" -v2 "$V2_NAME_CLEAN" -report-path minor-abi-report.html -strict || {
|
||||
ACC_EXIT_CODE=$?
|
||||
echo "abi-compliance-checker -strict failed with exit code $ACC_EXIT_CODE."
|
||||
echo "abi_exit_code=$ACC_EXIT_CODE" > $GITHUB_WORKSPACE/minor_abi_status.txt
|
||||
}
|
||||
|
||||
current_abi_status=$(cat $GITHUB_WORKSPACE/minor_abi_status.txt)
|
||||
current_exit_code=${current_abi_status#*=}
|
||||
|
||||
if [ "$current_exit_code" -eq 0 ] && [ -f minor-abi-report.html ]; then
|
||||
echo "ACC strict check passed. Parsing HTML report for any changes..."
|
||||
CHANGED=0
|
||||
if grep -q "Added Symbols.*[1-9]" minor-abi-report.html; then CHANGED=1; echo "::warning::STRICT ABI: Found added symbols"; fi
|
||||
if grep -q "Removed Symbols.*[1-9]" minor-abi-report.html; then CHANGED=1; echo "::warning::STRICT ABI: Found removed symbols"; fi
|
||||
if grep -q "Problems with.*Data Types.*[1-9]" minor-abi-report.html; then CHANGED=1; echo "::warning::STRICT ABI: Found problems with data types"; fi
|
||||
if grep -q "Problems with.*Symbols.*[1-9]" minor-abi-report.html; then CHANGED=1; echo "::warning::STRICT ABI: Found problems with symbols"; fi
|
||||
if grep -q "Problems with.*Constants.*[1-9]" minor-abi-report.html; then CHANGED=1; echo "::warning::STRICT ABI: Found problems with constants"; fi
|
||||
|
||||
if [ "$CHANGED" -eq 1 ]; then
|
||||
echo "::error::STRICT ABI CHECK FAILED: Found changes in ABI report comparing $COMPARE_MSG"
|
||||
echo "abi_exit_code=1" > $GITHUB_WORKSPACE/minor_abi_status.txt
|
||||
else
|
||||
echo "No strict ABI changes found in HTML report."
|
||||
echo "abi_exit_code=0" > $GITHUB_WORKSPACE/minor_abi_status.txt
|
||||
fi
|
||||
elif [ ! -f minor-abi-report.html ] && [ "$current_exit_code" -eq 0 ]; then
|
||||
echo "::warning::Minor ABI report (minor-abi-report.html) not found, but ACC reported success. Assuming no changes."
|
||||
echo "abi_exit_code=0" > $GITHUB_WORKSPACE/minor_abi_status.txt
|
||||
elif [ "$current_exit_code" -ne 0 ]; then
|
||||
echo "ACC strict check already indicated failure (exit code $current_exit_code). HTML parsing for further changes skipped or confirmed failure."
|
||||
fi
|
||||
continue-on-error: true
|
||||
|
||||
- name: Display ABI Check Logs (Minor)
|
||||
if: always() && steps.prepare_files_minor.outputs.skip_check_minor == 'false'
|
||||
run: |
|
||||
echo "Displaying Minor ABI compliance check logs (if any)"
|
||||
find logs -type f -name "*.txt" -exec echo "--- {} ---" \; -exec cat {} \; || echo "No .txt logs found in logs/ directory."
|
||||
|
||||
- name: Label PR on Minor ABI Breakage
|
||||
if: always() && github.event_name == 'pull_request'
|
||||
run: |
|
||||
source $GITHUB_WORKSPACE/minor_abi_status.txt
|
||||
if [ "$abi_exit_code" -ne 0 ]; then
|
||||
echo "Minor ABI check failed, adding 'MINOR ABI BREAKAGE' label to PR #${{ github.event.pull_request.number }}"
|
||||
gh pr edit ${{ github.event.pull_request.number }} --add-label "MINOR ABI BREAKAGE"
|
||||
fi
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Upload Minor ABI Report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: minor-abi-report
|
||||
path: minor-abi-report.html
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Fail Workflow on Minor ABI Check Failure
|
||||
if: always()
|
||||
run: |
|
||||
echo "Checking Minor ABI check exit code..."
|
||||
source $GITHUB_WORKSPACE/minor_abi_status.txt
|
||||
echo "Minor ABI check exit code: $abi_exit_code"
|
||||
if [ "$abi_exit_code" -ne 0 ]; then
|
||||
echo "::error::⚠️ MINOR ABI CHANGES FOUND (STRICT CHECK) ⚠️ CHECK \"Run Minor ABI Compliance Check (Strict)\" LOGS OR THE minor-abi-report ARTIFACT FOR DETAILS."
|
||||
exit 1
|
||||
else
|
||||
echo "✅ Minor ABI check (Strict) succeeded or found no changes."
|
||||
fi
|
||||
+22
-74
@@ -32,10 +32,6 @@ jobs:
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
clean: false
|
||||
path: $GITHUB_WORKSPACE
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build AMDSMI
|
||||
run: |
|
||||
@@ -43,13 +39,13 @@ jobs:
|
||||
echo 'Building on ${{ matrix.os }}'
|
||||
BUILD_FOLDER=$GITHUB_WORKSPACE/build
|
||||
RETRIES=3
|
||||
|
||||
|
||||
for i in $(seq 1 $RETRIES); do
|
||||
echo "Build attempt $i for ${{ matrix.os }}..."
|
||||
rm -rf $BUILD_FOLDER
|
||||
mkdir -p $BUILD_FOLDER
|
||||
cd $BUILD_FOLDER
|
||||
|
||||
|
||||
if cmake $GITHUB_WORKSPACE -DBUILD_TESTS=ON -DENABLE_ESMI_LIB=ON && \
|
||||
make -j $(nproc) && \
|
||||
make package; then
|
||||
@@ -70,14 +66,14 @@ jobs:
|
||||
run: |
|
||||
cd $GITHUB_WORKSPACE/build
|
||||
apt update
|
||||
|
||||
|
||||
RETRIES=3
|
||||
for i in $(seq 1 $RETRIES); do
|
||||
echo "Installation attempt $i for ${{ matrix.os }}..."
|
||||
if apt install -y ./amd-smi-lib*99999-local_amd64.deb; then
|
||||
echo "Installation successful on attempt $i"
|
||||
ln -s /opt/rocm/bin/amd-smi /usr/local/bin
|
||||
|
||||
|
||||
# Verify Installation
|
||||
echo 'Verifying installation:'
|
||||
amd-smi version
|
||||
@@ -125,10 +121,6 @@ jobs:
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
clean: false
|
||||
path: $GITHUB_WORKSPACE
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build and Install for Test
|
||||
run: |
|
||||
@@ -136,13 +128,13 @@ jobs:
|
||||
echo 'Building for test on ${{ matrix.os }}'
|
||||
BUILD_FOLDER=$GITHUB_WORKSPACE/build
|
||||
RETRIES=3
|
||||
|
||||
|
||||
for i in $(seq 1 $RETRIES); do
|
||||
echo "Build attempt $i for ${{ matrix.os }} test..."
|
||||
rm -rf $BUILD_FOLDER
|
||||
mkdir -p $BUILD_FOLDER
|
||||
cd $BUILD_FOLDER
|
||||
|
||||
|
||||
if cmake $GITHUB_WORKSPACE -DBUILD_TESTS=ON -DENABLE_ESMI_LIB=ON && \
|
||||
make -j $(nproc) && \
|
||||
make package; then
|
||||
@@ -160,7 +152,7 @@ jobs:
|
||||
|
||||
echo 'Installing for test on ${{ matrix.os }}'
|
||||
apt update
|
||||
|
||||
|
||||
for i in $(seq 1 $RETRIES); do
|
||||
echo "Installation attempt $i for test on ${{ matrix.os }}..."
|
||||
if apt install -y $BUILD_FOLDER/amd-smi-lib*99999-local_amd64.deb; then
|
||||
@@ -212,6 +204,13 @@ jobs:
|
||||
done
|
||||
echo "AMDSMI commands done on ${{ matrix.os }}"
|
||||
|
||||
- name: Upload AMDSMI Command Test Results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: amdsmi-command-tests-${{ matrix.os }}
|
||||
path: /tmp/test-results-${{ matrix.os }}
|
||||
|
||||
- name: Run AMDSMI, Python, and Example Tests
|
||||
shell: bash
|
||||
run: |
|
||||
@@ -330,10 +329,6 @@ jobs:
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
clean: false
|
||||
path: $GITHUB_WORKSPACE
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set PkgMgr
|
||||
run: |
|
||||
@@ -510,10 +505,6 @@ jobs:
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
clean: false
|
||||
path: $GITHUB_WORKSPACE
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set PkgMgr
|
||||
run: |
|
||||
@@ -660,6 +651,14 @@ jobs:
|
||||
done
|
||||
echo "AMDSMI commands done on ${{ matrix.os }}"
|
||||
|
||||
- name: Upload AMDSMI Command Test Results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: amdsmi-command-tests-${{ matrix.os }}
|
||||
path: /tmp/test-results-${{ matrix.os }}
|
||||
retention-days: 30
|
||||
|
||||
- name: Run AMDSMI, Python, and Example Tests
|
||||
shell: bash
|
||||
run: |
|
||||
@@ -755,54 +754,3 @@ jobs:
|
||||
run: |
|
||||
echo "Displaying Example NoDRM test results for ${{ matrix.os }}"
|
||||
cat /tmp/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo "No NoDRM example test results found for ${{ matrix.os }}"
|
||||
|
||||
generate-docs:
|
||||
name: Generate Documentation
|
||||
runs-on:
|
||||
- self-hosted
|
||||
- ${{ vars.RUNNER_TYPE2 }}
|
||||
needs: [debian-test, rpm-test]
|
||||
container:
|
||||
image: ${{ vars.UBUNTU22_DOCKER_IMAGE }}
|
||||
options: --privileged
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
clean: true
|
||||
path: $GITHUB_WORKSPACE
|
||||
fetch-depth: 0
|
||||
- name: Set Up Python Environment
|
||||
run: |
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install -r $GITHUB_WORKSPACE/docs/sphinx/requirements.txt
|
||||
- name: Build Documentation
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
echo "Building documentation..."
|
||||
cd $GITHUB_WORKSPACE
|
||||
echo "Current directory: $(pwd)"
|
||||
echo "Git repository verification:"
|
||||
ls -la .git/ || echo "No .git directory found"
|
||||
git status --porcelain || echo "Git status failed, but continuing..."
|
||||
if [ ! -e "docs/.git" ]; then
|
||||
ln -s ../.git docs/.git
|
||||
echo "Created symbolic link to .git in docs directory"
|
||||
fi
|
||||
cd docs
|
||||
python3 -m sphinx -T -E -b html -d _build/doctrees -D language=en . _build/html
|
||||
echo "Documentation build complete."
|
||||
- name: Verify Build Output
|
||||
run: |
|
||||
echo "Verifying build output..."
|
||||
ls -la $GITHUB_WORKSPACE/docs/_build/html
|
||||
if [ ! -f "$GITHUB_WORKSPACE/docs/_build/html/index.html" ]; then
|
||||
echo "Error: index.html not found in the build output directory."
|
||||
exit 1
|
||||
fi
|
||||
echo "Build output verification complete. index.html found."
|
||||
- name: Upload Documentation Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: generated-docs
|
||||
path: ${{ github.workspace }}/docs/_build/html
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
name: Auto Label PRs
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, closed]
|
||||
|
||||
jobs:
|
||||
apply-labels:
|
||||
runs-on: lstt5
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Add labels based on branch names
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
const pr = context.payload.pull_request;
|
||||
const baseBranch = pr.base.ref;
|
||||
const headBranch = pr.head.ref;
|
||||
let labelsApplied = false;
|
||||
|
||||
// Debug information
|
||||
console.log(`Processing PR #${pr.number}: Head: ${headBranch}, Base: ${baseBranch}`);
|
||||
|
||||
// Condition 1: PR targeting amd-mainline
|
||||
if (baseBranch === 'amd-mainline') {
|
||||
const labelToAdd = 'Merge amd-mainline';
|
||||
try {
|
||||
await github.rest.issues.addLabels({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: pr.number,
|
||||
labels: [labelToAdd]
|
||||
});
|
||||
console.log(`Added label "${labelToAdd}" to PR #${pr.number}`);
|
||||
labelsApplied = true;
|
||||
} catch (error) {
|
||||
console.error(`Error adding label "${labelToAdd}": ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
// Condition 2: Cherry-pick based on head branch name or release target
|
||||
const isCherryPickHead = /cherry.*pick/i.test(headBranch);
|
||||
const isReleaseTargetBase = baseBranch.startsWith('release/');
|
||||
|
||||
if (isCherryPickHead || isReleaseTargetBase) {
|
||||
const labelToAdd = 'cherry-pick';
|
||||
try {
|
||||
// Check if the label already exists to avoid redundant API calls if another condition also adds it (though unlikely here)
|
||||
const existingLabels = pr.labels.map(label => label.name);
|
||||
if (!existingLabels.includes(labelToAdd)) {
|
||||
await github.rest.issues.addLabels({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: pr.number,
|
||||
labels: [labelToAdd]
|
||||
});
|
||||
console.log(`Added label "${labelToAdd}" to PR #${pr.number}`);
|
||||
labelsApplied = true;
|
||||
} else {
|
||||
console.log(`Label "${labelToAdd}" already exists on PR #${pr.number}`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error adding label "${labelToAdd}": ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (!labelsApplied) {
|
||||
console.log(`PR #${pr.number} did not match criteria for automatic labeling by this workflow.`);
|
||||
}
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
name: Generate Documentation
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [amd-staging, amd-mainline, release/rocm-rel-*]
|
||||
push:
|
||||
branches: [amd-staging, amd-mainline, release/rocm-rel-*]
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
DEBCONF_NONINTERACTIVE_SEEN: true
|
||||
BUILD_TYPE: Release
|
||||
|
||||
jobs:
|
||||
generate-docs:
|
||||
name: Generate Documentation
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get branch name and path
|
||||
id: get_branch_info
|
||||
run: |
|
||||
BRANCH_NAME=""
|
||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
BRANCH_NAME="${{ github.head_ref }}"
|
||||
else
|
||||
BRANCH_NAME="${{ github.ref_name }}"
|
||||
fi
|
||||
SANITIZED_PATH=$(echo "$BRANCH_NAME" | sed -e 's|/|-|g' -e 's|[^a-zA-Z0-9._-]||g' | sed -e 's|^-*||' -e 's|-*$||')
|
||||
if [[ -z "$SANITIZED_PATH" ]]; then
|
||||
SANITIZED_PATH="docs-$(date +%s)"
|
||||
fi
|
||||
echo "original_branch_name=${BRANCH_NAME}" >> $GITHUB_OUTPUT
|
||||
echo "deployment_path=${SANITIZED_PATH}" >> $GITHUB_OUTPUT
|
||||
echo "Deploying docs for branch '${BRANCH_NAME}' to path '${SANITIZED_PATH}'"
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.10'
|
||||
|
||||
- name: Install System Dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y doxygen graphviz
|
||||
|
||||
- name: Set Up Python Environment
|
||||
run: |
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install -r docs/sphinx/requirements.txt
|
||||
|
||||
- name: Build Documentation
|
||||
run: |
|
||||
echo "Building documentation..."
|
||||
echo "Current directory: $(pwd)"
|
||||
echo "Git repository verification:"
|
||||
ls -la .git/ || echo "No .git directory found"
|
||||
git status --porcelain || echo "Git status failed, but continuing..."
|
||||
if [ ! -e "docs/.git" ]; then
|
||||
if [ -d ".git" ]; then
|
||||
ln -s ../.git docs/.git
|
||||
echo "Created symbolic link to .git in docs directory"
|
||||
else
|
||||
echo "Warning: Main .git directory not found. Git-based versioning in docs might not work."
|
||||
fi
|
||||
fi
|
||||
cd docs
|
||||
python3 -m sphinx -T -E -b html -d _build/doctrees -D language=en . _build/html
|
||||
echo "Documentation build complete."
|
||||
|
||||
- name: Verify Build Output
|
||||
run: |
|
||||
echo "Verifying build output..."
|
||||
ls -la docs/_build/html
|
||||
if [ ! -f "docs/_build/html/index.html" ]; then
|
||||
echo "Error: index.html not found in the build output directory."
|
||||
exit 1
|
||||
fi
|
||||
echo "Build output verification complete. index.html found."
|
||||
|
||||
- name: Create Artifact Directory with Index Only
|
||||
run: |
|
||||
echo "Creating artifact directory with only index.html..."
|
||||
mkdir -p artifact-output
|
||||
cp docs/_build/html/index.html artifact-output/
|
||||
echo "Artifact contents:"
|
||||
ls -la artifact-output/
|
||||
|
||||
- name: Upload Documentation Artifact (Index Only)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: generated-docs-index-${{ steps.get_branch_info.outputs.deployment_path }}
|
||||
path: artifact-output/
|
||||
@@ -1,46 +0,0 @@
|
||||
# caution: this whole file was written using Claude 3.7 Sonnet
|
||||
name: Auto Label Cherry-Pick
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
jobs:
|
||||
add-label:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: node:16-alpine
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Add label to cherry-pick and release PRs
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
const pr = context.payload.pull_request;
|
||||
const headBranch = pr.head.ref;
|
||||
const baseBranch = pr.base.ref;
|
||||
|
||||
// Check if head branch contains cherry-pick pattern or base branch starts with release/
|
||||
const isCherryPick = /cherry.*pick/i.test(headBranch);
|
||||
const isReleaseTarget = baseBranch.startsWith('release/');
|
||||
|
||||
if (isCherryPick || isReleaseTarget) {
|
||||
// Label to apply
|
||||
const labelToAdd = 'cherry-pick';
|
||||
|
||||
// Try to add the label
|
||||
try {
|
||||
await github.rest.issues.addLabels({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: pr.number,
|
||||
labels: [labelToAdd]
|
||||
});
|
||||
console.log(`Added label "${labelToAdd}" to PR #${pr.number}`);
|
||||
} catch (error) {
|
||||
console.error(`Error adding label: ${error.message}`);
|
||||
}
|
||||
} else {
|
||||
console.log('PR does not match criteria for automatic labeling');
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
name: Auto Label Mainline PRs
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, closed]
|
||||
|
||||
jobs:
|
||||
add-label:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: node:16-alpine
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Add label to PRs targeting amd-mainline
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
const pr = context.payload.pull_request;
|
||||
const baseBranch = pr.base.ref;
|
||||
|
||||
// Debug information
|
||||
console.log(`Base Branch: ${baseBranch}`);
|
||||
|
||||
// Check if PR is targeting amd-mainline branch
|
||||
const isMainlineTarget = baseBranch === 'amd-mainline';
|
||||
|
||||
if (isMainlineTarget) {
|
||||
// Label to apply
|
||||
const labelToAdd = 'Merge amd-mainline';
|
||||
|
||||
// Try to add the label
|
||||
try {
|
||||
await github.rest.issues.addLabels({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: pr.number,
|
||||
labels: [labelToAdd]
|
||||
});
|
||||
console.log(`Added label "${labelToAdd}" to PR #${pr.number}`);
|
||||
} catch (error) {
|
||||
console.error(`Error adding label: ${error.message}`);
|
||||
}
|
||||
} else {
|
||||
console.log('PR does not match criteria for automatic labeling');
|
||||
}
|
||||
Reference in New Issue
Block a user