github action的一些用法及hexo自动部署


简介

主要用github action做了两个自动化部署

  • github pages的自动部署
  • 利用github仓库进行docker的自动build,并且定时跟新
  • 利用docker镜像恢复dockerfile

github pages的自动部署

修改hexo的_config.yml

deploy:
  type: git
  #repo: https://github.com/chnxyzz/chnxyzz.github.io.git
  repo: https://GITHUB_TOKEN@github.com/chnxyzz/chnxyzz.github.io.git
  branch: master
  name: chnxyzz
  email: 28676240+chnxyzz@users.noreply.github.com

添加github_action

name: build and deploy

on:
  push:
    branches: master

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      GITHUB_TOKEN: ${{secrets.POST_TOKEN}}
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: 14
          registry-url: https://registry.npmjs.org/
      - name: build and deploy
        run: |
          npm install -g hexo-cli
          npm install
          sed -i "s/GITHUB_TOKEN/${{secrets.POST_TOKEN}}/g" ./_config.yml
          hexo clean && hexo g && hexo d

docker自动部署

给定dockerfile,就可以自动build并且push到dockerhub上

docker官方用的

name: docker build CI

on:
  push:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: build and push
      uses: docker/build-push-action@v1
      with:
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASSWORD }}
        repository: xyzzpwn/hexo_dev
        tags: latest

自己写的,可以用于打上时间的tag,然后不断的叠加push

name: Docker Image CI

on:
  push:
    branches: [ master ]
  schedule:
    - cron: '50 23 * * 6'
    
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build the Docker image
      run: |
        sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime;
        sudo echo 'Asia/Shanghai' >/etc/timezone;
        echo ${{ secrets.DOCKER_PASSWORD }} | docker login --username ${{ secrets.DOCKER_USERNAME }} --password-stdin
        export con_name=xyzzpwn/hexo
        export con_time_name=$con_name:$(date +%Y%m%d%H%M%S)
        export con_relese_name=$con_name:latest
        docker build . --file ./Dockerfile --tag $con_time_name
        docker push $con_time_name
        docker tag $con_time_name $con_relese_name
        docker push $con_relese_name

有时间希望能做成一个和build-push-action一样的即插即用的github action项目
并且可以把deploy github pages 拓展到push到各个仓库

利用docker镜像恢复dockerfile

利用脚本

docker history 然后反转

#!/bin/bash
if [ $# -eq 1 ];then
        docker history --format {{.CreatedBy}} --no-trunc=true $1 |sed "s/\/bin\/sh\ -c\ \#(nop)\ //g"|sed "s/\/bin\/sh\ -c/RUN/g" | tac
    else
        echo "sh $0 Docker_image_name"
fi

通过hash找docker镜像

docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2

所以有需要的时候把docker中所有常用的docker image名字收集起来,通过不断的docker pull来进行尝试
还有一种方法

docker pull ubuntu --all-tags

把所有镜像下载本地,做成一个数据库,不过太耗费流量了。而且实时性不强。


文章作者: xyzz
文章链接: http://www.xyzzpwn.top
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xyzz !
 上一篇
腾讯云cos+cdn对hexo的支持和github action对cos的支持 腾讯云cos+cdn对hexo的支持和github action对cos的支持
简介由于github托管的blog在国内访问的很慢,所以为了优化一下, 决定在Tencent Cloud上搭建一个分站共以下几点 cos+cdn对静态网站对部署,并且配置https github action添加自动部署到cos的job
2020-08-17
下一篇 
修复停电后服务器故障 修复停电后服务器故障
简介停电后,esxi重启,出现以下问题 vsphere center到重做日志已损坏 centos7 system损坏 上台centos7部署的nextcloud中的mariadb损坏 解决方案vsphere center直接采用快照回
2020-08-14
  目录