简介
github 在近期提供了一个 workflows 功能,可以轻松实现定制化工作流任务,包括经常使用的包括了 ci和cd ,从此不再需要通过第三方服务来实现。
通过 workflows 我们可以实现以下功能:
- 构建和测试 Node.js
- 构建和测试 Python
- 使用 Maven 构建和测试 Java
- 使用 Gradle 构建和测试 Java
- 使用 Ant 构建和测试 Java
- 发布 Node.js 模块包
- 使用 Maven 发布 Java 软件包
- 使用 Gradle 发布 Java 软件包
- 发布 Docker 镜像
- 缓存依赖文件
workflows 执行结果配置推送:
- 个人邮箱
- 如果您属于组织,则可以选择要将组织活动通知发送到的电子邮件帐户
- 选择仅接收失败的工作流通知
- 为移动设备启用推送通知
参考文件:
点击 github 仓库 Actions 可以查看更多模板文件
操作—node.js ci/cd
首先在项目下创建配置文件.github/workflows/main.yml
,具体内容将在配置文件中解释
name: back-end/.TENCETN_CLOUD_HOST
on:
push:
branches:
- master
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
registry-url: https://registry.npm.taobao.org
- run: npm ci
- run: npm test
env: # 注入环境变量,可选
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
deploy: # 持久化部署方案为,将代码拷贝到服务器,然后进行docker 部署
runs-on: ubuntu-latest
steps:
# 切换分支,获取源码
- name: Checkout
uses: actions/checkout@master
- name: ssh deploy
uses: easingthemes/ssh-deploy@v2.1.4
env:
# Private Key 私钥
SSH_PRIVATE_KEY: ${{secrets.BA_K8S}} # ssh 登录密钥保存位置,可以在仓库 setting secret 中进行配置
# Remote host 远程主机地址
REMOTE_HOST: "127.0.0.1"
# Remote user 远程主机登录用户
REMOTE_USER: "root"
# Remote port 远程主机登录端口
# REMOTE_PORT: 22
# optional, default is 22
# Source directory 拷贝源文件目录
SOURCE: "./*"
# optional, default is
ARGS: "-rltgoDzvO --delete"
# Target directory 目标目录
TARGET: "/opt/bin/back-end"
- name: docker build and docker run
uses: garygrossgarten/github-action-ssh@release
with:
command: cd /opt/bin/back-end && docker rmi -f back-end:1.0.0 && cd /opt/bin/back-end && docker build -t back-end:1.0.0 . && docker run -d --name back-end -p 5000:5000 back-end:1.0.0
host: "127.0.0.1"
username: "root"
privateKey: ${{ secrets.BA_K8S }}
可以在仓库的 readme.md 中配置 job 运行结果图表,格式如: