jenkins使用

96 阅读1分钟
 docker pull jenkins/jenkins:lts

创建目录卷映射文件

 mkdir -p /mydata/jenkins_home

添加权限

chown -R 1000 /mydata/jenkins_home/

启动

docker run -di --name=jenkins -p 8080:8080 -v /mydata//jenkins_home/:/var/jenkins_home jenkins/jenkins:lts

获取管理员密码

cat /mydata/jenkins_home/secrets/initialAdminPassword

生成密钥拉取gitlab代码

ssh-keygen -t rsa

一路回车,公私钥存放在/root/.ssh,将公钥添加到gitlab

image.png image.png jenkins上面添加ssh凭证,将私钥添加到jenkins image.png

image.png image.png

流水线Pipeline声明式编写

pipeline {
    agent any
    tools { 
        nodejs "node16" 
    }
    stages {
        stage('pull code') {
            steps {
                checkout scmGit(branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[credentialsId: 'c63b07c3-ef1f-4212-97f3-19e1d7bfa898', url: 'http://192.168.5.7/root/ren.git']])
            }
        }
        stage('build') {
            steps {
               sh 'cd /var/jenkins_home/workspace'
               sh 'node --version'
               sh 'npm --registry https://registry.npm.taobao.org install express'
               sh 'npm install'
               sh 'npm run build'
            }
        }
        stage('Deploy') {  
            steps {  
                // 部署到目标服务器  
                sshPublisher(publishers: [  
                    sshPublisherDesc(configName: 'webServer', transfers: [  
                        sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, remoteDirectory: 'nginx/html', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')  
                    ], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)  
                ])  
            }  
        } 
    }
}

还可以根据gitlab的钩子触发流水线执行任务和配置一个要执行流水线任务的分支可以根据需要自己配置一下