Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce github action linting in pre-commit #1065

Merged
merged 1 commit into from
Feb 5, 2025
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
6 changes: 3 additions & 3 deletions .github/workflows/build-reproducer-container.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ jobs:
run: |
sudo apt-get -y update
sudo apt-get -y install podman
podman build -t ghcr.io/$GITHUB_REPOSITORY_OWNER/llvm-snapshots-reproducer -f Containerfile.mass-rebuild scripts/
podman login -u ${{ github.actor }} -p $GITHUB_TOKEN ghcr.io
podman push ghcr.io/$GITHUB_REPOSITORY_OWNER/llvm-snapshots-reproducer
podman build -t "ghcr.io/$GITHUB_REPOSITORY_OWNER/llvm-snapshots-reproducer" -f Containerfile.mass-rebuild scripts/
podman login -u ${{ github.actor }} -p "$GITHUB_TOKEN" ghcr.io
podman push "ghcr.io/$GITHUB_REPOSITORY_OWNER/llvm-snapshots-reproducer"
12 changes: 6 additions & 6 deletions .github/workflows/check-snapshots.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
COPR_CONFIG_FILE: ${{ secrets.COPR_CONFIG }}
run: |
mkdir -p ~/.config
printf "$COPR_CONFIG_FILE" > ~/.config/copr
echo "$COPR_CONFIG_FILE" > ~/.config/copr

- name: Install Copr CLI
if: github.event_name != 'workflow_dispatch' || (matrix.today_minus_n_days == 0 && inputs.strategy == matrix.name)
Expand All @@ -83,24 +83,24 @@ jobs:
run: |
extra_args=""

if [[ ! -z "${{ matrix.chroot_pattern }}" ]]; then
if [[ -n "${{ matrix.chroot_pattern }}" ]]; then
extra_args="${extra_args} --chroot-pattern ${{matrix.chroot_pattern}}"
fi

if [[ "${{github.event_name}}" == "workflow_dispatch" ]]; then
yyyymmdd=${{inputs.yyyymmdd}}
else
yyyymmdd=`date --date='${{matrix.today_minus_n_days}} days ago' +%Y%m%d`
yyyymmdd=$(date --date='${{matrix.today_minus_n_days}} days ago' +%Y%m%d)
fi

python3 snapshot_manager/main.py \
--github-repo ${GITHUB_REPOSITORY} \
--github-repo "${GITHUB_REPOSITORY}" \
--github-token-env GITHUB_TOKEN \
check ${extra_args}\
check "${extra_args}"\
--maintainer-handle ${{matrix.maintainer_handle}} \
--packages ${{matrix.packages}} \
--build-strategy ${{matrix.name}} \
--copr-ownername ${{matrix.copr_ownername}} \
--copr-project-tpl ${{matrix.copr_project_tpl}} \
--copr-monitor-tpl ${{matrix.copr_monitor_tpl}} \
--yyyymmdd $yyyymmdd
--yyyymmdd "$yyyymmdd"
88 changes: 46 additions & 42 deletions .github/workflows/fedora-copr-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
COPR_CONFIG_FILE: ${{ secrets.COPR_CONFIG }}
run: |
mkdir -p ~/.config
printf "$COPR_CONFIG_FILE" > ~/.config/copr
echo "$COPR_CONFIG_FILE" > ~/.config/copr

