最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Docker的可持續(xù)交付問(wèn)題

 更新時(shí)間:2022年01月06日 11:22:02   作者:樂(lè)卻思蜀  
這篇文章主要介紹了基于Docker的可持續(xù)交付問(wèn)題,本文章系列中主要結(jié)合CI持續(xù)集成的工具,把這個(gè)過(guò)程完全的自動(dòng)化,以及智能化的過(guò)程。當(dāng)然,使用的技術(shù)棧主要是Spring?Boot,具體內(nèi)容詳情跟隨小編一起看看吧

在測(cè)試的立場(chǎng)上,希望開(kāi)發(fā)編寫(xiě)的代碼都是經(jīng)過(guò)開(kāi)發(fā)的單元測(cè)試的,但是事實(shí)上,這中間總是存在理想和現(xiàn)實(shí)的差距,既然如此,我們何不來(lái)開(kāi)發(fā)部署環(huán)境后,對(duì)服務(wù)進(jìn)行自動(dòng)化測(cè)試驗(yàn)證了。整體的設(shè)計(jì)思路就是開(kāi)發(fā)編寫(xiě)的代碼,使用Dockerfile構(gòu)建成鏡像文件,然后使用docker-compose自動(dòng)化啟動(dòng)鏡像文件,下一步其實(shí)就很簡(jiǎn)單了,我們測(cè)試這邊進(jìn)行智能化的自動(dòng)驗(yàn)證,其實(shí)在前面的文章體系中,介紹中智能化測(cè)試完成后,在測(cè)試結(jié)束的時(shí)候出具體的測(cè)試報(bào)告以及如果存在問(wèn)題,觸發(fā)整體報(bào)警的機(jī)制。本文章系列中主要結(jié)合CI持續(xù)集成的工具,把這個(gè)過(guò)程完全的自動(dòng)化,以及智能化的過(guò)程。當(dāng)然,使用的技術(shù)棧主要是Spring Boot。

創(chuàng)建Spring Boot的項(xiàng)目后,這地方簡(jiǎn)單的寫(xiě)一個(gè)測(cè)試的接口,controller層源代碼具體如下:

package com.example.app;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AppController
{
   @RequestMapping("/index")
   public String hello()
   {
      return "Hello SpringBoot!";
   }
   @RequestMapping("/testDev")
   public  String testDev()
   {
      return "測(cè)試開(kāi)發(fā)工程師";
   }
}

這部分的代碼其實(shí)相對(duì)而言是非常簡(jiǎn)單的,這里就不做詳細(xì)的解釋了。編寫(xiě)代碼完成后,下來(lái)編寫(xiě)Dockerfile的文件來(lái)構(gòu)建鏡像,Dockerfile在項(xiàng)目中存放的位置主要是在src/main下的docker文件夾,創(chuàng)建docker文件夾后,在里面創(chuàng)建Dockerfile的文件,然后在里面包編寫(xiě)需要構(gòu)建鏡像的內(nèi)容信息,具體目錄結(jié)構(gòu)如下所示:

Dockerfile文件夾的內(nèi)容具體為:

FROM java:8
MAINTAINER 樂(lè)卻思蜀
VOLUME /tmp
RUN mkdir /app
COPY app-0.0.1-SNAPSHOT.jar /app/app.jar
WORKDIR /app
EXPOSE 8081
CMD  ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

下來(lái)在docker的文件夾創(chuàng)建docker-compose.yml文件,在該文件主要定義鏡像的資源,網(wǎng)絡(luò)以及啟動(dòng)停止的過(guò)程,該文件的內(nèi)容信息具體如下:

version: '3.2'
services:
  app:
    image: app:0.0.1-SNAPSHOT
    hostname: localhost
    ports:
    - "8081:8081"
    networks:
      - mynetwork
networks:
  mynetwork:
    external: true

在如上的文件中可以看到自定義了網(wǎng)絡(luò)是mynetwork,在docker中可以創(chuàng)建網(wǎng)絡(luò),以及查看目前已有的網(wǎng)絡(luò)信息,具體如下:

docker network ls
NETWORK ID           NAME              DRIVER              SCOPE
5e0d06b35341         bridge            bridge              local
34f731bed1dc         host              host                local
4b5926f1e44d         mynetwork         bridge              local

下來(lái)編寫(xiě)測(cè)試的代碼,測(cè)試的代碼這里使用Python語(yǔ)言結(jié)合Pytest測(cè)試框架來(lái)編寫(xiě),具體測(cè)試模塊test_sprintboot.py的源碼如下:

import requests
import pytest 
def test_springboot_index():
  r=requests.get("http://localhost:8081/index")
  assert r.status_code==200
def test_springboot_testDev():
  r=requests.get("http://localhost:8081/testDev")
  assert r.status_code == 200

這個(gè)測(cè)試代碼相對(duì)而言是比較簡(jiǎn)單的,這里主要需要驗(yàn)證的是服務(wù)自動(dòng)化部署后智能化的驗(yàn)證。

在如上的準(zhǔn)備工作做好,下來(lái)在Jenkins中創(chuàng)建Pipeline的項(xiàng)目,Pipeline script的腳本具體如下:

pipeline{
    agent any
    stages{
        stage('build the image'){
            steps{
                sh '''cd /Applications/code/workSpace/data/app
                mvn clean package  -Dmaven.test.skip=true   docker:build'''
            }
        }
        stage('run the container'){
            steps{
                sh '''cd /Applications/code/workSpace/data/app/src/main/docker
                docker-compose up -d '''
            }
        }
        stage('smoke test'){
            steps{
                sh '''cd /Applications/code/workSpace/data/app/src/main/docker
                sleep 10s
                python3 -m pytest -v test_springboot.py'''
            }
        }
    }
}

