栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

GitHub Actions自动化部署

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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: Checkout
      uses: actions/checkout@master

    # 打包构建
    - name: Build
      uses: 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 Release
      id: create_release
      uses: actions/create-release@master
      env:
        GITHUB_TOKEN: ${{ secrets.TOKEN }} # 仓库下的token
      with:
        tag_name: ${{ github.ref }} # 标签名称
        release_name: Release ${{ github.ref }} # Release名称
        draft: false # 是否是草稿
        prerelease: false # 是否是预发布

    # 上传构建结果到 Release
    - name: Upload Release Asset
      id: upload-release-asset
      uses: actions/upload-release-asset@master
      env:
        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: Deploy
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.HOST }} # 机器的host
        username: ${{ secrets.USERNAME }} # 远程仓库的用户名
        password: ${{ secrets.PASSWORD }} # 远程仓库的密码
        port: ${{ secrets.PORT }}  # 远程仓库的端口号
        script: | # 执行命令构建 (在远程服务器中)1.进入到该目录(前提创建好)2.下载Release发布包 3.解压 4.安装生产 5.重启服务
          cd /root/realworld-nuxtjs
          wget https://github.com/lipengzhou/realworld-nuxtjs/releases/latest/download/release.tgz -O release.tgz
          tar zxvf release.tgz
          npm install --production
          pm2 reload pm2.config.json
3. 修改配置

新建secrets (HOST,USERNAME ,PASSWORD ,PORT )

4. 配置pm2配置文件

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

{
    "apps": [
        {
            "name": "RealWorld",
            "script": "npm",
            "args": "start"
        }
    ]
}
5. 提交更新
 git add
 git tag v0.1.0
 git push origin v0.1.0
6. 查看自动部署状态



7. 访问网站

成功,访问网站查看

8. 提交更新
git tag
git tag v0.1.1
git push origin v0.1.1

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/511053.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号