0%

搭建GitLab-CI shared runner

最近想试试搭一个ci,开始在自己的服务器上试一试,下了gitlab发现我可怜的单核2g内存快给占满了,直接放弃,不要问为什么不加配置,问就是没钱。

然后发现gitlab还有个免费runner计划,可以在settings-CI/CD-Runner下找到,我目前看到是有八个。为本项目开启shared Runner之后就可以使用了。

在项目根目录下添加.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
cache:
paths:
- target/
stages:
- build
- test
- deploy

build-job:
when: always
stage: build
only:
- develop
tags:
- gitlab-org
script:
- wget https://github.com/AdoptOpenJDK/openjdk11-upstream-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-x64_linux_11.0.3_7.tar.gz
- wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
- ls -ld *
- tar -xvf ./OpenJDK11U-x64_linux_11.0.3_7.tar.gz
- tar -zvxf ./apache-maven-3.3.9-bin.tar.gz
- ls -ld *
- cp -rf settings.xml ./apache-maven-3.3.9/conf/
- mv apache-maven-3.3.9 /usr/local
- mv openjdk-11.0.3+7 /usr/local
- sed -i '/$/a JAVA_HOME=/usr/local/openjdk-11.0.3+7' /etc/profile
- sed -i '/$/a MAVEN_HOME=/usr/local/apache-maven-3.3.9' /etc/profile
- sed -i '/$/a JRE_HOME=\$JAVA_HOME/' /etc/profile
- sed -i '/$/a PATH=\$PATH:\$JAVA_HOME/bin:\$JRE_HOME/bin:\$MAVEN_HOME/bin' /etc/profile
- sed -i '/$/a CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar:\$JRE_HOME/lib' /etc/profile
- sed -i '/$/a export JAVA_HOME JRE_HOME PATH CLASSPATH' /etc/profile
- source /etc/profile
- java -version
- mvn -v
- mvn clean package -Dmaven.test.skip=true
- echo "success!!!"

deploy-web-test:
when: on_success
stage: deploy
tags:
- gitlab-org
script:
- ls -ld *
- cd $CI_PROJECT_DIR
- ls -ld *
- cd $CI_PROJECT_DIR/web
- ls -ld *
- cd $CI_PROJECT_DIR/web/target
- ls -ld *</code></pre>

用这个是直接以docker运行的,各种环境都没有,所以要重新下载jdk/maven,这么点配置踩的坑简直一言难尽。。。以后再更新吧。。

——————分割线——————

今天又试了试把前端项目搭了一下终于跑通了(虽然前端部署太easy了但是生命在于折腾嗯……)

以下

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
<pre class="has">
<code>cache:
key: xxx
untracked: true
paths:
- xxxxxx
#上边说过每次build都需要重新安装环境,这里就可以配置缓存,untracked:true就是会缓存git没有追踪的文件,每次build之后添加到缓存中,如果你有多个项目,多个runner,可以通过不同的key来读取不同的缓存。
stages:
- build
- deploy

build-job:
when: always
stage: build
only:
- master
tags:
- gitlab-org
#这里如果你用的是gitlab提供的shared-runner,你需要指定需要运行job的runner的tag,在setting-CICD-Runner里可以看到。

script:
- ls -ld *
# - echo "安装node..."
# - wget https://nodejs.org/dist/v10.14.0/node-v10.14.0-linux-x64.tar.xz
# - tar -xf node-v10.14.0-linux-x64.tar.xz
# - mv node-v10.14.0-linux-x64 node
# - ls -ld *
# - pwd
- cat /etc/profile
- echo "配置环境变量..."
- sed -i '$a\ NODE_HOME=$PATH:/你解压的node目录' /etc/profile
- sed -i '$a\ PATH=$PATH:$NODE_HOME/bin' /etc/profile
- cat /etc/profile
- echo "刷新配置..."
- source /etc/profile
# - node -v
- cd /你的项目路径
# - echo "安装npm..."
# - npm install
# - npm -v
- echo "npm build..."
- CI=false npm run build
#不加CI=false会造成把warning当做error从而build失败
- echo "build success!"
#可以看到这些初始化的配置我给注掉了,第一次运行需要下载并配置环境,之后就可以注掉通过读取缓存来节省下载解压的时间,
deploy-web-test:
when: on_success
stage: deploy
environment:
name: Staging
url: "$DEPLOY_URL"
#gitlab-setting-CI/CD-Varible设置你要部署服务器地址
only:
- master
tags:
- gitlab-org
before_script:
- 'which ssh-agent || ( apt-get update -y &amp;&amp; apt-get install openssh-client -y )'
- mkdir -p ~/.ssh
- eval $(ssh-agent -s)
- '[[ -f /.dockerenv ]] &amp;&amp; echo -e "Host *\n\tStrictHostKeyChecking no\n\n" &gt; ~/.ssh/config'
#ssh登录使用
script:
- ls -ld *
- mv build front
- ls -ld *
- ssh-add &lt;(echo "$SSH_PRIVATE_KEY")
#$SSH_PRIVATE_KEY同样,是你在gitlab设置的ssh秘钥
- 已经可以连上你的服务器了,为所欲为吧骚年!</code></pre>