1.什么是持续集成 、交付、部署
持续集成是指,频繁地(一天多次)将代码集成到主干。 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。许多团队发现这种方法可以显著减少集成问题,并允许团队更快地开发高质量的软件。 这是持续交付和持续部署的基础。
2.使用Github Action
GitHub Actions 是一个强大的持续集成/持续交付(CI/CD)工具,它可以与 GitHub 存储库集成,帮助自动化软件开发工作流程。
本文从本站部署出发,介绍如何使用 Github Action 实现 CI/CD
使用前准备
- Github 账号
- 配置了Pages 仓库的Github
开始
本站使用的是nodejs框架hexo,所以本文以hexo为例.
框架的源代码放在source仓库,生成的静态文件放在public仓库,所以我们需要在source仓库的.github/workflows/目录下创建一个yml文件,文件名随意,本文以hexo.yml为例
也可以放在同一个仓库,即源代码放到master分支,生成的静态文件放在gh-pages分支,在master分支的.github/workflows/目录下创建yml文件
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 65 66
| name: auto deploy
on: workflow_dispatch: push:
jobs: build: runs-on: ubuntu-latest name: auto deploy steps: - name: Checkout uses: actions/checkout@v3 with: submodules: false - name: Setup Node.js 16.15.0 uses: actions/setup-node@master with: node-version: "16.15.0" - name: '缓存依赖环境' uses: actions/cache@v3 id: cache with: path: node_modules key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: '安装依赖环境' if: steps.cache.outputs.cache-hit != 'true' run: npm ci - name: Generate Public Files run: | npm i npm install hexo-cli -g hexo clean && hexo generate # 配置 SSH mkdir -p ~/.ssh && echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa && ssh-keyscan github.com >> ~/.ssh/known_hosts # 配置 Git git config --global user.name 'kayleh' git config --global user.email 'yaojinqing@kayleh.top' - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3 with: deploy_key: ${{ secrets.DEPLOY_KEY }} external_repository: Kayleh/public publish_branch: master publish_dir: ./public commit_message: ${{ github.event.head_commit.message }} user_name: 'github-actions[bot]' user_email: 'github-actions[bot]@users.noreply.github.com'
|
3.配置Github Secrets
为了安全,我们需要配置Github Secrets,用于存放私密信息,如ssh key等
1.先生成ssh key
1
| ssh-keygen -t rsa -b 4096 -C "你的 GitHub 邮箱"
|
2.在生成的文件夹中找到id_rsa.pub,复制内容,以此为ssh key
3.在Github仓库的Settings->Secrets中添加DEPLOY_KEY,值为ssh key,用于提交代码,部署到Github Pages
到这里,我们就可以通过push代码,自动部署到Github Pages了