Posts 尝试 gitlab ci&cd 持续集成(java)
Post
Cancel

尝试 gitlab ci&cd 持续集成(java)

说明

由于我的项目之前都是采用 Jenkins 与 Docker 进行部署并运行的,所以在 Gitlab CI 中我也采用 Docker 的方式进行运行处理。

Runner

运行

1
docker  run  -d --name gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

容器 Docker 设置

http://docs.gitlab.com/runner/register/

原手册文档

https://gitlab.com/help/ci/runners/README.md

代码根目录配置

代码仓库根目录下创建文件 .gitlab-ci.yml 并参考下来配置进行设置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
stages:
  - build
  - package

maven-build:
  image: maven:3-jdk-8-alpine
  stage: build
  script: "mvn clean package -Dmaven.test.skip=true"
  artifacts:
    paths:
      - target/nakedhub*.war

docker-build:
  image: docker:latest
  stage: package
  script:
  - export DOCKER_TAG=$(date "+%Y%m%d%H%M%S")
  - docker build -t registry.nakedhub.cn/nh/backend-ut:$DOCKER_TAG .
  - docker login -u admin -p Naked2017 http://registry.nakedhub.cn
  - docker push registry.nakedhub.cn/nh/backend-ut:$DOCKER_TAG

判断 Git 仓库是否发生变化脚本

https://stackoverflow.com/questions/3258243/check-if-pull-needed-in-git?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

获取最新更新内容。

1
git fetch / git remote update

执行以下脚本内容之前请先执行以上命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/sh

UPSTREAM=${1:-'@{u}'}
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "$UPSTREAM")
BASE=$(git merge-base @ "$UPSTREAM")

if [ $LOCAL = $REMOTE ]; then
    echo "Up-to-date"
elif [ $LOCAL = $BASE ]; then
    echo "Need to pull"
elif [ $REMOTE = $BASE ]; then
    echo "Need to push"
else
    echo "Diverged"
fi

Maven 依赖缓存解决

https://gitlab.com/gitlab-org/gitlab-ce/issues/15167

更多 .gitlab-ci.yml 配置

https://docs.gitlab.com/ee/ci/yaml/README.html#cache

示例

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
stages:
  - build

variables:
  MAVEN_OPTS: -Dmaven.repo.local=/cache/maven.repository

release-build:
  image: maven:3-jdk-8-alpine
  stage: build
  script: "mvn compile"
  only:
    refs:
      - master
  tags:
    - hello

merge-request-build:
  image: maven:3-jdk-8-alpine
  stage: build
  script: "mvn compile"
  only:
      - /^feature-\/.*$/
  except:
    - branches
  tags:
    - hello
This post is licensed under CC BY 4.0

磁盘扫描&阵列扫描恢复常用命令

Elasticsearch 中文搜索优化

Comments powered by Disqus.