Skip to content

Commit

Permalink
Introduce github action linting in pre-commit
Browse files Browse the repository at this point in the history
  • Loading branch information
kwk committed Feb 5, 2025
1 parent 82c989c commit 4e38aa4
Show file tree
Hide file tree
Showing 9 changed files with 90 additions and 78 deletions.
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)"

0 comments on commit 4e38aa4

Please sign in to comment.