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