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 自动化部署的更多相关文章

  1. GitHub自动化部署(CD) asp.net core 5.0 项目(免费空间)

    这里我简单介绍一下使用Github自动化部署自己项目到Heroku云服务器上,Heroku竟然是一个很非常老牌的云平台服务商,竟然还没听说过,网上一查2010被Salesforce收购,网上有很多关于 ...

  2. 最详细之教你Jenkins+github自动化部署.Net Core程序到Docker

    环境 centos7.9,.NET5 一.Jenkins搭建 1)下载Jenkins的war包 在\home目录建一个jenkins目录放jenkins的包 #进入\home目录 cd \home # ...

  3. GO 使用Webhook 实现github 自动化部署

    通常大家开发大部分是本地git push 提交,服务器上git pull 手动更新.git 可以使用webhook实现自动部署.webhook是仓库平台的一个钩子事件,通过hook 钩子监听代码,回调 ...

  4. 使用 GitHub / GitLab 的 Webhooks 进行网站自动化部署

    老早就想写这个话题了,今天正好有机会研究了一下 git 的自动化部署.最终做到的效果就是,每当有新的 commit push 到 master 分支的时候,就自动在测试/生产服务器上进行 git pu ...

  5. node项目自动化部署--基于Jenkins,Docker,Github(1)安装Jenkins

    前言 每次项目代码更新后都要重新部署,如果只有一台服务器还好. 但是如果是分布式系统,动不动就很多台服务器,所以代码的自动部署就显得十分重要了. 这里用几篇文章来记录一下如何使用Jenkins,Doc ...

  6. 博客 | 基于Travis CI实现Hexo在Github和Coding的同步自动化部署

    文章目录 完成Hexo主题安装和配置 基于Travis CI实现同步部署 参考内容 相关链接 待补充 完成Hexo主题安装和配置 如果您还没有安装Hexo环境,请参考Hexo文档安装,也给出这样两篇博 ...

  7. 编写自己的 GitHub Action,体验自动化部署

    本文将介绍如何使用 GitHub Actions 部署前端静态页面,以及如何自己创建一个 Docker 容器 Action. 简介 Actions GitHub Actions 是 GitHub 官方 ...

  8. 利用 Github 网络钩子实现自动化部署

    GitHub 的网络钩子(webhook)功能,可以很方便的实现自动化部署.本文记录了使用 Node.js 的开发部署过程,当项目的 master 分支被推时,将在服务器进行自动部署 添加网路钩子 在 ...

  9. 【Hexo】使用Hexo+github pages+travis ci 实现自动化部署

    目录 一.说明 二.成品展示 三.前期准备 本地安装 node.js 本地安装 git github 账号 创建仓库 travis ci 账号 四.安装 Hexo 五.使用 hexo 搭建博客 六.部 ...

  10. 微服务下的持续集成-Jenkins自动化部署GitHub项目

    @ 目录 一.前言 二.DevOps概念 三.为什么要做持续集成 四.常见云服务 五.手动部署Jenkins 5.1 准备工作 5.2 下载 5.3 启动 5.4 配置 5.5 Jenkins 首页 ...

随机推荐

  1. centos7.6 挂载镜像配置本地yum源

    镜像下载 http://mirrors.aliyun.com/centos-vault/7.6.1810/isos/x86_64/ 配置本地yum源 1.安装Centos后默认的Yum源如下 [roo ...

  2. Blob、FormData

    Blob 在我的理解中这个就是一个二进制的存储类型,就像一张图片就是一组二进制,很多文件都是一组二进制.这个就是数据库用来存储二进制类型. FormData 为什么使用 FormData 来进行数据的 ...

  3. F. K-th Power 容斥,莫比乌斯

    F. K-th Power 传送门: 牛客:https://ac.nowcoder.com/acm/contest/34866/F cf:https://codeforces.com/group/5z ...

  4. [转]sublime text 4注册

    1.打开浏览器进入网站https://hexed.it2.打开sublime text4安装目录选择文件sublime_text.exe3.搜索80 78 05 00 0f 94 c1更改为c6 40 ...

  5. 查看Linux内存占用情况

    参考链接: 查看Linux磁盘及内存占用情况 linux的top命令参数详解 1.ps ps aux --sort -rss a     显示所有终端机下执行的进程,包括其他用户的进程(有的进程没有终 ...

  6. Mongodb between 时间范围

    db.getCollection("Order").find({ "Supplier.ServiceCode": "CNI", " ...

  7. Python学习笔记--判断语句的延续

    if else语句 示例: 需要注意的是,if后面必须有条件,而else后面可以不需要判断条件 案例: 实现: if elif else 语句 多条件判断,if 和 elif 后面必须有条件,else ...

  8. obs推流核心流程分析

    前置步骤和录屏是一样的,见我的上一篇文章 https://www.cnblogs.com/billin/p/17219558.html bool obs_output_actual_start(obs ...

  9. 利用selenium爬取前程无忧招聘数据

    1.背景介绍 selenium通过驱动浏览器,模拟浏览器的操作,进而爬取数据.此外,还需要安装浏览器驱动,相关步骤自行解决. 2.导入库 import csv import random import ...

  10. 在echaerts中渲染50万条数据的优化方案

    背景:项目需求中要在页面上渲染大约50万条左右的波形数据图表 那么如何解决渲染中的卡顿呢? 肯定是要从服务端和前端一起优化这是毋庸置疑的. 1.服务端: 服务端耗时最多的一定是在数据库的筛选数据的行为 ...