Github 自动化部署

2023-06-25,,

github action 自动化部署

一、创建github 账户

官方地址

点击进入 注册/登录

二、在项目目录下创建文件

.github\workflows固定不变 develop.yml文件名自定义

三、编写配置文件

name: github-action-demo # 工作流名称
on:
push:
branches:
- develop # 生效分支
jobs:
first-github-job: # 任务名称 自定义
runs-on: ubuntu-latest # 运行环境
steps:
- name: Checkout
uses: actions/checkout@v3 #复用的 action 会把仓库代码检出到 runner 中。 - name: Use Node.js
uses: actions/setup-node@v3 # 设置nodejs版本号
with:
node-versions: "14.19.1" # 压缩项目
- name: Build project
run: zip -vr my-artifact ./** # 读取package.json的值
- name: Read Version
id: version
uses: ashley-taylor/read-json-property-action@v1.0
with:
path: ./package.json
property: version # 发布 Release
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
with:
tag_name: v${{steps.version.outputs.value}}
release_name: v${{steps.version.outputs.value}}
draft: false
prerelease: false # 上传构建结果到 Release
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./my-artifact.zip
asset_name: my-artifact.zip
asset_content_type: application/zip # 把文件上传到服务器
- name: Upload to Deploy Server
uses: easingthemes/ssh-deploy@main
env:
# 私钥
SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_TOKEN }}
# 指定当前目录中要上传的内容
SOURCE: "./**"
# 指定上传到部署机器的哪个目录下
TARGET: "/apps/koa-koa"
# 上传前指令,此处用于清空TARGET下的文件
ARGS: "-avzr --delete"
# REMOTE_HOST为机器的公网IP
REMOTE_HOST: ${{ secrets.HOST }}
# REMOTE_USER 为登录机器时用到账号名
REMOTE_USER: ${{secrets.USERNAME}} # 排除上传的文件 用,隔开
EXCLUDE: my-artifact.zip SCRIPT_AFTER: |
whoami
pwd
cd /apps/koa-koa
echo "==="
export NVM_DIR=~/.nvm
source ~/.nvm/nvm.sh
echo $PATH
node -v
pwd
echo $RSYNC_STDOUT
npm install --production
pm2 reload koatest.json

变量解释

secrets是定义在github中的变量

通过secerts.变量名来取值


steps

steps 是github action的关键字

create_release 是上一个步骤的id

outputs.upload_url 是上一个步骤的返回结果


仓库地址:https://github.com/yi-xiaobai/koa-koa

Github 自动化部署的相关教程结束。

《Github 自动化部署.doc》

下载本文的Word格式文档,以方便收藏与打印。