iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
0
DevOps

從 0 到 1 的 DevOps 執行日記 - 全方位平台實踐手冊系列 第 21

【Day-21】我們是怎麼開始的?:一間傳統軟體公司從 0 開始建置的 DevOps 文化(實作篇)- 實戰(2)

  • 分享至 

  • xImage
  •  

前言

昨天我們大致上描述了實戰中的思路方向,今天我們主要解決在自己的環境中,編譯好源代碼,變且包裝成 Container``的過程與方法!

  1. 開發人員將程式碼開發完成之後,Pipeline 透過前面提到的機制部署到測試環境中
  2. 當要更新用戶環境時,將分支併入到master 執行。
  3. 此時 master 會執行產出 Image,並且依照 Git Sha 標記上 Tag
  4. 推送到私有的 Image Registry
  5. 如果有多個系統依賴則重複上述步驟!產出各自的 Docker Image

我們使用了 Gitlab CI 來完成建置 Image 的過程!範例如下!


stages:
  - build
  - master

variables:
  LANG: "en_US.UTF-8"
  LC_ALL: "en_US.UTF-8"
  GIT_SUBMODULE_STRATEGY: normal
  # Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
  DOCKER_HOST: tcp://docker:2376
  DOCKER_TLS_CERTDIR: "/certs"

build:
  stage: build
  image: yasuoyuhao/php-fpm-composer
  before_script:
  - composer config -g cache-dir "$(pwd)/.composer-cache"
  script:
  - sh ./shell-script/composer.sh
  cache:
    paths:
    - .composer-cache/
  artifacts:
    expire_in: 30 min
    paths:
    - vendor/
  only:
    - branches
    - /^release*/
    - release
  except:
    - tags
  allow_failure: false

master:
  image: docker:19.03.8
  services:
  - docker:19.03.8-dind
  tags:
    - docker
  stage: master
  before_script:
    - docker info
    - apk update
    - apk upgrade
    - apk add build-base libffi-dev openssl-dev libgcc
    - apk add python3
    - apk add python3-dev
    - apk add py3-pip
    - pip3 install docker-compose
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
  script:
    - sh ./package.sh
    - sh ./shell-script/build-image.sh
  only:
    - /^release*/
    - release
    - master
  except:
    - tags

這邊主要是使用了 Gitlab CI,並且安裝 Docker Compose

其中利用了docker-compose -f docker-compose-prod.yml build --no-cache 來建立 Docker image,節省了很多建置的指令。

最後再把建立好的 Image 分別 Tag 後 Push 到自己的私有Image Registry

到此為止,我們就完成了打包與交付系統的前置作業,明天來分享如何一鍵部署到客戶私有雲上!


上一篇
【Day-20】我們是怎麼開始的?:一間傳統軟體公司從 0 開始建置的 DevOps 文化(實作篇)- 實戰(1)
下一篇
【Day-22】我們是怎麼開始的?:一間傳統軟體公司從 0 開始建置的 DevOps 文化(實作篇)- 實戰(3)
系列文
從 0 到 1 的 DevOps 執行日記 - 全方位平台實踐手冊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言