前文回顾
日常生产用项目一整套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这个插件来进行远程部署
精彩内容
发表评论