Gitlab 最近离职,一张机票跨越小半个中国,来魔都找了一份喜欢的工作。稳定了就开始继续写东西啦 👯
毕业实习的时候在公司里面积极推 Git,考虑到同事的学习成本,在 Gogs 和 Gitlab 之间,我选了 Gogs,不为别的,只为原生中文 😂。然后一大段时间,我都是在 Github 和 Gogs 这两个平台进行协作的,Gitlab 的大名也不时的在耳边响起。
现在的公司版本控制用的是 Gitlab,所以借此机会我也简单适应了一下,其实和 Github 差不太多,更多的是 Gitlab 提供了一整套的解决方案,其中就包含了 CI/CD。
我还是比较崇尚那句话的:一切能自动化的工作都应该被自动化掉!
.gitlab-ci.yml 在 Gitlab 官网上有很多关于 gitlab CI 如何搭建的介绍,在此我就不多做介绍了,就是照着代码敲到命令行执行即可,现在要讲的是如何配置一个简单的 Gitlab CI 配置文件。
.gitlab-ci.yml 这个文件即是 Gitlab CI 的配置文件,你需要将这个文件放到你 repo 的根目录即可,然后你每次提交, Gitlab 都会自动地去读取执行该文件的内容,如果你提交了一个新的 .gitlab-ci.yml,那 gitlab CI 会使用你刚提交的那份配置文件进行 CI
下面就贴一份简单的用于部署前端项目的 .gitlab-ci.yml 文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 image: kkarczmarczyk/node-yarn:latest cache: key: ${CI_COMMIT_REF_SLUG} stages: - init - lint - unit_test - build - deploy install_packages: stage: init cache: policy: push paths: - node_modules/ script: - "ls -la" - 'yarn config set registry "https://registry.npm.taobao.org"' - "yarn" lint_code: stage: lint cache: policy: pull paths: - node_modules/ script: - "ls -la" - "yarn lint" unit_test: stage: unit_test cache: policy: pull paths: - node_modules/ script: - "ls -la" - "yarn test:unit" build: stage: build cache: policy: pull paths: - node_modules/ artifacts: name: "dist" expire_in: 60 mins paths: - dist/ script: - "ls -la" - "yarn build" deploy: stage: deploy only: - master script: - "ls -la" - "ls -Rl dist" - 'echo "${AMAZON_PEM}" > amazon.pem' - "chmod 600 amazon.pem" - "scp -o StrictHostKeyChecking=no -i amazon.pem -r dist/* ${AMAZON_NAME_IP}:/usr/share/nginx/html/"
坑 s 在使用的过程中,还是经历了一些坑的,也记录下来
公司的 Gitlab 估计是版本问题,cache 基本是失效的,所以无奈,我直接添加了一个 before_script 来在每个 jobs 执行前都完整安装一次 node_modules
将服务器私钥保存到 Gitlab 的 CI 变量中后,本想通过 echo ${AMAZON_PEM} > amazon.pem
,把私钥存储为文件使用,结果发现 echo 出来的文本没有了换行,最终解决办法是 echo "${AMAZON_PEM}" > amazon.pem
(就只需要加两个引号)