大家好上次教 Gitlab CI/CD 如何撰寫 CI/CD 腳本,使用 ssh 自動連線目標主機,很受到大家關注,在這裡先跟大家說一聲謝謝,以後會繼續做有意義的文章給各位,今天要教大家如何使用 scp 這個使令,將我們的檔案複製到目標主機,並進行佈署動作,我們之後會使用 Docker Compose 來對我們的 Docker Image 與 Docker Container 進行更新
scp 指令是可以將我們的檔案複製到另一端伺服器,這個指令功能也跟 ssh 很像,需要有公鑰與私鑰,由於我們已經在上次 ssh 連線篇章有建立過公鑰與私鑰,所以不需要再額外創建
scp 指令使用,如果是複製檔案,在下面輸入這樣指令,即可將資料複製到目標主機
scp [本地端檔案路徑] [伺服器使用者名稱]@[伺服器 IP]:[複製到哪個路徑]
如果是要資料夾裡面的資料都複製進去,只要加一個 -r 這個指令,即可將資料複製到目標主機
scp -r [本地端檔案路徑] [伺服器使用者名稱]@[伺服器 IP]:[複製到哪個路徑]
接下來我們來撰寫 CI/CD 腳本,來練習將我們檔案複製到另一台伺服器,在這裡我已經事先寫好 Docker Compose
以下我們開始撰寫 CI/CD 腳本
image: mcr.microsoft.com/dotnet/sdk:6.0
stages:
- deploy
deploy-to-development:
stage: deploy
tags:
- shell
before_script:
- eval $(ssh-agent -s)
- ssh-add <(echo "$SERVER_PRIVATE_KEY")
script:
- ssh -o StrictHostKeyChecking=no $SERVER_USER_NAME@$SERVER_URL "
mkdir -p ~/DotNetCoreWebApiCiAndCdCourse"
- scp -o StrictHostKeyChecking=no ./docker-compose.yml $SERVER_USER_NAME@$SERVER_URL:~/DotNetCoreWebApiCiAndCdCourse
接下來把我們寫好的 CI/CD 腳本,上傳到 Gitlab 運行 CI/CD,可以發現我們運行成功,將檔案複製到另一台伺服器
再去查看我們的伺服器,可以確定我們確實有成功將檔案複製到伺服器裡面