iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
1
自我挑戰組

Laravel 實戰經驗分享系列 第 23

Laravel 實戰經驗分享 - Day23 別再用 FTP 了,Gitlab CI 的簡單部署教學

  • 分享至 

  • xImage
  •  

最近發現主題好像變得比較零散了,那只好繼續散下去(?)
今天來教大家 Gitlab CI 的簡單部署,基本上這也都是現在專案開發的標配了,比起用 FTP 上傳到 Server,Gitlab CI 能幫助你在 commit code 的時候直接完成專案的上傳,也比較不會覆蓋到原有的檔案,造成整個專案爆掉的悲劇發生。

安裝與設定 gitlab-runner

  • 至遠端主機,下載適當的 gitlab-runner 安裝版本

    # Linux x86-64
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
    
    # Linux x86
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386
    
    # Linux arm
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm
    
    # Linux arm64
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64
    
    # Linux s390x
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-s390x
    
  • 給予 gitlab-runner 權限

    sudo chmod +x /usr/local/bin/gitlab-runner
    
  • 在遠端主機內新增一個 gitlab-runner 使用者

    sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
    
  • 安裝 gitlab-runner 並且執行

    sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    sudo gitlab-runner start
    
  • 將遠端角色切換為 gitlab-runner

    sudo su - gitlab-runner
    
  • 註冊 gitlab-runner

    sudo gitlab-runner register
    

    過程會遇到以下的註冊訊息

    • 遠端主機資訊

      Runtime platform arch=amd64 os=linux pid=15476 revision=21cb397c version=13.0.1
      Running in system-mode.
      
    • 輸入 gitlab server 的網址

      Please enter the gitlab-ci coordinator URL (e.g. [https://gitlab.com/](https://gitlab.com/)):
      [https://gitlab.com/](https://gitlab.com/)
      
    • 輸入 gitlab 上的 Runner token

      至 gitlab 的專案內 Setting -> CI/CD -> Runners 內點選 expend 即可取得 token

      Please enter the gitlab-ci token for this runner:
      QkvN......
      
    • 輸入 gitlab-ci 專案的資訊

      Please enter the gitlab-ci description for this runner:
      [chttl-b606df3973664168]: one-stone
      
    • 輸入 gitlab-ci 的 tags (之後仍可修改) → Understanding gitlab-ci tags

      #用逗號隔開可多選,一般 tags 會用來標記 ci 的不同階段\
      Please enter the gitlab-ci tags for this runner (comma separated):
      build
      Registering runner... succeeded runner=QkvNpkgg
      
    • 選擇執行 CI 的主機,若是使用 ssh 連接遠端伺服器則選擇 ssh

      一般狀況下使用 shell 即可

      Please enter the executor: custom, docker, kubernetes, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine:
      ssh
      
    • 輸入遠端伺服器資訊 (SSH)

      #遠端伺服器地址
      Please enter the SSH server address (e.g. my.server.com):
      example.com.tw
      #SSH server 的 port,一般預設都是 22
      Please enter the SSH server port (e.g. 22):
      22
      #SSH server 的使用者 
      Please enter the SSH user (e.g. root):
      leo
      #該使用者的密碼
      Please enter the SSH password (e.g. docker.io):
      **********
      #使用者的 ssh key 檔案路徑
      Please enter path to SSH identity file (e.g. /home/user/.ssh/id_rsa):
      /home/leo/.ssh/id_rsa
      

設定 .gitlab-ci.yml

  • .gitlab-ci.yml 是讓 gitlab 執行持續整合的程式工具,程式碼風格以 yml 標準撰寫
before_script:
    - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
    - cd /var/www/one-stone-backend
master_building:
  stage: build
  script:
    - echo "build"
    - git pull origin master
    - php artisan migrate 
    - php artisan cache:clear
    - php artisan config:cache
  only:
    - master
  tags:
    - build
  • 設定說明:

gitlab 執行 ci 時的工作畫面

執行 jobs 的過程


今天教大家如何透過 gitlab-ci 部署你自己的專案,可能跟鐵人賽的主題很無關XD,但是如果是需要天天將程式碼上到 dev 主機,並且統一版本後上到 production,gitlab-ci 是很方便的工具,明天我們繼續回歸主題,暢遊在 Laravel 的世界中吧!

Reference

Deploy Keys

Install GitLab Runner manually on GNU/Linux

Using SSH keys with GitLab CI/CD

Registering Runners


上一篇
Laravel 實戰經驗分享 - Day22 定期排程,每天都該做的事就交給它!
下一篇
Laravel 實戰經驗分享 - Day24 過濾從 HTTP 來的 requests - Middleware
系列文
Laravel 實戰經驗分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言