Gitlab CI/CD 之 scp 複製檔案

前言

大家好上次教 Gitlab CI/CD 如何撰寫 CI/CD 腳本,使用 ssh 自動連線目標主機,很受到大家關注,在這裡先跟大家說一聲謝謝,以後會繼續做有意義的文章給各位,今天要教大家如何使用 scp 這個使令,將我們的檔案複製到目標主機,並進行佈署動作,我們之後會使用 Docker Compose 來對我們的 Docker Image 與 Docker Container 進行更新

scp 功能

scp 指令是可以將我們的檔案複製到另一端伺服器,這個指令功能也跟 ssh 很像,需要有公鑰與私鑰,由於我們已經在上次 ssh 連線篇章有建立過公鑰與私鑰,所以不需要再額外創建

scp 指令使用

scp 指令使用,如果是複製檔案,在下面輸入這樣指令,即可將資料複製到目標主機

scp [本地端檔案路徑]   [伺服器使用者名稱]@[伺服器 IP]:[複製到哪個路徑]

如果是要資料夾裡面的資料都複製進去,只要加一個 -r 這個指令,即可將資料複製到目標主機

scp -r [本地端檔案路徑]   [伺服器使用者名稱]@[伺服器 IP]:[複製到哪個路徑]

撰寫 CI/CD 腳本

接下來我們來撰寫 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,可以發現我們運行成功,將檔案複製到另一台伺服器

再去查看我們的伺服器,可以確定我們確實有成功將檔案複製到伺服器裡面

留言

此網誌的熱門文章

yarn 專案版號管理指令

Gitlab CI/CD 之 when

Gitlab CI/CD 什麼是 CI/CD