11name : ci_cd
22on :
3- push :
4- branches :
5- - main
3+ release :
4+ types : [created]
5+
66env :
77 SSH_HOST : ${{secrets.SSH_HOST}}
88 SSH_USERNAME : ${{secrets.SSH_USERNAME}}
@@ -13,54 +13,19 @@ jobs:
1313 runs-on : ubuntu-latest
1414 steps :
1515 - name : Checkout
16- uses : actions/checkout@v2
16+ uses : actions/checkout@v4
1717
18- - name : Setup Node
19- uses : actions/setup-node@v2
20- with :
21- node-version : ' 12.x'
22-
23- - name : Cache node modules
24- uses : actions/cache@v2
25- env :
26- cache-name : cache-node-modules
27- with :
28- # npm cache files are stored in `~/.npm` on Linux/macOS
29- path : ~/.npm
30- # 缓存命中
31- key : ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
32- # 存储key
33- restore-keys : |
34- ${{ runner.os }}-build-${{ env.cache-name }}-
35- ${{ runner.os }}-build-
36- ${{ runner.os }}-
37- - name : Install Dependency
18+ - name : Build & Push Image
3819 run : |
39- yarn config set registry https://registry.npmmirror.com
40- yarn
41-
42- - name : Build
43- run : yarn build
44-
45- - name : Archive production artifacts
46- uses : actions/upload-artifact@v2
47- with :
48- # 产物名称
49- name : artifact
50- # 产物路径
51- path : dist
20+ docker login --username=${{secrets.DOCKER_USERNAME}} --password=${{secrets.DOCKER_PASSWORD}} ${{secrets.DOCKER_REGISTRY}}
21+ docker build -t ${{secrets.DOCKER_REGISTRY}}/${{secrets.DOCKER_NAMESPACE}}/${{secrets.DOCKER_REPOSITORY}}:${{github.ref_name}} .
22+ docker push ${{secrets.DOCKER_REGISTRY}}/${{secrets.DOCKER_NAMESPACE}}/${{secrets.DOCKER_REPOSITORY}}:${{github.ref_name}}
5223
5324 deploy :
5425 needs : build
5526 runs-on : ubuntu-latest
5627 steps :
57- - name : Download production artifacts
58- uses : actions/download-artifact@v2
59- with :
60- name : artifact
61- path : dist
62-
63- - name : SSH Auth && Deploy To the Server
28+ - name : SSH Auth && Pull Image
6429 run : |
6530 ssh -V
6631 eval $(ssh-agent -s)
6934 chmod 700 ~/.ssh
7035 echo "PubkeyAcceptedKeyTypes +ssh-rsa" > ~/.ssh/config
7136 ssh-keyscan $SSH_HOST >> ~/.ssh/known_hosts
72- chmod 644 ~/.ssh/known_hosts
73- cat ~/.ssh/known_hosts
74- cat ~/.ssh/config
75- ls dist
76- scp -r dist/* $SSH_USERNAME@$SSH_HOST:$DEPLOY_DIR
37+ chmod 644 ~/.ssh/
38+ docker login --username=${{secrets.DOCKER_USERNAME}} --password=${{secrets.DOCKER_PASSWORD}} ${{secrets.DOCKER_REGISTRY}}
39+ docker pull ${{secrets.DOCKER_REGISTRY}}/${{secrets.DOCKER_NAMESPACE}}/${{secrets.DOCKER_REPOSITORY}}:${{github.ref_name}}
40+ docker stop ${{secrets.DOCKER_CONTAINER_NAME}}
41+ docker rm ${{secrets.DOCKER_CONTAINER_NAME}}
42+ docker run -dp ${{secrets.HOST_PORT}}:${{secrets.CONTAINER_PORT}} --name ${{secrets.DOCKER_CONTAINER_NAME}} ${{secrets.DOCKER_NAMESPACE}}/${{secrets.DOCKER_REPOSITORY}}:${{github.ref_name}}
0 commit comments