Github Actions 自动构建前端项目并部署到服务器

105 篇文章 0 订阅
61 篇文章 1 订阅

参考文章
在开始操作之前,需要先在项目仓库建立page站点。

image.png

1. 创建yml文件

在你需要部署到 Github Page 的项目下,建立一个 yml 文件,放在 .github/workflow 目录下。你可以命名为 ci.yml,它类似于 Jenkins 的 Jenkinsfile 文件,里面包含的是要自动执行的脚本代码。

image.png

文件内容为

name: A TO A:GH_PAGES
on: # 监听 master 分支上的 push 事件
  push:
    branches:
      - master
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest # 构建环境使用 ubuntu
    steps:
    - name: Checkout
      uses: actions/checkout@master

    - name: Build and Deploy
      uses: jenkey2011/vuepress-deploy@master
      env:
        ACCESS_TOKEN: ${{ secrets.VUEAD }} # VUEAD 是我的 secret 名称,需要替换成你的
        # 你要操作的目标仓库,注意:是项目仓库名
        TARGET_REPO: longweixia/vue-ad
        # 构建结果存储的分支
        TARGET_BRANCH: master
        # 要使用的构建命令
        BUILD_SCRIPT: npm install && npm run build # 下载依赖 打包项目
        # 构建结果存储目录,dist里面会有index.html,如果没有这个文件,显示不了,可在本地构建后去校验
        BUILD_DIR: dist
  # sync: //gitee配置
  #   needs: build-and-deploy
  #   runs-on: ubuntu-latest
  #   steps:
  #   - name: Sync to Gitee
  #     uses: wearerequired/git-mirror-action@master
  #     env:
  #       SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
  #     with:
  #       # 来源仓库
  #       source-repo: "git@github.com:linzowo/linzowo.github.io.git"
  #       # 目标仓库
  #       destination-repo: "git@gitee.com:linzowo/linzowo.git"
  # reload-pages:
  #   needs: sync
  #   runs-on: ubuntu-latest
  #   steps:
  #     - name: reload
  #       uses: mizuka-wu/gitee-pages-action@v1.0.0
  #       with:
  #         repository: linzowo/linzowo
  #         cookie: ${{ secrets.GITEE_COOKIE }}
  #         branch: gh_pages

2. 配置密钥

上面有一个 ACCESS_TOKEN 变量需要自己配置。

1. 打开 Github 网站,点击你右上角的头像,选择 settings

image.png

2. 点击左下角的 developer settings

image.png

3. 在左侧边栏中,单击 Personal access tokens(个人访问令牌)

image.png

4. 单击 Generate new token(生成新令牌)

image.png

5. 输入名称并勾选 repo

image.png

6. 拉到最下面,点击 Generate token,并将生成的 token 保存起来。

image.png

7. 打开你的 Github 项目,点击 settings

image.png

点击 secrets->new secret

image.png

创建一个密钥,名称随便填(中间用下划线隔开),内容填入刚才创建的 token。

image.png

可以看到创建成功了:

image.png

将上文代码中的 ACCESS_TOKEN: ${{ secrets.VUE_ADMIN_TEMPLATE }} 替换成刚才创建的 secret 名字,替换后代码如下 ACCESS_TOKEN: ${{ secrets.TEST_A_B }}。保存后,提交到 Github。

以后你的项目只要执行 git push,Github Actions 就会自动构建项目并发布到你的 Github Page 上。

Github Actions 的执行详情点击仓库中的 Actions 选项查看。

image.png

构建中:

image.png

效果:

image.png

3. 错误处理

注意,很大可能会出现Git Page上因为路径问题访问不到打包后的文件,即引入的css,js都是404,这是因为打包后的资源都没有加上仓库路径,所以访问不到

修复

  1. package.json,homepage项填写仓库全名
  "homepage": "https://longweixia.github.io/vue-ad",
  1. vue.config.js的publicPath填写仓库名
module.exports = {
    publicPath: '/vue-ad/',
}

修改好后,git push 就会触发自动构建了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以的,Github Actions可以用来自动化前端项目部署到云服务器。以下是一个简单的例子: 1. 首先,在你的Github仓库中创建一个`.github/workflows`文件夹,并在该文件夹下创建一个`deploy.yml`文件。 2. 在`deploy.yml`文件中设置触发部署的事件,例如push到master分支。然后设置一个`job`,该`job`会在触发事件后运行。 3. 在该`job`中,使用`actions/checkout` action拉取代码,并使用`actions/setup-node` action安装依赖。 4. 接下来,使用你喜欢的打包工具打包你的前端代码,例如webpack或者parcel。打包后的文件会被存储在一个`dist`文件夹中。 5. 然后,使用`appleboy/ssh-action` action将打包后的文件上传到云服务器。该action会使用SSH登录到你的服务器,并将文件复制到服务器上的指定目录。 下面是一个示例的`deploy.yml`文件: ```yml name: Deploy to Cloud Server on: push: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup Node uses: actions/setup-node@v1 with: node-version: '12.x' - name: Install dependencies run: npm install - name: Build run: npm run build - name: Deploy to Cloud Server uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: ${{ secrets.PORT }} script: | cd /path/to/your/project rm -rf * scp -r /path/to/your/project/dist/* ./ ``` 这个例子是使用密码登录到云服务器的。如果你使用的是SSH Key,你需要相应地修改`deploy.yml`文件。此外,你需要在Github仓库的`Settings`中添加`secrets`,以保存你的服务器信息和登录凭证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值