Skip to content

Commit 7ddd582

Browse files
authored
Update download-cache.yml
1 parent 7f70fa5 commit 7ddd582

File tree

1 file changed

+80
-3
lines changed

1 file changed

+80
-3
lines changed

.github/workflows/download-cache.yml

Lines changed: 80 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ jobs:
1515
runs-on: ubuntu-latest
1616
outputs:
1717
sources: ${{ steps.step1.outputs.sources }}
18+
pkgs: ${{ steps.step1.outputs.pkgs }}
1819
steps:
1920
- name: "Checkout"
2021
uses: "actions/checkout@v4"
@@ -24,12 +25,88 @@ jobs:
2425
- name: "Create Matrix Variable"
2526
id: step1
2627
run: |
27-
VALUE=$(cat config/source.json | jq -M -c keys)
28-
echo 'sources='"$VALUE" >> "$GITHUB_OUTPUT"
28+
SOURCE_VALUE=$(cat config/source.json | jq -M -c keys)
29+
PKG_VALUE=$(cat config/pkg.json | jq -M -c keys)
30+
echo 'sources='"$SOURCE_VALUE" >> "$GITHUB_OUTPUT"
31+
echo 'pkgs='"$PKG_VALUE" >> "$GITHUB_OUTPUT"
2932
3033
# parse
34+
download-pkg:
35+
name: "Download package ${{ matrix.pkg }}"
36+
runs-on: ubuntu-latest
37+
needs: define-matrix
38+
timeout-minutes: 60
39+
strategy:
40+
matrix:
41+
pkg: ${{ fromJSON(needs.define-matrix.outputs.pkgs) }}
42+
fail-fast: false
43+
steps:
44+
- name: "Checkout"
45+
uses: "actions/checkout@v4"
46+
with:
47+
repository: crazywhalecc/static-php-cli
48+
- name: "Setup static-php environment"
49+
run: |
50+
bin/setup-runtime
51+
bin/php bin/composer install --no-dev --no-ansi -q --no-interaction
52+
- name: "Download package ${{ matrix.pkg }}"
53+
run: bin/php bin/spc install-pkg ${{ matrix.pkg }} --debug --no-alt --shallow-clone
54+
- name: "Parse lock file and re-package with file"
55+
run: |
56+
rename_file() {
57+
local src_file="$1"
58+
local target="$2"
59+
local destination_dir="$3"
60+
61+
if [[ ! -f "$src_file" ]]; then
62+
echo "Error: '$src_file' is not a valid file" >&2
63+
return 1
64+
fi
65+
66+
if [[ "$src_file" =~ \.tar\.(gz|xz)$ ]]; then
67+
local ext=".tar.${BASH_REMATCH[1]}"
68+
local base_name="${src_file%$ext}"
69+
if [[ -z "$base_name" ]]; then
70+
echo "Error: Invalid filename '$src_file'" >&2
71+
return 1
72+
fi
73+
74+
elif [[ "$src_file" =~ \.[^./]+$ ]]; then
75+
local ext=".${src_file##*.}"
76+
local base_name="${src_file%.$ext}"
77+
else
78+
echo "Skip: '$src_file' has no extension" >&2
79+
return 0
80+
fi
81+
82+
local new_name="${target}${ext}"
83+
cp -- "$src_file" "$new_name"
84+
mv "$new_name" "$destination_dir"/
85+
echo "Renamed: $src_file -> $destination_dir/$new_name"
86+
}
87+
mkdir downloads-mirror-${{ matrix.pkg }}
88+
SOURCE_TYPE=$(cat downloads/.lock.json | jq -M -c -r '."${{ matrix.pkg }}".source_type')
89+
if [ "$SOURCE_TYPE" = "archive" ]; then
90+
cd downloads
91+
rename_file $(cat .lock.json | jq -M -c -r '."${{ matrix.pkg }}".filename') ${{ matrix.pkg }}-spc-mirror ../downloads-mirror-${{ matrix.pkg }}
92+
cd ..
93+
else
94+
cd downloads
95+
tar --exclude-vcs -czvf ${{ matrix.pkg }}-spc-mirror.tgz $(cat .lock.json | jq -M -c -r '."${{ matrix.pkg }}".dirname')
96+
mv ${{ matrix.pkg }}-spc-mirror.tgz ../downloads-mirror-${{ matrix.pkg }}/
97+
cd ..
98+
fi
99+
- name: "Deploy to OSS"
100+
uses: shallwefootball/s3-upload-action@master
101+
with:
102+
aws_key_id: ${{ secrets.AWS_KEY_ID }}
103+
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
104+
aws_bucket: ${{ secrets.AWS_BUCKET }}
105+
source_dir: downloads-mirror-${{ matrix.pkg }}/
106+
destination_dir: static-php-cli/deps/spc-download-mirror/${{ matrix.pkg }}/
107+
endpoint: ${{ secrets.AWS_ENDPOINT }}
31108
download-source:
32-
name: "Download ${{ matrix.source }}"
109+
name: "Download source ${{ matrix.source }}"
33110
runs-on: ubuntu-latest
34111
needs: define-matrix
35112
timeout-minutes: 60

0 commit comments

Comments
 (0)