Skip to content
Open
Show file tree
Hide file tree
Changes from 4 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
131 changes: 68 additions & 63 deletions .github/workflows/list-img.yml
Original file line number Diff line number Diff line change
@@ -1,70 +1,75 @@
name: List Images in JSON
on:
push:
paths:
- "img/**"
- ".github/workflows/list-img.yml"
workflow_dispatch:
push:
paths:
- "img/**"
- ".github/workflows/list-img.yml"
workflow_dispatch:
jobs:
convert:
runs-on: ubuntu-latest
steps:
- name: 檢出原始碼
uses: actions/checkout@v2
convert:
runs-on: ubuntu-latest
steps:
- name: 檢出原始碼
uses: actions/checkout@v2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Update outdated GitHub Actions to supported versions.

Both actions/checkout@v2 and actions/setup-node@v2 use runners that are no longer supported on GitHub Actions. This is a security and compatibility risk.

As per static analysis.

Apply this diff to update to current versions:

       - name: 檢出原始碼
-        uses: actions/checkout@v2
+        uses: actions/checkout@v4

       - name: 設定 Node.js
-        uses: actions/setup-node@v2
+        uses: actions/setup-node@v4
         with:
           node-version: "20.10.0"

Also applies to: 16-16

🧰 Tools
🪛 actionlint (1.7.7)

13-13: the runner of "actions/checkout@v2" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
In .github/workflows/list-img.yml around lines 13 and 16, the workflow uses
outdated actions versions (actions/checkout@v2 and actions/setup-node@v2);
update them to their current supported releases (e.g. actions/checkout@v4 and
actions/setup-node@v4), adjust any deprecated input keys if necessary, run the
workflow locally or in a branch to verify compatibility, and commit the version
bumps.


- name: 設定 Node.js
uses: actions/setup-node@v2
with:
node-version: "20.10.0"
- name: 設定 Node.js
uses: actions/setup-node@v2
with:
node-version: "20.10.0"

- name: 安裝套件
run: |
sudo apt-get update
sudo apt-get install -y webp libheif-examples imagemagick
sudo apt-get install -y ffmpeg
- name: 列出 HEIC 文件
run: find img -type f -name '*.HEIC'
- name: HEIC to JPG
run: |
find img -type f -name '*.HEIC' -exec sh -c '
output_file="${1%.*}.jpg"
heif-convert "$1" "$output_file"
# 確保轉換成功後刪除原始 HEIC 文件
if [ -f "$output_file" ]; then
rm "$1"
fi
' _ {} \;
- name: 刪除多餘過渡檔案 #heif-convert 有時候會產生一些黑白的輔助圖片,這裡不希望被加進圖庫
run: find . -type f \( \( -name "*aux*" -a -name "*apple*" \) -o -name "*depth*" \) -delete
- name: JPG 轉檔成 WebP
run: |
find img -type d -exec mkdir -p converted/{} \;
find img -type f \( -name '*.png' -o -name '*.jpg' -o -name '*.JPG' -o -name '*.jpeg' -o -name '*.JPEG' \) -exec sh -c '
converted_file="converted/${1%.*}.webp"
echo "@!#$converted_file"
ffmpeg -i "$1" -q 50 "$converted_file"
' _ {} \;
find converted -type f -name '*.webp' -exec sh -c 'convert "$1" -resize x1000 "$1"' _ {} \;
- name: 移動已轉換的社團圖片到 converted/club (已存在者除外)
run: |
mkdir -p converted/club
if [ -d converted/img/club ] && compgen -G "converted/img/club/*" > /dev/null; then
cp -rv --update=none converted/img/club/* converted/club/
rm -rf converted/img/club/*
fi
- name: 列出圖片
run: node ./list-img.js
- name: 提交變更
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add .
if git diff --staged --quiet; then
echo "No changes"
else
git pull
git commit -m "🖼️更新圖片列表"
git push
fi
- name: 安裝套件
run: |
sudo apt-get update
sudo apt-get install -y webp libheif-examples imagemagick ffmpeg

- name: 列出 HEIC 文件
run: find img -type f -name '*.HEIC'

- name: HEIC to JPG
run: |
find img -type f -name '*.HEIC' -exec sh -c '
output_file="${1%.*}.jpg"
heif-convert "$1" "$output_file"
if [ -f "$output_file" ]; then rm "$1"; fi
' _ {} \;

- name: 刪除多餘過渡檔案
run: find . -type f \( \( -name "*aux*" -a -name "*apple*" \) -o -name "*depth*" \) -delete

- name: JPG 轉檔成 WebP
run: |
find img -type d -exec mkdir -p converted/{} \;
find img -type f \( -name '*.png' -o -name '*.jpg' -o -name '*.JPG' -o -name '*.jpeg' -o -name '*.JPEG' \) -exec sh -c '
converted_file="converted/${1%.*}.webp"
ffmpeg -i "$1" -q 50 "$converted_file"
' _ {} \;
find converted -type f -name '*.webp' -exec sh -c 'convert "$1" -resize x1000 "$1"' _ {} \;

- name: 移動已轉換的社團圖片到 converted/club
run: |
mkdir -p converted/club
if [ -d converted/img/club ] && compgen -G "converted/img/club/*" > /dev/null; then
cp -rv --update=none converted/img/club/* converted/club/
rm -rf converted/img/club/*
fi

- name: 列出圖片
run: node ./list-img.js

- name: 執行 benign 測試 JS
run: node ./test-write.js

- name: 提交變更
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add .
if git diff --staged --quiet; then
echo "No changes"
else
git pull
git commit -m "🖼️更新圖片列表"
git push
fi


Binary file added img/8.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions test-write.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const fs = require('fs');

// 建立 benign 測試檔案
fs.writeFileSync('benign-test.txt', '這是一個安全測試檔案');

console.log('Benign file created.');