当前位置:   article > 正文

GitHub Actions项目案例_github actions 发送邮件

github actions 发送邮件

GitHub Actions使用需知

GitHub Actions的工作流文件存储在/.github/workflows/XXX.ymlXXX表示任意文件名,只要在该目录下创建任何的文件,并且文件后缀是.yml默认是GitHub Actions

${{ secrets.XXX }}表示的是私有变量,需要自己手动添加,该变量可以保证变量的值暴露给他人,保证安全。

00-文件位置-Blog20230205-953

发送邮件

使用场景

用于项目构建结果通知,我的Hexo博客放在GitHub Actions构建,在工作流最后使用邮件通知,如果在博客构建过程中出错,则不会发送邮件通知,如果构建成功,则会通过邮件通知我构建成功。

代码实现

项目地址:https://github.com/dawidd6/action-send-mail

      - name: 发送邮件
        uses: dawidd6/action-send-mail@v2
        with:
          server_address: smtp.163.com # 发送端的服务器地址
          server_port: 465 # 发送端服务器的端口号
          # 账号 授权码
          username: ${{secrets.EMAIL_USERNAME}} # 发送的邮箱号(发送端)
          password: ${{secrets.EMAIL_PASSWORD}} # 发送的邮箱授权码(发送端)
          subject: ${{secrets.EMAIL_TITLE}}  # 邮件内容标题
          body: ${{secrets.EMAIL_BODY}} # 邮件内容,支持HTML
          to: ${{secrets.EMAIL_TO}} # 接收邮件账号(接收端)
          from: ${{secrets.EMAIL_FROM}} # 发送的邮箱号(发送端)
          content_type: text/html #内容请求类型
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

不知道发送服务器地址和端口号看这篇文章 https://blog.hikki.site/dd7ff60b.html

发送邮件的GitHub Actions有很多现成的案例,比如:https://github.com/marketplace/actions/send-mailer,根据自己的喜好选择自己的。

将Actions虚拟机文件部署到服务器

使用场景

在Hexo博客构建时生成的HTML文件在/public下,将该文件夹内容同步到服务器。

代码实现

项目地址:https://github.com/Burnett01/rsync-deployments

  - name: 部署到服务器
    uses: burnett01/rsync-deployments@4.1
    with:
      # 这里是 rsync 的参数 switches: -avzh --delete --exclude="" --include="" --filter=""
      switches: -avzh
      path: public/    # 将public文件夹同步到服务器下的 PATH 路径
      remote_path: ${{ secrets.PATH }} #服务器的文件存放绝对路径
      remote_host: ${{ secrets.DOMAIN }} #服务器域名或者IP地址
      remote_port: ${{ secrets.EXPORT }} # ssh远程端口(如果没修改过ssh远程端口,默认是22)
      remote_user: ${{ secrets.USER }} # 使用ssh登录的用户
      remote_key: ${{ secrets.PC_PRIVATE_KEY }} #能够远程到服务器的电脑私钥
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • switches:第一个用于任何初始/必需的rsync标志,例如:-avzr --delete
  • rsh:远程shell命令
  • path :源路径。默认为GITHUB_WORKSPACE,并且相对于它
  • remote_path:部署目标路径
  • remote_host: 远程主机
  • remote_port:远程端口。默认为22
  • remote_user: 远程用户
  • remote_key: 远程ssh私钥
  • remote_key_pass :远程ssh密钥密码(如果有)

执行简单的Bash命令

使用场景

用于安装npm包或者打印某某文件。

代码实现

指定亚洲时区,安装hexo-cli

  - name: 安装 Hexo
    run: | 
      export TZ='Asia/Shanghai'
      npm install hexo-cli -g
  • 1
  • 2
  • 3
  • 4

Hexo自动构建

使用场景

使用Hexo博客都知道,我们每次更新博客文章时,都需要在本地构建再推送文章到服务器或者GitHub pages,文章越多,构建时间越长。

为此,GitHub Actions的出现可以帮我们解决这个问题,我们可以将构建这部分放在GitHub Actions自动化,构建完成自动将文章推送到服务器或者GitHub Pages。

代码实现

name: Hexo自动部署
# 当有改动推送到master分支时,启动Action
on: # 触发该actions
  push: # 当提交时触发该事件
    branches: # 指定提交到某分支才触发事件
      - main # 指定提交到main分支触发事件
      #2020年10月后github新建仓库默认分支改为main,注意更改
  release:
    types:
      - published

jobs:
  deploy:
    runs-on: ubuntu-latest # 该actions运行的环境,这里指定在Ubuntu系统环境下运行
    steps:
      - name: 检查分支
        uses: actions/checkout@v2
        with:
          ref: main

      - name: 安装 Node
        uses: actions/setup-node@v1
        with:
          node-version: "16.x"

      - name: 安装 Hexo
        run: | 
          export TZ='Asia/Shanghai'
          npm install hexo-cli -g

      - name: 缓存 Hexo
        uses: actions/cache@v1
        id: cache
        with:
          path: node_modules
          key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}

      - name: 安装依赖
        if: steps.cache.outputs.cache-hit != 'true'
        run: | 
          npm -v
          node -v
          npm install -g npm
          npm install --save

      - name: 生成静态文件
        run: | 
          echo "开始清除html文件"
          hexo clean
          echo "开始生成html文件"
          hexo generate


      - name: 部署到服务器
        uses: burnett01/rsync-deployments@4.1
        with:
          # 这里是 rsync 的参数 switches: -avzh --delete --exclude="" --include="" --filter=""
          switches: -avzh
          path: public/    # 将public文件夹同步到服务器下的 PATH 路径
          remote_path: ${{ secrets.PATH }} #服务器的文件存放绝对路径
          remote_host: ${{ secrets.DOMAIN }} #服务器域名或者IP地址
          remote_port: ${{ secrets.EXPORT }} # ssh远程端口(如果没修改过ssh远程端口,默认是22)
          remote_user: ${{ secrets.USER }} # 使用ssh登录的用户
          remote_key: ${{ secrets.PC_PRIVATE_KEY }}      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

构建Hexo博客主要是前面50行代码,后面部署到服务器,和文章上面的一样。

前面部分可以直接复制去使用。

以上文章来自我的博客:https://blog.hikki.site

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/185988
推荐阅读
相关标签
  

闽ICP备14008679号