1.GitHub Actions(创建一个Action,在github仓库)
2.基本的工作流认识
经过上一步后仓库会多出一个文件夹,里面就是配置文件了
先简单认识一下基本的语句
# 这是工作流程的名称,显示
在GitHub Actions的界面上
name: CI
# 指定触发工作流的事件。在这个例子中,每次向任意分支推送时都会触发。
on: [push]
# 定义工作流中的工作。工作是一组在同一个运行环境中执行的步骤。
jobs:
build: # 这是定义的工作名称
# 指定工作运行的环境。这里使用的是最新版本的Ubuntu虚拟环境。
runs-on: ubuntu-latest
# 工作中的步骤序列。
steps:
- uses: actions/checkout@v2 # 使用actions/checkout@v2这个GitHub Action,用于检出你的仓库代码到运行环境中。
# 定义另一个步骤。
- name: Run a one-line script # 步骤的名称
run: echo Hello, world! # 在命令行执行的命令,这里是打印"Hello, world!"
解释 - uses: actions/checkout@v2
- uses:
这是GitHub Actions 工作流程的语法,用于指定一个’action’。在GitHub Actions中,'action’是一个可重用的组件,可以是一个小的任务,比如检出代码、安装依赖、运行测试等。actions/checkout@v2
是一个特定的’action’,它是GitHub官方提供的,用于将你的仓库代码检出到工作流运行的虚拟环境中。简单来说,它就是将你项目的代码复制到运行工作流程的服务器上。actions/checkout
是这个’action’的名称。@v2
指定了’action’的版本。在这里,v2
表示第二个主要版本,通常包含改进和新功能。
现在我们来写我们项目的yml配置文件(这里以我的springMVC项目为例)
概括一下就是…(这里的TGT
都是我项目的名称,可改)
检测push操作—>设置github虚拟机—>把仓库代码放到虚拟机—>设置语言环境—>用maven打包—>移动war包到根目录—>删除服务器旧war包和文件**(注意这里用到了仓库变量(秘密
))**
—>把新war移动到tomcat
下
# 工作流名称
name: Maven Package and Deploy
# 触发工作流的条件。这里设置为当 main 分支有新的推送时触发
on:
push:
branches:
- main
# 工作流中的工作定义
jobs:
# 定义一个名为 'build-and-deploy' 的工作
build-and-deploy:
# 设置工作运行的虚拟环境,这里使用的是最新版本的 Ubuntu
runs-on: ubuntu-latest
# 工作中的步骤
steps:
# 第一步:检出代码
- name: Checkout Code
uses: actions/checkout@v2 # 使用 GitHub 提供的 actions/checkout@v2 Action
# 第二步:设置 JDK 1.8 环境
- name: Set up JDK 1.8
uses: actions/setup-java@v1 # 使用 actions/setup-java@v1 Action 来设置 JDK 环境
with:
java-version: 1.8 # 指定 JDK 版本为 1.8
# 第三步:使用 Maven 构建项目
- name: Build with Maven
run: mvn clean package -DskipTests # 运行 Maven 命令来清理、打包项目,跳过测试
# 第四步:重命名并将 WAR 文件移动到根目录
#(因为在服务器多产生一个traget子目录,使得不能访问)
- name: Rename and Move WAR file to Root Directory
run: |
mv target/*.war ./TGT.war # 将 Maven 构建的 WAR 文件重命名为 TGT.war 并移动到根目录
# 第五步:在服务器上移除旧的 TGT.war 文件和 TGT 目录
- name: Remove old TGT.war and TGT folder from server
uses: appleboy/ssh-action@master # 使用 appleboy/ssh-action 来通过 SSH 连接到服务器
with:
host: ${{ secrets.HOST }} # 服务器地址
username: ${{ secrets.USERNAME }} # SSH 用户名
key: ${{ secrets.KEY }} # SSH 密钥
port: 22 # SSH 端口,这里使用默认端口 22
script: | # 要在服务器上执行的脚本
rm -f /www/server/tomcat/webapps/TGT.war
rm -rf /www/server/tomcat/webapps/TGT
# 第六步:将 WAR 文件复制到服务器
- name: Copy WAR to Server
uses: appleboy/scp-action@master # 使用 appleboy/scp-action 来通过 SCP 将文件复制到服务器
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: 22
source: "TGT.war" # 指定要复制的文件是根目录下的 TGT.war
target: "/www/server/tomcat/webapps" # 目标路径是服务器上的 webapps 目录
3.设置秘密(也就是一些服务器变量)
进入仓库设置
进行秘密的创建
需要创建的密码如下(用于连接我们的服务器)配置四个就足够了
SSH密钥怎么获得?
1.先连上服务器
2.如过从没有生成过(输入后会要求你输入passphrase,一直回车跳过就行)
ssh-keygen -t rsa -C "XXXX@qq.com"
3.查看SSH keys
cat ~/.ssh/id_rsa.put
4.安装公钥
cd .ssh #进入文件夹
cat id_rsa.pub>>authorized_keys #将公钥导入到"authorized_keys"文件
5.确认权限
chmod 600 authorized_keys
chmod 700 ~/.ssh
service sshd restart #重启ssh服务
6.获取私钥内容
cd .ssh
ll
vi id_rsa #查看私钥
然后就是复制了
后面粘贴到刚刚创建的秘密中就行
后面就可以尝试push到仓库,在仓库的action中可以查看工作流的结果