@@ -10,47 +10,48 @@ on:
# - main
workflow_dispatch : #手动构建h
#设置全局环境变量
env :
PATH : /opt/node/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
REGISTRY : registry.cn-chengdu.aliyuncs.com
IMAGE_NAMESPACE : bamanker
REGISTRY : ${{ secrets.DOCKER_REGISTRY }}
IMAGE_NAMESPACE : bamanker # todo 可以通过读取pom文件获取下面这些属性值
IMAGE_NAME : myk3stest
APP_NAME : myk3s-test
# 构建 Job
jobs :
# 构建 Job
build :
runs-on : host
steps :
# 下载仓库源码,依赖java 环境,因此构建服务器本地需要下载安装java 并设置环境变量
# 下载仓库源码,依赖node 环境,因此构建服务器本地需要下载安装node 并设置环境变量
- name : Checkout repository code
#使用自定义仓库action
uses : http://139.9.216.111:3000/bamanker/checkout@v6
# - name: Set up Java
# uses: https://gitee.com/bamanker/setup-java@v5
# with:
# java-version: '25.0.1'
# distribution: 'openjdk'
# cache: 'maven'
#检查java版本
# 获取 TAG 并设置为环境变量
- name : Get version
id : get_version
# e.g. refs/tags/v1.0.0
run : |
echo "version =${GITHUB_REF/refs\/tags\/v}" >> $GITHUB_OUTPUT
# - name: Check java version
# run: java -version
- name : Set E nv Var
echo "APP_TAG =${GITHUB_REF/refs\/tags\/v}" >> $GITHUB_ENV
# 检查 TAG 并传参
- name : Set e nvVar
id : set_envar
run : |
cat ./deployment.yml && export APP_TAG="${{ steps.get_version.outputs.version }}"
# export APP_TAG=$env.TAG
# echo APP_TAG=${{ env.TAG }} |
# export APP_NAME=${{ env.APP_NAME }} |
# echo APP_NAME=${{ env.APP_NAME }} |
- name : Inject E nv Var
echo "The app version is $APP_TAG" && echo "tag=$APP_TAG" >> $GITHUB_OUTPUT &&
echo "now workspace: ${{ github.workspace }}" &&
pwd
# 为其他配置文件注入环境变量
- name : Inject e nvVar
run : |
envsubst < ./deployment.yml
envsubst < ./deployment-temp.yml > ./deployment.yml &&
cat ./deployment.yml
# 构建java项目
- name : Build with Maven
# 设置Maven执行权限, 使用maven绝对路径执行打包命令
#使用maven绝对路径执行打包命令
run : /usr/local/maven/bin/mvn clean package -DskipTests -Pprod
# 登录镜像仓库,方便后续上传镜像
@@ -62,40 +63,33 @@ jobs:
# 这里也可以通过 secrets 传入,后面再介绍
password : ${{ secrets.DOCKERHUB_PASSWORD }}
# 获取时间戳
- name: Get datetime
id : datetime
run : |
echo "datetime=$(date '+%Y-%m-%d-%H-%M-%S')" >> $GITHUB_OUTPUT
# # 获取时间戳
# - name: Get datetime
# id: datetime
# run: |
# echo "datetime=$(date '+%Y-%m-%d-%H-%M-%S')" >> $GITHUB_OUTPUT
# 构建并上传镜像
- name : Build and push Docker image
uses : http://139.9.216.111:3000/bamanker/build-push-action@v6 # 获取上一步截取到的版本号,既 1.0.0
#只能这样接收
env :
TAG : ${{ steps.g et_version .outputs.version }}
TAG : ${{ steps.s et_envar .outputs.tag }}
with :
context : .
platforms : linux/amd64
file : Dockerfile
push : true
tags : ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPP ACE }}/${{ env.IMAGE_NAME }}:${{ env.TAG }}
tags : ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.TAG }}
- name : k8s Check and Apply New D eployment
uses : http://139.9.216.111:3000/bamanker/steevchen-kubectl@master
with :
config : ${{ secrets.KUBE_CONFIG }}
command : apply -f http://139.9.216.111:3000/bamanker/myk3sTest/raw/branch/master/.deploy/deployment.yml
#发布到 k8s
- name : Generate kubeconfig and d eploy
run : kubectl apply -f ./deployment.yml
# command: apply -f http://139.9.216.111:3000/bamanker/myk3sTest/raw/branch/master/.deploy/deployment-temp.yml
- name : k8s Check Pods Health
uses : http://139.9.216.111:3000/bamanker/steevchen-kubectl@master
with :
config : ${{ secrets.KUBE_CONFIG }}
command : get pod -n default -l app=${{ env.APP_NAME }}
run : kubectl get pod -n default -l app=${{ env.APP_NAME }}
- name : k8s Update Deployment
uses : http://139.9.216.111:3000/bamanker/steevchen-kubectl@master
env :
KUBE_CONFIG : ${{ secrets.KUBE_CONFIG }}
with :
command : rollout restart deployment ${{ env.APP_NAME }}-${{ gitea.ref_name }}
run : kubectl rollout restart deployment ${{ env.APP_NAME }}