Delete programs/x86_64/kawanime #74
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Test random 💯" | |
env: | |
TERM: xterm | |
on: | |
push: | |
branches: main | |
paths: 'programs/x86_64/**' | |
#pull_request: | |
# branches: main | |
# paths: 'programs/x86_64/**' | |
workflow_dispatch: | |
schedule: | |
- cron: '0 23 * * *' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: false | |
permissions: | |
actions: write | |
contents: write | |
jobs: | |
generate-matrix: | |
name: "build Matrix 🌀" | |
runs-on: ubuntu-22.04 | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
count: ${{ steps.am-install.outputs.count }} | |
steps: | |
- name: "Check out repository 🏃" | |
uses: actions/checkout@v4 | |
- name: "Show stats 📝" | |
run: | | |
x64Count=$(find programs/x86_64/ -type f | wc -l) | |
i68Count=$(find programs/i686/ -type f | wc -l) | |
a64Count=$(find programs/aarch64/ -type f | wc -l) | |
echo '### apps' >> $GITHUB_STEP_SUMMARY | |
echo "$x64Count x86_64" >> $GITHUB_STEP_SUMMARY | |
echo "$i68Count i686" >> $GITHUB_STEP_SUMMARY | |
echo "$a64Count aarch64" >> $GITHUB_STEP_SUMMARY | |
- name: "Generate Matrix 🏆" | |
id: set-matrix | |
run: | | |
mkdir -p results | |
find programs/x86_64/ -maxdepth 1 -type f -printf "%f\n" | sort > all.list | |
if [[ -f tested.list ]]; then | |
comm -23 all.list tested.list > totest.list | |
else | |
cp all.list totest.list | |
fi | |
FILES=$(shuf -n 100 totest.list || cat totest.list) | |
MATRIX="{\"include\": [" | |
for file in $FILES; do | |
MATRIX+="{\"file\": \"$file\"}," | |
done | |
MATRIX="${MATRIX%,}]}" | |
echo "::set-output name=matrix::$MATRIX" | |
run-actions: | |
name: "🔨" | |
needs: generate-matrix | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} | |
env: | |
TIMEOUT: 10 | |
steps: | |
- name: "Check out repository 🏃" | |
uses: actions/checkout@v4 | |
- name: "Install dependencies 📦️" | |
run: | | |
sudo apt-get -y update | |
sudo apt-get -y install wget curl torsocks zsync 2> /dev/null | |
- name: "Install AM 🎁" | |
run: | | |
mkdir -p results /usr/local/bin | |
chmod +x ./INSTALL | |
sudo ./INSTALL | |
- name: "test ${{ matrix.file }} 🚧" | |
run: | | |
mkdir -p results | |
APP="${{ matrix.file }}" | |
script_content=$(curl -Ls https://raw.githubusercontent.com/ivan-hc/AM/main/programs/x86_64/"$APP") | |
pure_arg=$(echo "$APP" | sed 's/\.appimage//g; s/\^debian-testing-//g; s/\-appimage$//g' | sed 's:.*/::') | |
if [ ! -d /opt/"$pure_arg" ] \ | |
&& [ "$APP" != code ] \ | |
&& [ "$APP" != libfuse2 ] \ | |
&& [ "$APP" != libreoffice ] \ | |
&& [ "$APP" != mpv ] \ | |
&& [ "$APP" != npm ] \ | |
&& [ "$APP" != wine ] \ | |
&& [ -z "$(PATH=/usr/local/bin command -v "$pure_arg" 2>/dev/null)" ] \ | |
&& ! echo "$script_content" | grep -q "^#.*spooky" \ | |
&& ! echo "$APP" | grep -q "deadbeef" \ | |
&& timeout "$TIMEOUT"m am -i "${{ matrix.file }}" --debug; then | |
echo "" | |
echo " Structure of the directory in /opt" | |
echo "" | |
if test -d /opt/kdegames; then | |
ls /opt/kdegames | |
elif test -d /opt/kdeutils; then | |
ls /opt/kdeutils | |
elif test -d /opt/platform-tools; then | |
ls /opt/platform-tools | |
elif test -d /opt/"$APP"; then | |
ls /opt/"$APP" | |
else | |
ls /opt/"$pure_arg" | |
fi | |
echo "" | |
echo "-------------------------------------------------------------" | |
echo "" | |
echo " Command in \$PATH" | |
echo "" | |
command -v "$pure_arg" || ls /usr/local/bin | |
echo "" | |
echo "-------------------------------------------------------------" | |
echo "" | |
echo " Launchers in /usr/local/share/applications" | |
echo "" | |
if test -f /usr/local/share/applications/*AM.desktop 2>/dev/null; then | |
ls /usr/local/share/applications | grep "AM.desktop$" | |
else | |
ls /usr/local/share/applications | |
fi | |
echo "" | |
echo "-------------------------------------------------------------" | |
am -R "${{ matrix.file }}" && echo "${{ matrix.file }}" > results/results-${{ matrix.file }} | |
else | |
if [[ $? -eq 124 ]]; then | |
echo "### :boom: Timeout $TIMEOUT minutes reached ${{ matrix.file }}!" >> $GITHUB_STEP_SUMMARY | |
else | |
echo "### :skull: FAIL: ${{ matrix.file }}" >> $GITHUB_STEP_SUMMARY | |
fi | |
exit 1 | |
fi | |
- name: "Upload Test Results ⬆️" | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: results-${{ matrix.file }} | |
path: results/results-${{ matrix.file }} | |
update-tested-list: | |
name: "save tested.list 🔨" | |
needs: run-actions | |
runs-on: ubuntu-22.04 | |
if: always() | |
steps: | |
- name: "Check out repository 🏃" | |
uses: actions/checkout@v4 | |
- name: "Download Test Results ⬇️" | |
uses: actions/download-artifact@v4 | |
with: | |
path: results | |
pattern: results-* | |
merge-multiple: true | |
- run: ls -R results | |
- name: "Aggregate Results 🏁" | |
run: | | |
mkdir -p results | |
for file in results/*; do | |
cat "$file" >> aggregated.list | |
done | |
cat aggregated.list >> tested.list | |
sort -u tested.list -o tested.list | |
rm -rf results | |
git config --global user.name "github-actions[bot]" | |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
git pull | |
git add tested.list | |
git commit -m "update tested.list" | |
git push && echo "### ⭐ tested.list updated" >> $GITHUB_STEP_SUMMARY | |
delete-all-artifacts: | |
name: "Delete all artifacts 🧹" | |
runs-on: ubuntu-22.04 | |
needs: update-tested-list | |
if: always() | |
steps: | |
- name: "Check out repository 🏃" | |
uses: actions/checkout@v4 | |
- name: "Delete Artifacts 🙈" | |
env: | |
REPO_NAME: ${{ github.repository }} | |
RUN_ID: ${{ github.run_id }} | |
TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
echo "Fetching and deleting all artifacts for run ID: $RUN_ID" | |
PAGE=1 | |
DELETED=0 | |
while true; do | |
RESPONSE=$(curl -s -H "Authorization: token $TOKEN" \ | |
"https://api.github.com/repos/$REPO_NAME/actions/runs/$RUN_ID/artifacts?per_page=100&page=$PAGE") | |
ARTIFACT_IDS=$(echo "$RESPONSE" | jq -r '.artifacts[].id') | |
if [[ -z "$ARTIFACT_IDS" ]]; then | |
echo "No more artifacts to delete. Total deleted: $DELETED" | |
break | |
fi | |
for ARTIFACT_ID in $ARTIFACT_IDS; do | |
echo "Deleting artifact with ID: $ARTIFACT_ID" | |
curl -X DELETE -s -H "Authorization: token $TOKEN" \ | |
"https://api.github.com/repos/$REPO_NAME/actions/artifacts/$ARTIFACT_ID" | |
((DELETED+=1)) | |
done | |
((PAGE+=1)) | |
done | |
echo "Successfully deleted $DELETED artifacts." | |