日常生产用项目一整套DevOps流水线搭建-笔记二(GithubAction实现自动化部署)

前文回顾

日常生产用项目一整套DevOps流水线搭建-笔记一(镜像仓库的设置):
https://blog.csdn.net/ZYM66/article/details/128570758?spm=1001.2014.3001.5501

GitHubAction自动化脚本

借鉴:https://blog.csdn.net/Ber_Bai/article/details/120310024

  1. 简介

GitHub Actions使你可以直接在你的GitHub库中创建自定义的工作流,工作流指的就是自动化的流程,比如构建、测试、打包、发布、部署等等,也就是说你可以直接进行 CI(持续集成)和 CD(持续部署)。
简单地说,就是利用官方以及第三方提供的actions,组合action来实现一些你能做到的其他事情,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。
3. 配置字段

name

name字段是 workflow 的名称。如果省略该字段,默认为当前 workflow 的文件名。

name: My GitHub Actions

on

on字段指定触发 workflow 的条件,通常是某些事件。上面代码指定,push事件触发 workflow。

on字段也可以是事件的数组。

# push时触发 workflow
on: push

# 也可以是一系列触发的数组,push 或 pull_request时触发
on: [push, pull_request]

# main分支push时触发
on:
  push:
    branches:
      - main

# 点击star时触发
on: 
  watch:
    types: [started]  

# 使用cron定时执行,这里表示每小时执行一次
on: 
  schedule:
    - cron: "0 * * * *"

jobs

jobs 是 workflow 文件的主体,表示要执行的一项或多项任务。jobs字段里面,需要写出每一项任务的job_id,具体名称自定义。job_id里面的name字段是任务的说明。

jobs:
  first_job:
    name: My first job
    timeout-minutes: 30
    runs-on: ubuntu-latest
    steps:
    - name: first_step
      env: 
        START_STR: Hi there! My name is
        USER_NAME: Ber
        END_STR: Thank you
      run: |
        echo $START_STR $USER_NAME $END_STR.
        
  second_job:
    name: My second job
    needs: first_job
    timeout-minutes: 45
    runs-on: macOS-latest
    
  third_job:
    name: My third job
    needs: [first_job, second_job]
    timeout-minutes: 60
    runs-on: windows-latest

将Django自动化部署服务器,编写脚本流程

django.yml

name: Django CI

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: ssh deploy
      uses: easingthemes/ssh-deploy@main
      with:
        REMOTE_HOST: ${{ secrets.HOST }}
        REMOTE_USER: ${{ secrets.USERNAME }}
        SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_KEY }}
        SOURCE: "/"
        TARGET: "/home/Saishitong"
#        EXCLUDE: "/static/, /media/"
    - name: Prepare For Django
      uses: webfactory/ssh-agent@v0.5.0
      with:
        ssh-private-key: ${{ secrets.DEPLOY_KEY }}

详细讲解

  1. step1
- uses: actions/checkout@v3

使用checkout@v3检出分支(切换分支到master上)
2. step2

- name: ssh deploy
      uses: easingthemes/ssh-deploy@main
      with:
        REMOTE_HOST: ${{ secrets.HOST }}
        REMOTE_USER: ${{ secrets.USERNAME }}
        SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_KEY }}
        SOURCE: "/"
        TARGET: "/home/Saishitong"
        EXCLUDE: "/static/, /media/"

这里用了easingthemes/ssh-deploy这个插件来进行远程部署

你可能感兴趣的:(笔记,devops,自动化,运维)