iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 23
0
Software Development

Jian-Ching 記事本系列 第 23

Jenkins - Pipeline as Code - 啟動 Docker Image

這篇要介紹透過 Jenkinsfile 直接啟動 Docker Image 來執行

早前介紹過使用 Docker 安裝 Jenkins Agent,但是這個方法,每個環境都要建立一次該環境的 agent docker image,其實有點麻煩,難道不能讓我直接拿 docker image 來執行呢?

答案是可以的,所以前一篇介紹在 Ubuntu 安裝 Jenkins Agent,目的是使用該 ubuntu 上的 docker 執行環境。如果還沒有安裝 docker 的話,請參考這篇完成安裝 Docker

首先將 ubuntu agent 加上 docker 標籤,避免跑到其它沒有 docker 環境的 agent 上,那就會不能執行了喔

接著修改 Jenkinsfile 關於 agent 的宣告,原本是限制執行在有 cpp 標籤上的像這樣

agent {
    label 'cpp'
}

改為限制執行在 docker 標籤上,而且要啟動 docker image maven:3-alpine

agent {
    docker {
        label 'docker'
        image 'maven:3-alpine'
    }
}

為了展示在不同 docker image 上執行的能力,我們顯示執行環境的版本資訊

steps {
    sh 'cat /etc/*-release'
}

除了 alpine 之外,我們額外新增 ubuntu 及 archlinux 來示範

完整的 Jenkinsfile 如下

pipeline {
    agent none
    stages {
        stage('alpine') {
            agent {
                docker {
                    label 'docker'
                    image 'maven:3-alpine'
                }
            }
            steps {
                sh 'cat /etc/*-release'
            }
        }
        stage('ubuntu') {
            agent {
                docker {
                    label 'docker'
                    image 'ubuntu:18.04'
                }
            }
            steps {
                sh 'cat /etc/*-release'
            }
        }
        stage('archlinux') {
            agent {
                docker {
                    label 'docker'
                    image 'base/archlinux'
                }
            }
            steps {
                sh 'cat /etc/*-release'
            }
        }
    }
}

要使用預建立的檔案,同樣在 **https://github.com/allyusd/jenkins-pipeline.git**,branchdifferent-agent-docker

成功建置之後會出現三個 stage

alpine 執行結果

ubuntu 執行結果

archlinux 執行結果

透過 docker image 啟動不同環境是不是很有彈性呢?


本文同步發表在部落格 Jenkins - Pipeline as Code - 啟動 Docker Image - Jian-Ching 記事本


上一篇
在 Ubuntu 安裝 Jenkins Agent
下一篇
Jenkins - Pipeline as Code - 平行工作
系列文
Jian-Ching 記事本30

尚未有邦友留言

立即登入留言