简单两步,使用 cache 加快极狐GitLab CI/CD 构建速度
本文来自:
李发富 极狐(GitLab) 高级技术支持工程师
A:CI/CD 执行好慢呐,每个 Job 执行的时候都得去下载外部依赖,好烦!
B: 这你就自寻烦恼了吧,其实可以用 cache 来避免这种状况。
A:cache?何方神圣?怎么用?快来拯救我!
B :cache 的使用很简单,follow me💁♀️
极狐GitLab CI/CD Job 在运行过程中不可避免的要下载一些外部依赖,cache 的存在是为了让不同 Job 之间能够共享这些文件,避免每个 Job 都去再次下载,这样做能够节约 CI/CD 的执行时间,提升 CI/CD 的执行效率。
本文以兼容 s3 标准的 minio 为例,向大家演示如何使用 cache。
安装 minio
下载 minio server
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/local/bin/minio
minio -v
minio version RELEASE.2022-02-26T02-54-46Z
下载 minio client
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/mc
mc -v
mc version RELEASE.2022-02-26T03-58-31Z
配置 minio 数据目录
mkdir -p /opt/minio/data
mkdir -p /opt/minio/logs
创建 start_minio_server.sh 启动脚本
#!/bin/bash
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=minio123456
nohup minio server /opt/minio/data > /opt/minio/logs/minio.log 2>&1 &
启动 minio server
chmod +x start_minio_server.sh
./start_minio_server.sh
(默认对外服务端口 9000)
为客户端设置别名
mc alias set myminio http://10.10.10.60:9000 minio minio123456
配置存储桶
mc mb myminio/gitlab-cache
配置 runner
config.toml 增加以下 cache 配置:
concurrent = 10
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "docker runner"
url = "https://gitlab.leffss.cn"
token = "xdfVPzdySQQNPCVgBxK1"
executor = "docker"
[runners.cache]
type = "s3"
Shared = true
[runners.cache.s3]
ServerAddress = "10.10.10.60:9000"
AccessKey = "minio"
SecretKey = "minio123456"
BucketName = "gitlab-cache"
Insecure = true
重启 runner 生效。
使用 cache 示例
python
.gitlab-ci.yml 参考:
image: python:3.9.7
stages:
- test
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache:
paths:
- .cache/pip/
# 已项目 id 区分 cache,如果不区分,就是全局 cache
key: $CI_PROJECT_ID
job1:
stage: test
script:
- pip install ansible==2.9.2
or
image: python:3.9.7
stages:
- test
cache:
paths:
- pip-cache
# 已项目 id 区分 cache,如果不区分,就是全局 cache
key: $CI_PROJECT_ID
before_script:
- export PIP_CACHE_DIR="pip-cache"
- mkdir -p pip-cache
job1:
stage: test
script:
- pip install ansible==2.9.2
nodejs
.gitlab-ci.yml 参考:
variables:
NPM_CONFIG_CACHE: npm_cache
NPM_CONFIG_REGISTRY: https://registry.npm.taobao.org
default:
cache:
paths:
- ${NPM_CONFIG_CACHE}
build:
stage: build
image: node:14-alpine
script:
- node -v
- npm -v
- npm ci
- npm run build
artifacts:
name: "build-package"
paths:
- dist
expire_in: 1 day
java maven
.gitlab-ci.yml 参考:
build:
image: maven:3.8.5-jdk-11
stage: build
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
cache:
paths:
- .m2/repository/
- target/
key: $CI_PROJECT_ID
script:
- mvn package
- ls -l target/*
极狐GitLab_DevOps
极狐(GitLab) 以“核心开放”为原则,面向中国市场,提供开箱即用的开放式一体化安全DevOps平台——极狐GitL...
推荐阅读
玩转 ChatGPT+极狐GitLab|分分钟丝滑迁移Jenkins到极狐GitLab CI
💃 自从 ChatGPT 闪亮登场以来,各种基于它的软件扩展纷至沓来。爱折腾的极狐GitLab 开发者们,也花式玩转起了 ChatGPT + 极狐GitLab,让研发工作更高效。之前我们分享了 如何利用极狐GitLab CI/CD 完成 Jenkins ...
极狐GitLab
k8s 监控 cicd 运维3大核心方向 想成为和我一样的专家么 经验分享给你
`# 运维目前3大核心方向 想成为和我一样的专家么 经验分享给你目前运维的3个火热的方向 : k8s、监控、cicd分析视频链接无论是否直接维护开发这3大类工具,都必须要求我们对这些比较熟悉为什么现在k8s相关岗位火热...
ning1875赞 2阅读 2.5k评论 1
Cert Manager 申请SSL证书流程及相关概念-三
Issuers 和 ClusterIssuers 是 Kubernetes CRD,代表证书颁发机构(CA),能够通过兑现证书签名请求来生成签名证书。所有 cert-manager 证书都需要一个被引用的签发者,该签发者处于准备就绪的状态,可以尝试兑现...
东风微鸣云原生阅读 1.3k
使用 Bitnami Helm 安装 Kafka
服务器端 K3S 上部署 Kafka ServerKafka 安装📚️ Quote:charts/bitnami/kafka at master · bitnami/charts (github.com)输入如下命令添加 Helm 仓库: {代码...} 🔥 Tip:tkemarket 镜像没有及时更新,建议使用 bitn...
东风微鸣云原生阅读 1.3k
Cert Manager 申请SSL证书流程及相关概念-二
cert-manager 可以用来从使用 ACME 协议的 CA 获得证书。ACME 协议支持各种 challenge 机制,用来证明一个域名的所有权,以便为该域名签发有效的证书。
东风微鸣云原生阅读 1.2k
从日志来探究Dapr源码-Dapr runtime的启动过程
(如何在k8s集群初始化dapr,如何跑demo,请参照文档)以上,即为demo镜像完整的启动日志。接下来,我们来尝试根据启动日志,逐步分析dapr runtime在启动过程中都做了哪些工作。
Mr_Black阅读 1.2k
一种简洁又不失优雅的工作流:极狐 flow
我们在日常开发工作中提到的 Workflow 通常是指通过 Git(版本控制工具)实现的分布式版本控制(distributed revision control),它允许多名软件开发者,在不同的网络环境下,参与同一个软件开发项目。
极狐GitLab阅读 941
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。