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

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

我在传统行业上班,公司的部署流程偏老旧,加上我这台 PC 性能也一般,所以最近一直在折腾自动部署。

GitHub Action 和之前写过的 Drone 挺像的:开发者写一个 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 用来跳过不相关的文件变更,只改 README 就不会跑。

挨个说一下:

actions/checkout — 检出代码

actions/setup-java@v2 — 配 JDK 17,OpenJDK 用的 adopt 发行版

gradle/wrapper-validation-action + gradle/gradle-build-action — Gradle 打包流程,先校验 wrapper 再跑 build

mr-smithers-excellent/docker-build-push — 用 Dockerfile 打镜像,推到镜像仓库

appleboy/ssh-action — SSH 登录服务器执行部署脚本

追加说明#

服务器地址、密码这些敏感信息,都用 ${{ secrets.xxx }} 从 GitHub Secrets 里读取,在仓库 Settings 里设置:

支持与分享

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

打赏
一种不错的学习型个人开发者的持续集成方案: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:000:00
暂无歌词
分类
标签
站点统计
文章
4
分类
1
标签
13
总字数
2,778
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.13.6
文章许可
CC BY-NC-SA 4.0

文章目录