想透過github action達成自動部署
ci-cd.yml代碼如下
name: CI/CD Pipeline
on:
push:
branches:
- master # 當推送到 master 分支時觸發
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3 # 更新至 v3
- name: Set up Node.js
uses: actions/setup-node@v3 # 更新至 v3
with:
node-version: '20' # 使用 Node.js 版本 20
- name: Install dependencies
run: npm install
#- name: Build the project
# run: npm run build # 如果有需要的話
- name: Build Docker image
run: docker build . -t ${{ secrets.DOCKER_USERNAME }}/cd-example:latest
- name: Log in to Docker Hub
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
- name: Push Docker image
run: docker push ${{ secrets.DOCKER_USERNAME }}/cd-example:latest
- name: Deploy to Server
uses: appleboy/ssh-action@v0.1.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }} # 將您的私鑰添加到 GitHub Secrets
# passphrase: ${{ secrets.SSH_PASSPHRASE }} # 如果您的私鑰有密碼,否則可以刪除
port: 22 # 如果使用非標準端口,請更改為正確的端口
script: |
docker pull ${{ secrets.DOCKER_USERNAME }}/cd-example:latest
docker stop ${{ secrets.DOCKER_USERNAME }}/cd-example || true
docker rm ${{ secrets.DOCKER_USERNAME }}/cd-example || true
docker run -d --name ${{ secrets.DOCKER_USERNAME }}/cd-example ${{ secrets.DOCKER_USERNAME }}/cd-example:latest
看github build的紀錄卡在 deploy to server 這個階段
出現
2024/09/26 08:19:36 ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
的錯誤提示
因為對ssh連線至虛擬機不太熟,也確認secrets有順利添加,想詢問是否有任何建議?
目前已可以透過 終端機
輸入指令
ssh -i "C:\Users\xxx\Documents\xxx.pem" ubuntu@xx.xx.xx.xx
順利連線,防火牆也關掉了,這個pem是透過AWS 自動建立的 default SSH key,連線後並沒有建立任何使用者
順便想詢問業界,通常都是建立虛擬機後,開很多個使用者嗎?然後再使用額外開得使用者連線嗎?