使用GitHub Actions持续集成Hugo静态网站到服务器

摘要:
GitHubActions是由GitHub在2018年推出的一款持续集成的服务方案。我的个人博客是使用Hugo基于markdown生成的静态网站,markdown源文件host在GitHub中,网站host在Centos虚拟机中。因此,准备使用GitHubActions来自动构建、部署网站。了解GitHubActions插件具体的细节搜一搜就能找到了。开始.yml文件主要有两部分:Hugo打包和上传部署到远程服务器。

GitHub Actions 是由GitHub在2018年推出的一款持续集成的服务方案。

我的个人博客是使用Hugo基于markdown生成的静态网站,markdown源文件host在GitHub中,网站host在Centos虚拟机中。

因此,准备使用GitHub Actions来自动构建、部署网站。

准备

  1. 了解GitHub Actions如何工作和.yml的结构。
  2. 了解GitHub Actions插件

具体的细节搜一搜就能找到了。

开始

.yml文件主要有两部分:Hugo打包 和 上传部署到远程服务器。

本站主要用了两个GitHub Actions组件:

  1. peaceiris/actions-hugo
  2. easingthemes/ssh-deploy

下面是本站的.yml:

name: My Blog

on:
  push:
    branches:
      - master  # Set a branch to deploy

jobs:
  build_and_deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: '0.79.1'
          # extended: true

      - name: Build
        run: hugo --minify

      - name: SSH Deploy
        uses: easingthemes/ssh-deploy@v2.1.5
        env:
          SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_PRIVATE_KEY }}
          ARGS: "-rltgoDzvO"
          SOURCE: "public/"
          REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
          REMOTE_USER: ${{ secrets.REMOTE_USER }}
          TARGET: ${{ secrets.REMOTE_TARGET }}

配置

easingthemes/ssh-deploy组件

在你的GitHub repository -> Settings -> Secrets配置以下环境变量:

  1. SERVER_SSH_PRIVATE_KEY
  2. REMOTE_HOST
  3. REMOTE_USER
  4. REMOTE_TARGET

字段具体含义和private key的生成参考其官网:https://GitHub.com/easingthemes/ssh-deploy

这里需要注意下面这句话:

Private key part of an SSH key pair. 
The public key part should be added to the authorized_keys file on the server that receives the deployment.

其他遇到的问题

  1. 'Load key "/home/runner/.ssh/deploy_key": invalid format'

原因: 没有用ssh-deploy官方提到的方式:

The keys should be generated using the PEM format. You can use this command

ssh-keygen -m PEM -t rsa -b 4096
  1. 'bash: rsync: command not found'

原因:需要在网站host server上安装 rsync

我使用的是CentOS,用yum安装一下即可

yum install rsync

参考资料

  1. GitHub Actions 入门教程

使用GitHub Actions持续集成Hugo静态网站到服务器

免责声明:文章转载自《使用GitHub Actions持续集成Hugo静态网站到服务器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇八:SQL之DQL数据查询语言单表操作plugin.xml下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Git系列(1) Windows下Git服务器搭建

  作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作。 (一)服务端软件和账号的安装配置   我们这里只需要两个软件git和ssh,软件版本如下,这两个版本的安装也是非常简单,基本只要注意一点即可:安装目录最好不要用默认路径,确保安装路径中没有空格。其他步骤基本一路Next即可。 ...

vscode配置远程免密

通常我们为了读写代码方便,会在IDE里查看和修改代码,每次通过remote ssh登录,频繁的都要输入密码,这个很烦,索性免密登录,以后就可以想连远程即可实现。 废话少说,直接上教程。 1.在git bash中配置公私钥 打开git bash # 输入 ssh-keygen -t rsa -b "你想输入的内容,可免" # 防止忘记,建议一路回车 #...

了解美杜莎(Medusa)

(1).美杜莎介绍   Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的暴力破解工具。可以同时对多个主机,用户或密码执行强力测试。Medusa和hydra一样,同样属于在线密码破解工具。Medusa是支持AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare),NNTP,PcAnywhere...

ssh配置无密码登录

1.在master机器上生成公钥: [root@master ~]# ssh-keygen -t rsa    注:一直按enter键就可以生成了 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):  Created...

ssh secure Shell连接阿里云服务器,报错的问题,openssh无法登录:server responded "algorithm negotiation failed”

1、putty登录连接到阿里云服务器 2、修改ssh的配置文件 vi /etc/ssh/sshd_config 切换编辑模式(i),设置参数 PasswordAuthentication yes 在配置文件末尾添加: Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-...

新机器下git clone代码新思路

新机器下git clone代码新思路 背景 得到一台新的服务器,需要在这台机器上部署业务代码,常规做法就是 通过ssh-keygen生成密钥公钥 将公钥配置在gitlab上 通过git协议来clone代码 这三步骤中还涉及到首次访问gitlab,需要输入yes来确认,如下图:如果不想人工干预,或者到时批量机器,后者docker中使用呢?我个人之前的做...