Skip to content

Commit 417648e

Browse files
authored
Optimize/workflow add cache (#669)
* optimize(CI): 优化CI工作流,增加 PHP 扩展缓存和 Composer 缓存设置 * fix(workflow): 修正 Swoole 扩展配置,更新 PHP 扩展缓存设置 * fix(workflow): 修正 Swoole 版本号格式,去掉前缀 'v' * fix(workflow): 使用环境变量 PHP_EXTENSIONS 替代硬编码扩展列表 * fix(workflow): 更新 Composer 缓存键以包含 PHP 和 Swoole 版本信息 * fix(workflow): 修正 Swow 扩展配置,去掉版本号后缀 * fix(workflow): 更新 PHP 和 Swoole 版本至 8.3 和 master,添加缺失的依赖包 * fix(workflow): 添加 execute_install_scripts 参数以执行安装脚本 * fix(workflow): 移动 cache-apt-pkgs-action 步骤至生成 PHP_EXTENSIONS 缓存密钥之后 * fix(workflow): 更新 PHP 和 Swoole 版本至 8.3 和 master,移除不必要的缓存步骤 * fix(workflow): 添加 Swoole 配置以禁用短名称并验证安装 * fix(workflow): 添加 Swoole 配置以启用 Fiber Mock * fix(workflow): 移除 Swoole 和 Swow 安装步骤中的不必要 APT 包依赖 * 测试不恢复apt 包 * fix(workflow): 移除 Swoole 安装步骤中的 APT 包缓存设置 * fix(workflow): 添加 APT 包缓存设置以优化 Swoole 和 Swow 安装步骤
1 parent 2ff8c5f commit 417648e

File tree

2 files changed

+82
-49
lines changed

2 files changed

+82
-49
lines changed

.github/workflows/code-coverage.yml

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,23 @@ name: Code Coverage Upload
22

33
on:
44
push:
5+
paths:
6+
- 'app/**'
7+
- 'config/**'
8+
- 'composer.*'
9+
- 'databases/**'
10+
- 'tests/**'
11+
- '.github/ci/**'
12+
- '.github/workflows/code-coverage.yml'
513
pull_request:
14+
paths:
15+
- 'app/**'
16+
- 'config/**'
17+
- 'composer.*'
18+
- 'databases/**'
19+
- 'tests/**'
20+
- '.github/ci/**'
21+
- '.github/workflows/code-coverage.yml'
622
schedule:
723
- cron: '0 2 * * *'
824

@@ -13,8 +29,8 @@ jobs:
1329
strategy:
1430
matrix:
1531
os: [ ubuntu-latest ]
16-
php-version: [ '8.1' ]
17-
sw-version: [ 'v5.1.3']
32+
php-version: [ '8.3' ]
33+
sw-version: [ 'master' ]
1834
exclude:
1935
- php-version: '8.3'
2036
sw-version: 'v5.0.3'
@@ -24,38 +40,35 @@ jobs:
2440
SW_VERSION: ${{ matrix.sw-version }}
2541
MYSQL_VERSION: '8.0'
2642
PGSQL_VERSION: '14'
43+
PHP_EXTENSIONS: redis, pdo, pdo_mysql, sqlsrv, pdo_sqlsrv, pdo_odbc, bcmath, swoole-${{ matrix.sw-version }}
2744
steps:
2845
- name: Checkout
2946
uses: actions/checkout@v4
30-
- name: Upgrade
31-
run: |
32-
sudo apt-get clean
33-
sudo apt-get update
34-
sudo apt-get upgrade -f
3547
- name: Setup PHP
3648
uses: shivammathur/setup-php@v2
3749
with:
3850
php-version: ${{ matrix.php-version }}
39-
tools: phpize
40-
extensions: redis, pdo, pdo_mysql, bcmath
51+
extensions: ${{ env.PHP_EXTENSIONS }}
4152
ini-values: opcache.enable_cli=0
4253
coverage: xdebug
43-
- name: Install Swoole
54+
- name: Set Swoole Shortname
4455
run: |
45-
wget https://github.com/swoole/swoole-src/archive/${SW_VERSION}.tar.gz -O swoole.tar.gz
46-
mkdir -p swoole
47-
tar -xf swoole.tar.gz -C swoole --strip-components=1
48-
rm swoole.tar.gz
56+
sudo sh -c "echo swoole.use_shortname='Off' >> /etc/php/${{ matrix.php-version }}/cli/conf.d/swoole.ini"
57+
php --ri swoole
58+
php --ri xdebug
59+
- name: Get Composer Cache Directory
60+
id: composer-cache
61+
run: echo "composer_cache_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
62+
- name: Setup composer cache
63+
uses: actions/cache@v4
64+
with:
65+
path: ${{ steps.composer-cache.outputs.composer_cache_dir }}
66+
key: ${{ matrix.os }}-php-${{ matrix.php-version }}-swoole-${{ matrix.sw-version }}-composer-${{ hashFiles('**/composer.lock') }}
67+
restore-keys: ${{ matrix.os }}-php-${{ matrix.php-version }}-swoole-${{ matrix.sw-version }}-composer-
4968
- name: Setup Swoole
5069
run: |
51-
sudo apt-get install libcurl4-openssl-dev libc-ares-dev libpq-dev
52-
cd swoole
53-
phpize
54-
./configure --enable-openssl --enable-swoole-curl --enable-cares --enable-swoole-pgsql --enable-brotli
55-
make -j$(nproc)
56-
sudo make install
57-
sudo sh -c "echo extension=swoole > /etc/php/${{ matrix.php-version }}/cli/conf.d/swoole.ini"
5870
sudo sh -c "echo swoole.use_shortname='Off' >> /etc/php/${{ matrix.php-version }}/cli/conf.d/swoole.ini"
71+
sudo sh -c "echo 'swoole.enable_fiber_mock=On' >> /etc/php/${{ matrix.php-version }}/cli/conf.d/20-xdebug.ini"
5972
php --ri swoole
6073
php --ri xdebug
6174
- name: Setup Packages

.github/workflows/test.yml

Lines changed: 48 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ on:
2222
- cron: '0 2 * * *'
2323
jobs:
2424
cs-fix:
25-
name: PHP CS Fix on PHP${{ matrix.php-version }} ${{ matrix.swoole }}
25+
name: PHP CS Fix on PHP${{ matrix.php-version }} ${{ matrix.sw-version }}
2626
runs-on: ubuntu-latest
2727
strategy:
2828
matrix:
2929
os: [ ubuntu-latest ]
30-
php-version: [ '8.1' ]
31-
swoole: [ 'swoole' ]
30+
php-version: [ '8.3' ]
31+
sw-version: [ 'master' ]
32+
env:
33+
PHP_EXTENSIONS: redis, pdo, pdo_mysql, sqlsrv, pdo_sqlsrv, pdo_odbc, bcmath, swoole-${{ matrix.sw-version }}
3234
steps:
3335
- name: Checkout
3436
uses: actions/checkout@v4
@@ -37,17 +39,16 @@ jobs:
3739
with:
3840
php-version: '8.1'
3941
tools: php-cs-fixer
40-
extensions: redis, pdo, pdo_mysql, bcmath, ${{ matrix.swoole }}
42+
extensions: ${{ env.PHP_EXTENSIONS }}
4143
- name: Get Composer Cache Directory
4244
id: composer-cache
43-
run: |
44-
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
45-
- uses: actions/cache@v4
45+
run: echo "composer_cache_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
46+
- name: Setup composer cache
47+
uses: actions/cache@v4
4648
with:
47-
path: ${{ steps.composer-cache.outputs.dir }}
48-
key: ${{ matrix.php-version }}-composer
49-
restore-keys: |
50-
${{ matrix.php-version }}-composer
49+
path: ${{ steps.composer-cache.outputs.composer_cache_dir }}
50+
key: ${{ matrix.os }}-php-${{ matrix.php-version }}-swoole-${{ matrix.sw-version }}-composer-${{ hashFiles('**/composer.lock') }}
51+
restore-keys: ${{ matrix.os }}-php-${{ matrix.php-version }}-swoole-${{ matrix.sw-version }}-composer-
5152
- name: Setup Packages
5253
run: ./.github/ci/requirement.install.sh
5354
- name: Run CS Fix
@@ -71,20 +72,16 @@ jobs:
7172
SW_VERSION: ${{ matrix.sw-version }}
7273
MYSQL_VERSION: '8.0'
7374
PGSQL_VERSION: '14'
75+
PHP_EXTENSIONS: redis, pdo, pdo_mysql, sqlsrv, pdo_sqlsrv, pdo_odbc, bcmath
7476
steps:
7577
- name: Checkout
7678
uses: actions/checkout@v4
77-
- name: Upgrade
78-
run: |
79-
sudo apt-get clean
80-
sudo apt-get update
81-
sudo apt-get upgrade -f
8279
- name: Setup PHP TS
8380
uses: shivammathur/setup-php@v2
8481
with:
85-
php-version: ${{ matrix.php-version }}
8682
tools: phpize
87-
extensions: redis, pdo, pdo_mysql,sqlsrv,pdo_sqlsrv,pdo_odbc,bcmath
83+
php-version: ${{ matrix.php-version }}
84+
extensions: ${{ env.PHP_EXTENSIONS }}
8885
ini-values: opcache.enable_cli=0
8986
env:
9087
phpts: ts
@@ -94,9 +91,13 @@ jobs:
9491
mkdir -p swoole
9592
tar -xf swoole.tar.gz -C swoole --strip-components=1
9693
rm swoole.tar.gz
94+
- name: Setup APT Packages Cache
95+
uses: awalsh128/cache-apt-pkgs-action@latest
96+
with:
97+
packages: libcurl4-openssl-dev libc-ares-dev libpq-dev
98+
version: 1.0
9799
- name: Setup Swoole
98100
run: |
99-
sudo apt-get install libcurl4-openssl-dev libc-ares-dev libpq-dev
100101
cd swoole
101102
phpize
102103
./configure --enable-openssl --enable-swoole-curl --enable-cares --enable-swoole-pgsql --enable-brotli --enable-swoole-thread
@@ -105,6 +106,15 @@ jobs:
105106
sudo sh -c "echo extension=swoole > /etc/php/${{ matrix.php-version }}/cli/conf.d/swoole.ini"
106107
sudo sh -c "echo swoole.use_shortname='Off' >> /etc/php/${{ matrix.php-version }}/cli/conf.d/swoole.ini"
107108
php --ri swoole
109+
- name: Get Composer Cache Directory
110+
id: composer-cache
111+
run: echo "composer_cache_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
112+
- name: Setup composer cache
113+
uses: actions/cache@v4
114+
with:
115+
path: ${{ steps.composer-cache.outputs.composer_cache_dir }}
116+
key: ${{ matrix.os }}-php-${{ matrix.php-version }}-swoole-${{ matrix.sw-version }}-composer-${{ hashFiles('**/composer.lock') }}
117+
restore-keys: ${{ matrix.os }}-php-${{ matrix.php-version }}-swoole-${{ matrix.sw-version }}-composer-
108118
- name: Setup Packages
109119
run: ./.github/ci/requirement.install.sh
110120
- name: Run PHPStan
@@ -160,14 +170,12 @@ jobs:
160170
SW_VERSION: ${{ matrix.sw-version }}
161171
MYSQL_VERSION: '8.0'
162172
PGSQL_VERSION: '14'
173+
PHP_EXTENSIONS: redis, pdo, pdo_mysql, sqlsrv, pdo_sqlsrv, pdo_odbc, bcmath
163174
steps:
164175
- name: Checkout
165176
uses: actions/checkout@v4
166-
- name: Upgrade
177+
- name: Update composer.json
167178
run: |
168-
sudo apt-get clean
169-
sudo apt-get update
170-
sudo apt-get upgrade -f
171179
COMPOSER_JSON_PATH="composer.json"
172180
COMPOSER_JSON_CONTENT=$(cat $COMPOSER_JSON_PATH)
173181
COMPOSER_DATA=$(echo $COMPOSER_JSON_CONTENT | jq 'del(.require["ext-swoole"])')
@@ -179,28 +187,40 @@ jobs:
179187
- name: Setup PHP
180188
uses: shivammathur/setup-php@v2
181189
with:
182-
php-version: ${{ matrix.php-version }}
183190
tools: phpize
184-
extensions: redis, pdo, pdo_mysql,sqlsrv,pdo_sqlsrv,pdo_odbc,bcmath
191+
php-version: ${{ matrix.php-version }}
192+
extensions: ${{ env.PHP_EXTENSIONS }}
185193
ini-values: opcache.enable_cli=0
186194
- name: Install Swow
187195
run: |
188196
wget https://github.com/swow/swow/archive/${SW_VERSION}.tar.gz -O swow.tar.gz
189197
mkdir -p swow
190198
tar -xf swow.tar.gz -C swow --strip-components=1
191199
rm swow.tar.gz
200+
- name: Setup APT Packages Cache
201+
uses: awalsh128/cache-apt-pkgs-action@latest
202+
with:
203+
packages: libcurl4-openssl-dev libc-ares-dev libpq-dev
204+
version: 1.0
192205
- name: Setup Swow
193206
run: |
194-
sudo apt-get install libcurl4-openssl-dev libc-ares-dev libpq-dev
195207
cd swow/ext
196208
phpize
197209
./configure --enable-openssl --enable-swow-curl --enable-cares --enable-swow-pgsql --enable-brotli
198210
make && sudo make install
199211
sudo sh -c "echo extension=swow > /etc/php/${{ matrix.php-version }}/cli/conf.d/swow.ini"
200212
php --ri swow
213+
- name: Get Composer Cache Directory
214+
id: composer-cache
215+
run: echo "composer_cache_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
216+
- name: Setup composer cache
217+
uses: actions/cache@v4
218+
with:
219+
path: ${{ steps.composer-cache.outputs.composer_cache_dir }}
220+
key: ${{ matrix.os }}-php-${{ matrix.php-version }}-swow-${{ matrix.sw-version }}-composer-${{ hashFiles('**/composer.lock') }}
221+
restore-keys: ${{ matrix.os }}-php-${{ matrix.php-version }}-swow-${{ matrix.sw-version }}-composer-
201222
- name: Setup Packages
202-
run: |
203-
./.github/ci/requirement.install.sh
223+
run: ./.github/ci/requirement.install.sh
204224
- name: Run PHPStan
205225
run: ./.github/ci/run.check.sh
206226
- name: Setup Services

0 commit comments

Comments
 (0)