一种不错的学习型个人开发者的持续集成方案:GitHub Action

547 字
3 分钟
一种不错的学习型个人开发者的持续集成方案:GitHub Action

前言#

我本身在传统行业和产品型公司工作,公司比较偏向传统的部署和更新方式让我很苦恼,外加上不是很好的 PC 性能,所以最近一直都在研究自动部署。

而 GitHub Action 是 GitHub 本身推出的服务,它和我之前写过的 Drone 非常类似,由开发者提供 yml 配置文件,然后部署服务通过读取 yml,由上到下顺序执行。

GitHub 设置#

点击 new 之后:

图中都是预设,比如 Docker 的、Java 的,我们先随便点一个。

左边区域是编写的区域,右边是插件仓库,插件仓库提供了各种别人写好的插件,比如:FTP、SFTP、SSH、Docker。

YML 示例#

name: java CI
on:
push:
branches: [ main ]
paths-ignore:
- 'README.md'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1.0.4
- name: Make Gradlew Executable
run: chmod +x ./gradlew
- name: Build with Gradle
uses: gradle/gradle-build-action@v2.1.4
with:
arguments: build
- uses: mr-smithers-excellent/docker-build-push@v5
name: Build & push Docker image
with:
image: inyaa/inyaa-admin
tags: latest
registry: ccr.ccs.tencentyun.com
dockerfile: Dockerfile
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
- name: executing remote ssh commands using password
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
docker stop $(docker ps -a | grep "inyaa-admin" | awk '{print $1}')
docker rm -f $(docker ps -a | grep inyaa-admin | awk '{print $1}')
docker rmi $(docker images | grep inyaa-admin | awk '{print $3}')
docker run -d -p 8080:8080 --name inyaa-admin --network inyaa --network-alias inyaa-admin --volume=/data/nginx/html/sitemap:/home/sitemap ccr.ccs.tencentyun.com/inyaa/inyaa-admin:latest

配置解释#

可以看到,branches: [ main ] 是指提交到 main 这个分支,paths-ignore 是指如果跳过,不执行部署的文件。

从上到下,我们可以解释一下:

actions/checkout 是指检出代码

actions/setup-java@v2 是指设置开发环境,我这里是 JDK 17,并且 OpenJDK 的版本是 adopt

gradle/wrapper-validation-actiongradle/gradle-build-action 这两个都是打包工具,因为我这里使用的是 Gradle,所以先 wrapper 后 build。

mr-smithers-excellent/docker-build-push 是指使用 Dockerfile 打包,然后发布到 Docker 仓库。

appleboy/ssh-action 最后这个是 SSH 登陆到服务器部署。

追加说明#

以上就是 Java 部署的部分了。可以看到,经常会有类似 ${{ secrets.DOCKER_HUB_USERNAME }} 这样的配置。这个的意思是,服务器相关的配置,从 GitHub 的 Secrets 中读取,设置的地方如下图所示。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
一种不错的学习型个人开发者的持续集成方案:GitHub Action
https://blog.yuxh.cc/posts/github-action-ci-cd/
作者
Firefly
发布于
2026-05-19
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Firefly
Hello, I'm Firefly.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
16
分类
3
标签
30
总字数
16,769
运行时长
0
最后活动
0 天前

文章目录