jenkins与gitlab联通配置

操作

创建一个nodejs-web任务,gitlab push提交后,自动触发jenkins构建任务

流程图

jenkins与gitlab联通配置_第1张图片
image.png

jenkins配置

jenkins与gitlab联通配置_第2张图片
jj-1-1.png
jenkins与gitlab联通配置_第3张图片
jj-2-1.png
jenkins与gitlab联通配置_第4张图片
jj-2-2.png
jenkins与gitlab联通配置_第5张图片
jj-2-4.png

gitlab配置

给gitlab管理员身份进入,在每个项目中:Settings -> Integrations 页面中进行设置

jenkins与gitlab联通配置_第6张图片
jj-2-g5.png
jenkins与gitlab联通配置_第7张图片
jj-2-g6.png
jenkins与gitlab联通配置_第8张图片
jj-2-g7.png
jenkins与gitlab联通配置_第9张图片
jj-2-g8err.png
jenkins与gitlab联通配置_第10张图片
jj-2-g8ok.png
jenkins与gitlab联通配置_第11张图片
jj-2-g9.png

脚本文件

基于Vue的Dockerfile

参考: Dockerize Vue.js App

FROM node:10.9.0-alpine

# fix "could not get uid/gid" error
RUN npm config set unsafe-perm true

# install simple http server for serving static content
RUN npm install -g http-server

# make the 'app' folder the current working directory
WORKDIR /app

# copy both 'package.json' and 'package-lock.json' (if available)
COPY package*.json ./

# install project dependencies
RUN npm install --registry=https://registry.npm.taobao.org

# copy project files and folders to the current working directory (i.e. 'app' folder)
COPY . .

# build app for production with minification
RUN npm run build:prod

EXPOSE 8080
CMD [ "http-server", "dist" ]

Jenkinsfile

#!/usr/bin/env groovy

def url = "http://192.168.31.100:8088/nodejs/web.git"
def credentialsId = "850f1ba0-caf8-416f-9d9e-130403e93730"
def containerName = "nodejs-web"
def sourcePort = 8080
def targetPort = 9002
def imageUrl = "reg.htwy.com/nodejs/${containerName}:${env.BUILD_NUMBER}"

node() {

    stage ('checkout') {
        git url: url, credentialsId: credentialsId
    }

    stage ('build and push image') {
        sh "docker build -t ${imageUrl} ."
        sh "docker push ${imageUrl}"
    }

    stage ('Run container') {
        try {
            // 默认 停止、删除 容器
            sh "docker ps -f name=${containerName} -q | xargs --no-run-if-empty docker container stop"
            sh "docker container ls -a -f name=${containerName} -q | xargs -r docker container rm"

            //运行新容器
            sh "docker run -it -d --name ${containerName} -p ${targetPort}:${sourcePort} ${imageUrl}"

        } catch (error) {
            error.printStackTrace()
        } finally {
        }
    }
}

基于Eggjs的Dockerfile

参考: eggjs + docker 最佳实践

FROM node:8.6.0-alpine

RUN apk --update add tzdata \
    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && apk del tzdata

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

# add npm package
COPY package.json /usr/src/app/package.json

RUN npm i --registry=https://registry.npm.taobao.org

# copy code
COPY . /usr/src/app

EXPOSE 7001

CMD npm start

参考

gitlab + jenkins实现node.js持续部署流程

你可能感兴趣的:(jenkins与gitlab联通配置)