构建依赖性更新时自动刷新缓存

120 阅读2分钟

Bitbucket Pipelines提供了一个缓存功能,提供了缓存外部构建依赖和目录的能力,例如第三方库。这意味着构建速度更快,消耗的构建时间更少。

然而,目前缓存的有效期为7天,并在该期间结束时失效。构建依赖的更新不会导致缓存被刷新,这意味着构建有时会使用依赖的旧版本,导致下游的错误。我们有这样一个投票率很高的建议,客户希望有一个选项可以在构建依赖关系发生变化时自动失效并刷新缓存。

在这篇博文中,我们将分享一个解决方案,它可以帮助我们在构建依赖关系发生变化时自动失效并刷新缓存。

下面是它的工作原理。

atlassian/bitbucket-clear-cache 管道

我们使用atlassian/bitbucket-clear-cache 管道来删除管道中的缓存。下面是这个管道的yaml。

pipe: atlassian/bitbucket-clear-cache:3.1.1 variables: BITBUCKET_USERNAME: $BITBUCKET_USERNAME BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD CACHES: [ "node"]

变更集条件

接下来,条件changeset被用来执行一个步骤,只有当一个特定的文件有变化时。如果没有,该步骤将被跳过。

我们将添加changeset条件,以表明在实际删除缓存之前要验证的文件是否有变化。你的YAML文件中的结构将是这样的。

pipelines: default: - step: name: delete cache if changes in the build dependencies script: - pipe: atlassian/bitbucket-clear-cache:3.1.1 variables: BITBUCKET_USERNAME: $BITBUCKET_USER_NAME BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD CACHES: ["node"] condition: changesets: includePaths: - package.json - step: name: build and create/reuse the cache caches: - node script: - npm install - npm test

就这样了。这个过程将检查你的依赖关系是否有变化,如果有变化,它将删除现有的缓存并创建一个新的缓存,这样你的构建总是使用最新的依赖关系版本。

The postAutomatically refresh caches when build dependencies are updatedappeared first onBitbucket.