gpt4 book ai didi

docker - Github 操作/缓存对我的工作流程没有影响

转载 作者:行者123 更新时间:2023-12-04 15:32:32 26 4
gpt4 key购买 nike

我正在尝试为 php 项目运行以下 Github 工作流程:

name: CI

on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
env:
DB_NAME: ${{ secrets.DB_NAME }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }}

steps:
- uses: actions/checkout@v2

- name: Set up the CI environment
run: |
envsubst < src/.env.ci > src/.env
docker pull composer
alias composer="docker run --rm --interactive --tty --volume $(pwd):/app --volume ${COMPOSER_HOME:-$HOME/.composer}:/tmp --user $(id -u):$(id -g) composer"
composer --version

- name: Get Composer Cache Directory
id: composer-cache
run: |
echo "::set-output name=dir::$(composer config cache-files-dir)"

- uses: actions/cache@v1
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-

- name: Install composer dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: composer install

场景如下。我有一个使用 docker-compose 编排的基于 docker 的开发环境。 Php composer 和其他工具是从 docker 镜像运行的。

似乎我在这里遗漏了一些东西,因为 cache-hit正如我在日志中看到的那样:
2020-03-28T10:37:07.2837003Z Cache restored from key: Linux-composer-0dffe7e110c8249b30d4e46844fede7ea6b8e1433061bed12cbb9a2ae964e2bb

但是没有生效,因为步骤 Install composer dependencies仍在运行和 下载文物。我的期望是要么不运行,要么不运行但不下载任何东西,因为它从恢复的缓存中获取所有内容。

有没有人知道我缺少什么?

更新

我确实接受了@edric 的回答,因为在我提出问题的上下文中,他的回答为我的问题提供了解决方案。虽然我必须说这不是完全的解决方案。

我需要删除条件: if: steps.composer-cache.outputs.cache-hit != 'true'从最后一步开始运行我的其余工作流程。我确实注意到 Composer 缓存是
恢复和那个 composer install未运行,稍后由于缺少依赖项而导致问题。没有 if 条件 composer install 总是运行但使用恢复的缓存。

最佳答案

那是因为您没有在缓存锁定文件的步骤上设置 ID,并且您还在以下步骤中使用了错误的 ID 来检查是否命中了缓存。我建议您将检索缓存目录的步骤的 ID 重命名为不同的 ID,以免混淆:

- name: Get Composer Cache Directory
id: get-composer-cache-dir # Instead of composer-cache
run: |
echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache Composer
uses: actions/cache@v1
id: composer-cache
with:
path: ${{ steps.get-composer-cache-dir.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Install composer dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: composer install

关于docker - Github 操作/缓存对我的工作流程没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60900354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com