GitHub Actions自动化部署

现代化的部署方式(CI/CD)

持续集成,持续部署

在这里插入图片描述

CI/CD服务

  • Jenkins
  • GitHub Actions
  • Gitlab CI
  • Travis CI
  • Circle CI

这里用到的是GitHub Actions

环境准备:Linux服务器,把代码提交到GitHub远程仓库

配置GitHub Access Token

作用:在CI/CD中使用Git Hub身份令牌来访问操作你的Git Hub仓库,否则没有操作这个的权限

生成

打开开发者设置 - 选择Personal access tokens - 生成新的token(如果以前有也可以用以前的token)

在这里插入图片描述

勾上(这个token对仓库的权限)

在这里插入图片描述

生成的令牌待会会用到,且只显示一次,建议保存下来(如果忘了就重写生成一个吧)

在这里插入图片描述

配置到项目的Secrets中

来到远程仓库(本地代码托管的仓库这里), 设置

在这里插入图片描述

点击Secrets - New secrets

在这里插入图片描述

这里的名称必须和脚本名称一致

在这里插入图片描述

配置 GitHub Actions 执行脚本

1. 在项目根目录创建.github/workflows目录

在这里插入图片描述
在这里插入图片描述

2. 下载main.yml到workflows目录中

name: Publish And Deploy Demo # 自动化部署的名称
on:push:tags:- 'v*' # 当我们提交标签的时候,相当于版本(v开头触发)jobs:build-and-deploy:runs-on: ubuntu-latest # 运行环境steps:# 下载源码 (将远程仓库的代码拉取到本地)- name: Checkoutuses: actions/checkout@master# 打包构建- name: Builduses: actions/setup-node@master- run: npm install- run: npm run build- run: tar -zcvf release.tgz .nuxt static nuxt.config.js package.json package-lock.json pm2.config.json# 发布 Release (创建Release)- name: Create Releaseid: create_releaseuses: actions/create-release@masterenv:GITHUB_TOKEN: ${{ secrets.TOKEN }} # 仓库下的tokenwith:tag_name: ${{ github.ref }} # 标签名称release_name: Release ${{ github.ref }} # Release名称draft: false # 是否是草稿prerelease: false # 是否是预发布# 上传构建结果到 Release- name: Upload Release Assetid: upload-release-assetuses: actions/upload-release-asset@masterenv:GITHUB_TOKEN: ${{ secrets.TOKEN }}with:upload_url: ${{ steps.create_release.outputs.upload_url }}asset_path: ./release.tgz # 上传的文件asset_name: release.tgz # 上传的文件名asset_content_type: application/x-tgz# 部署到服务器- name: Deployuses: appleboy/ssh-action@masterwith:host: ${{ secrets.HOST }} # 机器的hostusername: ${{ secrets.USERNAME }} # 远程仓库的用户名password: ${{ secrets.PASSWORD }} # 远程仓库的密码port: ${{ secrets.PORT }}  # 远程仓库的端口号script: | # 执行命令构建 (在远程服务器中)1.进入到该目录(前提创建好)2.下载Release发布包 3.解压 4.安装生产 5.重启服务cd /root/realworld-nuxtjswget https://github.com/lipengzhou/realworld-nuxtjs/releases/latest/download/release.tgz -O release.tgztar zxvf release.tgznpm install --productionpm2 reload pm2.config.json

3. 修改配置

新建secrets (HOST,USERNAME ,PASSWORD ,PORT )
在这里插入图片描述

4. 配置pm2配置文件

在项目下创建pm2.config.json文件

{"apps": [{"name": "RealWorld","script": "npm","args": "start"}]
}

5. 提交更新

 git addgit tag v0.1.0git push origin v0.1.0

6. 查看自动部署状态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. 访问网站

成功,访问网站查看

8. 提交更新

git tag
git tag v0.1.1
git push origin v0.1.1

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部