下來(lái)開(kāi)始在CI中構(gòu)建和執(zhí)行過(guò)程,構(gòu)建后可視化的界面信息如下所示:

輸出的詳細(xì)信息在這里只顯示部分,具體如下:

======================== 2 passed, 3 warnings in 0.72s =========================
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

對(duì)于質(zhì)量交付團(tuán)隊(duì)而言,需要思考的點(diǎn)是,我們?cè)趺礃咏Y(jié)合現(xiàn)有的技術(shù)來(lái)達(dá)成我們的目標(biāo)和質(zhì)量驗(yàn)證的手段。其實(shí)一種驗(yàn)證的研發(fā)體系流程是開(kāi)發(fā)無(wú)論如何需要對(duì)自己編寫(xiě)的代碼進(jìn)行單元測(cè)試,這樣其實(shí)一個(gè)體系它是通過(guò),整體體系我們完全可以持續(xù)流水線(xiàn)的方式來(lái)進(jìn)行驗(yàn)證,從而提高交付的效率以及提交給測(cè)試團(tuán)隊(duì)是高質(zhì)量的代碼。其實(shí)如上的思路很簡(jiǎn)單,就是從Docker構(gòu)建鏡像,到啟動(dòng)容器,以及我們進(jìn)行冒煙測(cè)試驗(yàn)證,當(dāng)然后續(xù)還有很多的流程,比如測(cè)試團(tuán)隊(duì)其他的驗(yàn)證手段,比如代碼質(zhì)量審計(jì),API等驗(yàn)證。感謝您的閱讀和關(guān)注,后續(xù)會(huì)持續(xù)進(jìn)行更新。

到此這篇關(guān)于基于Docker的可持續(xù)交付的文章就介紹到這了,更多相關(guān)Docker可持續(xù)交付內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker?run?-d和docker?run?-it的區(qū)別詳解

    docker?run?-d和docker?run?-it的區(qū)別詳解

    記得第一次接觸docker的時(shí)候,教程中寫(xiě)著docker?run?-it之類(lèi)的命令,當(dāng)時(shí)對(duì)這個(gè)-it選項(xiàng)是一知半解,下面這篇文章主要給大家介紹了關(guān)于docker?run?-d和docker?run?-it的區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 如何使用 docker compose 搭建 fastDFS文件服務(wù)器

    如何使用 docker compose 搭建 fastDFS文件服務(wù)器

    這篇文章主要介紹了如何使用 docker compose 搭建 fastDFS文件服務(wù)器,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Docker 技巧之刪除Docker容器和鏡像

    Docker 技巧之刪除Docker容器和鏡像

    本篇文章主要介紹了Docker 技巧之刪除Docker容器和鏡像,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • docker鏡像導(dǎo)入的實(shí)現(xiàn)方法

    docker鏡像導(dǎo)入的實(shí)現(xiàn)方法

    如果服務(wù)器網(wǎng)絡(luò)不好或者pull不下來(lái)鏡像,只能進(jìn)行導(dǎo)入,本文主要介紹了docker鏡像導(dǎo)入的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Docker mongoDB 4.2.1 安裝并收集springboot日志的步驟詳解

    Docker mongoDB 4.2.1 安裝并收集springboot日志的步驟詳解

    這篇文章主要介紹了Docker mongoDB 4.2.1 安裝并收集springboot日志,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • docker 中配置 eureka的方法

    docker 中配置 eureka的方法

    這篇文章主要介紹了docker 中配置 eureka的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Gogs+Jenkins+Docker 自動(dòng)化部署.NetCore的方法步驟

    Gogs+Jenkins+Docker 自動(dòng)化部署.NetCore的方法步驟

    這篇文章主要介紹了Gogs+Jenkins+Docker 自動(dòng)化部署.NetCore,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • docker數(shù)據(jù)卷容器掛載不上的解決方法

    docker數(shù)據(jù)卷容器掛載不上的解決方法

    docker容器之間可以通過(guò)相互掛載實(shí)現(xiàn)數(shù)據(jù)共享,本文主要介紹了docker數(shù)據(jù)卷容器掛載不上的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Docker 部署net5程序?qū)崿F(xiàn)跨平臺(tái)功能

    Docker 部署net5程序?qū)崿F(xiàn)跨平臺(tái)功能

    本文講述使用docker容器部署.net5項(xiàng)目、實(shí)現(xiàn)跨平臺(tái),本文通過(guò)圖文的形式給大家介紹了創(chuàng)建.net5項(xiàng)目的過(guò)程及安裝成功后如何使用docker部署項(xiàng)目,感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2021-05-05
  • 在Docker中部署Confluence和jira-software的方法步驟

    在Docker中部署Confluence和jira-software的方法步驟

    這篇文章主要介紹了在Docker中部署Confluence和jira-software的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06

最新評(píng)論

胶南市| 社旗县| 宁南县| 新津县| 香格里拉县| 绥棱县| 全椒县| 招远市| 衢州市| 秦皇岛市| 德化县| 佳木斯市| 保德县| 芒康县| 习水县| 磐安县| 迁西县| 桑日县| 娄底市| 盖州市| 大理市| 连州市| 闻喜县| 香格里拉县| 会泽县| 靖安县| 柳河县| 册亨县| 安远县| 大方县| 汪清县| 祁连县| 鱼台县| 平谷区| 中江县| 格尔木市| 彭州市| 陇南市| 利津县| 榕江县| 康乐县|