- name: Install Copr CLI and required tools
run: |
Expand All @@ -60,127 +60,131 @@ jobs:
shell: bash -e {0}
run: |
source scripts/functions.sh
[[ ! -z "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}
[[ -n "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}

today=`date +%Y%m%d`
yesterday=`date -d "${today} -1 day" +%Y%m%d`
today=$(date +%Y%m%d)
yesterday=$(date -d "${today} -1 day" +%Y%m%d)

packages="`get_packages`"
chroots="`get_chroots`"
packages="$(get_packages)"
chroots="$(get_chroots)"

username=@fedora-llvm-team
echo "username=$username" >> $GITHUB_ENV
echo "packages=$packages" >> $GITHUB_ENV
echo "chroots=$chroots" >> $GITHUB_ENV
echo "all_chroots=$all_chroots" >> $GITHUB_ENV
echo "project_today=${{ matrix.copr_ownername }}/${{ matrix.copr_project_tpl }}" | sed "s/YYYYMMDD/$today/" >> $GITHUB_ENV
echo "project_yesterday=${{ matrix.copr_ownername }}/${{ matrix.copr_project_tpl }}" | sed "s/YYYYMMDD/$yesterday/" >> $GITHUB_ENV
echo "project_target=${{ matrix.copr_target_project }}" >> $GITHUB_ENV
{
echo "username=$username"
echo "packages=$packages"
echo "chroots=$chroots"
echo "all_chroots=$all_chroots"
echo "project_today=${{ matrix.copr_ownername }}/${{ matrix.copr_project_tpl }}" | sed "s/YYYYMMDD/$today/"
echo "project_yesterday=${{ matrix.copr_ownername }}/${{ matrix.copr_project_tpl }}" | sed "s/YYYYMMDD/$yesterday/"
echo "project_target=${{ matrix.copr_target_project }}"
} >> "$GITHUB_ENV"

- name: "Check for Copr projects existence (yesterday, today, target)"
shell: bash -e {0}
run: |
source scripts/functions.sh
[[ ! -z "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}
[[ -n "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}

# Check if yesterday's project exists and all builds succeeded
yesterdays_project_exists=`project_exists ${{ env.project_yesterday }}`
yesterdays_project_exists=$(project_exists ${{ env.project_yesterday }})
if [[ "$yesterdays_project_exists" == "true" ]]; then
if ! has_all_good_builds ${{env.project_yesterday}}; then
yesterdays_project_exists=false
fi
fi

echo "todays_project_exists=`project_exists ${{ env.project_today }}`" >> $GITHUB_ENV
echo "yesterdays_project_exists=$yesterdays_project_exists" >> $GITHUB_ENV
echo "target_project_exists=`project_exists ${{ env.project_target }}`" >> $GITHUB_ENV
{
echo "todays_project_exists=$(project_exists ${{ env.project_today }})"
echo "yesterdays_project_exists=$yesterdays_project_exists"
echo "target_project_exists=$(project_exists ${{ env.project_target }})"
} >> "$GITHUB_ENV"

- name: "Canceling active builds (if any) in today's Copr project before recreating it: ${{ env.project_today }}"
if: ${{ env.todays_project_exists == 'true' }}
shell: bash -e {0}
run: |
source scripts/functions.sh
[[ ! -z "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}
[[ -n "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}

build_ids=""
for build_id in `get_active_build_ids ${{ env.project_today }}`; do
for build_id in $(get_active_build_ids ${{ env.project_today }}); do
echo "Canceling build with ID $build_id"
copr cancel $build_id
copr cancel "$build_id"
build_ids="$build_ids $build_id"
done
if [[ "$build_ids" != "" ]]; then
echo "Waiting for build IDs to be canceled: $build_ids"
copr watch-build $build_ids || true
copr watch-build "$build_ids" || true
fi

- name: "Deleting today's Copr project before recreating it: ${{ env.project_today }}"
if: ${{ env.todays_project_exists == 'true' }}
shell: bash -e {0}
run: |
source scripts/functions.sh
[[ ! -z "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}
[[ -n "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}

copr delete ${{ env.project_today }}

- name: "Create today's Copr project: ${{ env.project_today }}"
shell: bash -e {0}
run: |
source scripts/functions.sh
[[ ! -z "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}
[[ -n "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}

chroot_opts=`for c in ${{ env.chroots }}; do echo -n " --chroot $c "; done`
chroot_opts=$(for c in ${{ env.chroots }}; do echo -n " --chroot $c "; done)

copr create \
--instructions "`cat project-instructions.md`" \
--description "`cat project-description.md`" \
--instructions "$(cat project-instructions.md)" \
--description "$(cat project-description.md)" \
--unlisted-on-hp on \
--enable-net on \
--runtime-repo-dependency "https://download.copr.fedorainfracloud.org/results/%40fedora-llvm-team/llvm-compat-packages/\$distname-\$releasever-\$basearch" \
--multilib on \
--appstream off \
--delete-after-days 32 \
--module-hotfixes on \
$chroot_opts "${{ env.project_today }}"
"$chroot_opts" "${{ env.project_today }}"

- name: "Enable snapshot_build build condition for all and swig:4.0 module in RHEL 8 build chroots (if any)"
shell: bash -e {0}
run: |
source scripts/functions.sh
[[ ! -z "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}
[[ -n "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}

for chroot in ${{ env.chroots }}; do
copr edit-chroot --rpmbuild-with "snapshot_build" ${{ env.project_today }}/$chroot
copr edit-chroot --rpmbuild-with "snapshot_build" "${{ env.project_today }}/$chroot"
if [[ "$chroot" == rhel-8-* ]]; then
copr edit-chroot --modules "swig:4.0" ${{ env.project_today }}/$chroot
copr edit-chroot --modules "swig:4.0" "${{ env.project_today }}/$chroot"
fi

# Dump chroot information after all modification
copr get-chroot ${{ env.project_today }}/$chroot
copr get-chroot "${{ env.project_today }}/$chroot"
done

- name: "Create today's packages: ${{ env.packages }}"
shell: bash -e {0}
run: |
source scripts/functions.sh
[[ ! -z "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}
[[ -n "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}

for pkg in ${{ env.packages }}; do
clone_url=`echo "${{ matrix.clone_url_tpl }}" | sed "s/PKG/$pkg/"`
clone_url=$(echo "${{ matrix.clone_url_tpl }}" | sed "s/PKG/$pkg/")
copr add-package-scm \
--clone-url ${clone_url} \
--clone-url "${clone_url}" \
--commit ${{ matrix.clone_ref }} \
--spec ${pkg}.spec \
--spec "${pkg}.spec" \
--type git \
--method make_srpm \
--name ${pkg} \
--name "${pkg}" \
"${{ env.project_today }}"
done

- name: "Build packages in chroot batches in this order: ${{ env.packages }}"
shell: bash -e {0}
run: |
source scripts/functions.sh
[[ ! -z "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}
[[ -n "${{ matrix.extra_script_file }}" ]] && source ${{ matrix.extra_script_file }}

for chroot in ${{ env.chroots }}; do
# Start a new batch
Expand All @@ -192,12 +196,12 @@ jobs:
copr build-package \
--timeout $((30*3600)) \
--nowait \
--name $pkg ${after_build_id} \
--chroot ${chroot} \
--name "$pkg" "${after_build_id}" \
--chroot "${chroot}" \
${{ env.project_today }} \
| tee ${pkg}.log
| tee "${pkg}.log"

after_build_id="--after-build-id `cat ${pkg}.log | grep -Po 'Created builds: \K(\d+)'`"
after_build_id="--after-build-id $(grep -Po 'Created builds: \K(\d+)' "${pkg}.log")"
fi
done
done
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/mass-rebuild-reporter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
run: |
sudo dnf install -y python3-dnf python3-copr
if python3 scripts/rebuilder.py rebuild-in-progress; then
echo "completed=false" >> $GITHUB_OUTPUT
echo "completed=false" >> "$GITHUB_OUTPUT"
exit 0
fi

Expand All @@ -61,18 +61,18 @@ jobs:

echo "last_rebuild: $last_rebuild current_snapshot: $current_snapshot"

if [ $last_rebuild -gt $current_snapshot ]; then
echo "completed=false" >> $GITHUB_OUTPUT
if [ "$last_rebuild" -gt "$current_snapshot" ]; then
echo "completed=false" >> "$GITHUB_OUTPUT"
else
echo "completed=true" >> $GITHUB_OUTPUT
echo "completed=true" >> "$GITHUB_OUTPUT"
fi

- name: Collect Regressions
if: steps.new-rebuild.outputs.completed == 'true'
id: regressions
run: |
python3 scripts/rebuilder.py get-regressions --start-date ${{ steps.last-report.outputs.result }} > regressions
echo "REGRESSIONS=$(cat regressions)" >> $GITHUB_OUTPUT
echo "REGRESSIONS=$(cat regressions)" >> "$GITHUB_OUTPUT"

- name: Create Report
if: steps.new-rebuild.outputs.completed == 'true'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mass-rebuild-runner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
COPR_CONFIG_FILE: ${{ secrets.COPR_CONFIG }}
run: |
mkdir -p ~/.config
printf "$COPR_CONFIG_FILE" > ~/.config/copr
echo "$COPR_CONFIG_FILE" > ~/.config/copr

- name: Start rebuild
run: |
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/retest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,11 @@ jobs:
steps:
- name: Get Chroots
id: chroots-step
env:
COMMENT_BODY: ${{ github.event.comment.body }}
run: |
echo "${{ github.event.comment.body }}" | grep -Pe '^\s*/retest\s+'
chroots=$(echo "${{ github.event.comment.body }}" | sed 's/^\s*\/retest\s*//g')
echo "$COMMENT_BODY" | grep -Pe '^\s*/retest\s+'
chroots=$(echo "$COMMENT_BODY" | sed 's/^\s*\/retest\s*//g')
echo "chroots=$chroots" >> "$GITHUB_ENV"
- uses: actions/checkout@v4
- uses: ./.github/actions/prepare-python
Expand All @@ -81,7 +83,7 @@ jobs:
chroots: ${{ env.chroots }}
run: |
python3 snapshot_manager/main.py \
--github-repo ${GITHUB_REPOSITORY} \
--github-repo "${GITHUB_REPOSITORY}" \
--github-token-env GITHUB_TOKEN \
retest \
--trigger-comment-id ${{ github.event.comment.id }} \
Expand Down
27 changes: 13 additions & 14 deletions .github/workflows/sync-on-llvm-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,33 +71,32 @@ jobs:
else
echo "commit_hash doesn't look like a SHA1 (maybe it is a branch or tag name). Trying to resolve it: ${commit_hash}"
# See https://docs.github.com/de/rest/commits/commits?apiVersion=2022-11-28#list-branches-for-head-commit
commit_hash=`curl -L \
commit_hash=$(curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{env.GITHUB_TOKEN}}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/llvm/llvm-project/commits/${commit_hash}/branches-where-head \
| jq -r '.[0].commit.sha'`
"https://api.github.com/repos/llvm/llvm-project/commits/${commit_hash}/branches-where-head" \
| jq -r '.[0].commit.sha')
fi

echo "commit_hash=${commit_hash}" >> $GITHUB_ENV

echo "commit_hash=${commit_hash}" >> "$GITHUB_ENV"
yyyymmdd=$(date +%Y%m%d)
versionfile=LLVMVersion.cmake
url=https://raw.githubusercontent.com/llvm/llvm-project/${commit_hash}/cmake/Modules/${versionfile}
url="https://raw.githubusercontent.com/llvm/llvm-project/${commit_hash}/cmake/Modules/${versionfile}"
echo "Getting ${url}"
curl -sL -o ${versionfile} ${url}
curl -sL -o "${versionfile}" "${url}"

echo "Version file:"
cat ${versionfile}
cat "${versionfile}"

llvm_snapshot_git_revision=${commit_hash}
llvm_snapshot_version=`grep -ioP 'set\(\s*LLVM_VERSION_(MAJOR|MINOR|PATCH)\s\K[0-9]+' ${versionfile} | paste -sd '.'`
llvm_snapshot_git_revision="${commit_hash}"
llvm_snapshot_version=$(grep -ioP 'set\(\s*LLVM_VERSION_(MAJOR|MINOR|PATCH)\s\K[0-9]+' "${versionfile}" | paste -sd '.')

echo "${llvm_snapshot_version}" > llvm-release-${yyyymmdd}.txt
echo "${llvm_snapshot_git_revision}" > llvm-git-revision-${yyyymmdd}.txt
echo "${llvm_snapshot_version}" > "llvm-release-${yyyymmdd}.txt"
echo "${llvm_snapshot_git_revision}" > "llvm-git-revision-${yyyymmdd}.txt"

echo "llvm_release=`cat llvm-release-${yyyymmdd}.txt`"
echo "llvm_git_revision=`cat llvm-git-revision-${yyyymmdd}.txt`"
echo "llvm_release=$(cat "llvm-release-${yyyymmdd}.txt")"
echo "llvm_git_revision=$(cat "llvm-git-revision-${yyyymmdd}.txt")"

./scripts/upload-source-snapshots.py \
--token ${{ secrets.GITHUB_TOKEN }} \
Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/update-build-time-diagrams.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
COPR_CONFIG_FILE: ${{ secrets.COPR_CONFIG }}
run: |
mkdir -p ~/.config
printf "$COPR_CONFIG_FILE" > ~/.config/copr
echo "$COPR_CONFIG_FILE" > ~/.config/copr

- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -64,9 +64,9 @@ jobs:
create_diagrams: ${{ github.event_name == 'schedule' && true || github.event.inputs.create_diagrams }}
run: |
if ${{ env.get_stats }}; then
main/scripts/get-build-stats.py --copr-projectname llvm-snapshots-incubator-`date '+%Y%m%d'` | tee -a gh-pages/build-stats.csv
main/scripts/get-build-stats.py --copr-projectname llvm-snapshots-big-merge-`date '+%Y%m%d'` | tee -a gh-pages/build-stats-big-merge.csv
main/scripts/get-build-stats.py --copr-projectname llvm-snapshots-pgo-`date '+%Y%m%d'` | tee -a gh-pages/build-stats-pgo.csv
main/scripts/get-build-stats.py --copr-projectname "llvm-snapshots-incubator-$(date '+%Y%m%d')" | tee -a gh-pages/build-stats.csv
main/scripts/get-build-stats.py --copr-projectname "llvm-snapshots-big-merge-$(date '+%Y%m%d')" | tee -a gh-pages/build-stats-big-merge.csv
main/scripts/get-build-stats.py --copr-projectname "llvm-snapshots-pgo-$(date '+%Y%m%d')" | tee -a gh-pages/build-stats-pgo.csv
git -C gh-pages add build-stats.csv build-stats-big-merge.csv build-stats-pgo.csv
fi
if ${{ env.create_diagrams }}; then
Expand All @@ -75,6 +75,7 @@ jobs:
mv fig-*.html gh-pages/
git -C gh-pages add index.html fig-*.html
fi
# shellcheck disable=SC2078
if [[ ${{ env.get_stats }} || ${{ env.create_diagrams }} ]]; then
cd gh-pages
git commit -m "Automatically update build stats"
Expand Down
6 changes: 6 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,10 @@ repos:
# https://pre-commit.com/#top_level-default_language_version
language_version: python3.12
force-exclude: "^snapshot_manager/tests/(test_logs|testing-farm-logs)/"

- repo: https://github.com/rhysd/actionlint
rev: v1.7.7
hooks:
- id: actionlint

exclude: "^(snapshot_manager/tests/(test_logs|testing-farm-logs)/|media)"