前文回顾

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

GitHubAction自动化脚本

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

简介

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 }}

详细讲解

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这个插件来进行远程部署

精彩内容

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。