@@ -21,25 +21,41 @@ env:
# 构建 Job
jobs :
build :
runs-on : ubuntu-node22 # 如果host构建 : linux_amd64
runs-on : ubuntu-node22 # 如果host构建: linux_amd64
# container:
# image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/catthehacker/ubuntu:act-latest
steps :
- name : Print system info 1
run : echo " The job was automatically triggered by a ${{ gitea.event_name }} event."
- name : Print system info 2
run : echo " This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- name : Print system info 3
run : echo " The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name : Print env
run : env
run : env && blkid
- name : Install dependencies
run : |
apt-get update &&
apt-get install -y gettext &&
apt-get install -y maven
apt-get update &&
apt-get install -y gettext &&
apt-get install -y maven &&
apt-get install -y sudo &&
apt-get install -y iptables
- name : Set up Docker
uses : http://139.9.216.111:3000/bamanker/setup-docker-action@v4
uses : http://139.9.216.111:3000/bamanker/setup-docker-action@v4.6.0
with :
# 版本大于28会有兼容性问题
version : type=archive,channel=stable,version=v27.4.0
daemon-config : |
{
"registry-mirrors":["https://docker.1ms.run"],
"dns": ["8.8.8.8", "114.114.114.114"]
}
- name : Generate maven config
uses : http://139.9.216.111:3000/bamanker/maven-settings-action@v3.1.0
with :
@@ -52,9 +68,6 @@ jobs:
# - run: node -v
# 下载仓库源码, 依赖node环境, 因此构建服务器本地需要下载安装node并设置环境变量
# - name: Set up Docker Buildx
# uses: http://139.9.216.111:3000/bamanker/setup-buildx-action@v3
- name : Checkout repository code
#使用自定义仓库action
uses : http://139.9.216.111:3000/bamanker/checkout@v4
@@ -71,9 +84,7 @@ jobs:
id : set_envar
run : |
echo "The app version is $APP_TAG" && echo "tag=$APP_TAG" >> $GITHUB_OUTPUT &&
echo "now workspace: ${{ github.workspace }}" &&
pwd &&
docker version
echo "now workspace: ${{ github.workspace }}"
# 为其他配置文件注入环境变量
- name : Inject envVar
@@ -81,16 +92,15 @@ jobs:
envsubst < ./deployment-temp.yml > ./deployment.yml &&
cat ./deployment.yml
# 构建 java项目
# 安装 java环境
- name : Set up Java
uses : http://139.9.216.111:3000/bamanker/setup-graalvm@v1
with :
distribution : 'graalvm'
java-version : '25.0.1'
cache : 'maven'
# maven 构建
- name : Build with Maven
#使用maven绝对路径执行打包命令
run : mvn clean native:compile -DskipTests -Pnative
# 登录镜像仓库,方便后续上传镜像
@@ -99,7 +109,6 @@ jobs:
with :
registry : ${{ env.REGISTRY }}
username : ${{ secrets.DOCKERHUB_USERNAME }}
# 这里也可以通过 secrets 传入,后面再介绍
password : ${{ secrets.DOCKERHUB_PASSWORD }}
# # 获取时间戳
@@ -108,14 +117,19 @@ jobs:
# run: |
# echo "datetime=$(date '+%Y-%m-%d-%H-%M-%S')" >> $GITHUB_OUTPUT
# 构建并上传镜像 TODO 直接用docker命令操作
# 构建并上传镜像
- name : Build and push Docker image
# uses: http://139.9.216.111:3000/bamanker/build-push-action@v4 # 获取上一步截取到的版本号,既 1.0.0
# uses: http://139.9.216.111:3000/bamanker/build-push-action@v4
# 获取上一步截取到的版本号,既 1.0.0
#只能这样接收
env :
TAG : ${{ steps.set_envar.outputs.tag }}
run : |
docker buildx build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.TAG }} --push .
ls &&
docker build --file Dockerfile --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.TAG }} . &&
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.TAG }}
# uses: http://139.9.216.111:3000/bamanker/docker-build-push@v5
# with:
# context: .
## platforms: linux/amd64
@@ -124,17 +138,35 @@ jobs:
# tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.TAG }}
#发布到 k8s
- name : Generate kubeconfig
uses : http://139.9.216.111:3000/bamanker/kubectl-action@v1.4.0
with :
base 64- kube-config : ${{ secrets.KUBE_CONFIG }}
- name : Deploy k8s
run : kubectl apply -f ./deployment.yml
# command: apply -f http://139.9.216.111:3000/bamanker/myk3sTest/raw/branch/master/.deploy/deployment-temp.yml
#安装 kubectl
- name : Setup kubectl
run : |
curl -LO "https://dl.k8s.io/release/v1.33.0/bin/linux/amd 64/ kubectl" &&
chmod +x kubectl &&
mv kubectl /usr/local/bin/
- name : Configure kubeconfig
# 假设您的 KUBE_CONFIG 秘密是 Base64 编码的 kubeconfig 文件内容
run : |
# 1. 创建 ~/.kube 目录
mkdir -p $HOME/.kube
# 2. 将 Base64 编码的 KUBE_CONFIG 秘密解码并写入默认配置文件
echo "${{ secrets.KUBE_CONFIG }}" | base64 -d > $HOME/.kube/config
# 3. 确保 kubectl 知道配置文件的位置 (可选, 但安全)
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name : Deploy with kubectl
run : |
kubectl apply -f ./deployment.yml
- name : k8s Check Pods Health
run : kubectl get pod -n default -l app=${{ env.APP_NAME }}
run : |
kubectl get pod -n default -l app=${{ env.APP_NAME }}
- name : k8s Update Deployment
run : kubectl rollout restart deployment ${{ env.APP_NAME }}
run : |
kubectl restart deployment ${{ env.APP_NAME }}