上传gitlab 的用户名_gitlab与jenkins自动构建

# jenkins与gitlab自动构建

## 安装jenkins

`docker pull jenkins/jenkins`  

docker-compose.yml  

因为测试 端口映射的是 8887  

version: '3.2'services:  jenkins:    image: jenkins/jenkins    restart: always    container_name: jenkins    ports:      - "8887:8080"    volumes:      - ./jenkins_home:/var/jenkins_home      - ./jenkins.sh:/usr/local/bin/jenkins.sh

需要说明的时候 挂载了 jenkins_home是把jenkins的插件用户的所有数据配置等挂载出来 方便以后迁移等保护数据  

挂载 jenkins.sh 是为了关闭csrf保护 关闭后才能与gitlab联动  

jenkins.sh

#! /bin/bash -e: "${JENKINS_WAR:="/usr/share/jenkins/jenkins.war"}": "${JENKINS_HOME:="/var/jenkins_home"}": "${COPY_REFERENCE_FILE_LOG:="${JENKINS_HOME}/copy_reference_file.log"}": "${REF:="/usr/share/jenkins/ref"}"touch "${COPY_REFERENCE_FILE_LOG}" || { echo "Can not write to ${COPY_REFERENCE_FILE_LOG}. Wrong volume permissions?"; exit 1; }echo "--- Copying files at $(date)" >> "$COPY_REFERENCE_FILE_LOG"find "${REF}" \( -type f -o -type l \) -exec bash -c '. /usr/local/bin/jenkins-support; for arg; do copy_reference_file "$arg"; done' _ {} +# if `docker run` first argument start with `--` the user is passing jenkins launcher argumentsif [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then  # read JAVA_OPTS and JENKINS_OPTS into arrays to avoid need for eval (and associated vulnerabilities)  java_opts_array=()  while IFS= read -r -d '' item; do    java_opts_array+=( "$item" )  done < printf   readonly agent_port_property='jenkins.model.Jenkins.slaveAgentPort'  if [ -n "${JENKINS_SLAVE_AGENT_PORT:-}" ] && [[ "${JAVA_OPTS:-}" != *"${agent_port_property}"* ]]; then    java_opts_array+=( "-D${agent_port_property}=${JENKINS_SLAVE_AGENT_PORT}" )  fi  if [[ "$DEBUG" ]] ; then    java_opts_array+=( \      '-Xdebug' \      '-Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=y' \    )  fi  jenkins_opts_array=( )  while IFS= read -r -d '' item; do    jenkins_opts_array+=( "$item" )  done < printf   exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@"fi# As argument is not jenkins, assume user want to run his own process, for example a `bash` shell to explore this imageexec "$@"

## 启动

启动后 需要输入默认root的密码  

docker logs jenkins 就能看到 输入后进行安装  

安装完成后配置插件地址为国内源  

系统管理的插件管理  

8e7f3fa17a6d87ae77b59276be2eaa72.png

点击高级 下拉  

配置为 

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

上传插件为离线安装使用的 依赖多很麻烦 不得已的话再使用  

04a502e4731a83f7f7c6c94339c1ce9a.png

最后 安装gitlab  gitlab hook 插件 重启   

## gitlab安装

docker-compose.yml  

version: '3.2'services:  gitlab_v1:    image: gitlab    restart: always    container_name: gitlab    hostname: 'gitlab'    volumes:      - ./gitlab/config:/etc/gitlab      - ./gitlab/logs:/var/log/gitlab      - ./gitlab/data:/var/opt/gitlab    ports:      - "8446:80"

启动后创建用户就可以了  

## gitlab push jenkins执行任务  

### jenkisn

jenkins 新建一个任务  

6b80ab0ad1a5903d61bdb6d3a4128cb8.png

配置触发器  

329fa4aedaea86821a5f7998a61c42a5.png

6ee55d9ecdebe5c725dfa6e20b2eb4be.png

后面将这个token配置到gitlab那边  

url是项目的url

6200a3702be4c29332f7fe1522536b51.png

配置gitlab的用户名密码  

54e45497b0439de84a3edaf4171a060c.png

### gitlab  

使用root账号登录 才有  Admin Area  

b84ccda31b61cf7beaf00cec8fd00e84.png

1004e80e2b64e0b0150e4ee7b62e61d1.png

然后切换回那个项目的账号  

配置 webhook  

1dfb6c6842a510bf32f5734055c382e0.png

url是 jenkins build 那里的  

38ab014670163caaba797337e987e7d6.png

测试运行  

6406e970045abd5169d260c45f7b2baf.png

jenkins这边也能看到任务执行  

5ec0af13b4b0e69c9c9d658ded0ff1ee.png

然后在项目中编写 Jenkinsfile 来执行具体任务  

可参考 

https://www.k8stech.net/jenkins-docs/pipelinesyntax/chapter01/  

个人更推荐使用gitlab runner 来实现自动化构建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值