Posts tagged with “JENKINS”

How to use Jenkins to deploy a Node.JS backend project?

  1. Checkout code

  2. Set correct config file

  3. Scp to the remote machine

  4. Run deploy.sh on the remote machine by ssh

    • docker-compose build --no-cache
    • docker-compose down
    • docker-compose up -d

sshPublisher setup

  1. Manage Jenkins -> Config System
  • Find Publish over SSH
  • Add New Server, test connection
  1. Write directive in Jenkins file
            sshPublisher(
                continueOnError: false, failOnError: true,
                publishers: [
                 sshPublisherDesc(
                  configName: "yt-files-${BRANCH}",
                  verbose: true,
                  transfers: [
                   sshTransfer(
                    sourceFiles: "**/**",
                    remoteDirectory: "./publish/${BRANCH}",
                    removePrefix: '',
                    remoteDirectorySDF: false,
                    cleanRemote: true,
                    execCommand: "cd ./publish/${BRANCH} && bash deploy.sh ${BRANCH}"
                   )
                  ])
                ]
            )

要在Jenkins中新增对一个仓库的发布,需要以下步骤

  1. 创建流水线, 添加Git仓库,Credentials

  2. 为各分支添加必要的配置文件(不方便加入版本控制的机密信息)

  3. 写 Jenkinsfile

Jenkins 三言两语

三天小长假过完了。终于把 Jenkins 从windows 10 也迁到了那台 CentOS上,我对 Jenkins 的了解又深了一点点。

  1. Jenkins 把所有的插件和用户数据都存一个目录里,这个设计非常赞。这让我得以专注于迁移我的流水线。
  2. 让 Jenkins 运行在docker里,把运行docker的host机器做成一个新节点,很不错。
  3. 我更喜欢声明式流水线....主要是对脚本式流水线更不熟悉,对 groove 语法也不熟悉,另外,也不很想在流水线里写复杂的逻辑。这俩谁都先进呢?说不准。我更看好声明式流水线。
  4. agent和node之间的关系还是没有搞得特别清楚。时间紧,经理又催得急,先这么着吧。
  5. 怕删错文件,删文件的地方没敢用环境变量,越来越胆小。哈,应该有更好的解决办法。
  6. ssh从docker里连到宿主机....用key文件没有成功。尚且不知道原因,应该加个todo。

PS: 更好的解决方法找到了,它就是 ${varName:?} 这种方式引用bash变量,若 varName 未设置值,则脚本会立即报错退出执行。