提交 ced27fa6 作者: 方治民

ci: 完善本地 gitlab-ci 配置

上级 86468443
流水线 #87 已失败 于阶段
in 1 分 25 秒
# 变量
variables:
# 本地镜像地址,用于拉取镜像以及发布
REGISTRY_REMOTE: localhost:18500
# 容器名称
CONTAINER_NAME: basic-api
# 对外访问端口
EXPOSE_PORT: 8081
# Pipelines 步骤 # Pipelines 步骤
stages: stages:
- build - build
...@@ -13,46 +22,46 @@ cache: ...@@ -13,46 +22,46 @@ cache:
# 编译项目 # 编译项目
build-job: build-job:
stage: build stage: build
image: java:8 image: $REGISTRY_REMOTE/jdk-17
only: only:
- beta
- preview
- tags - tags
# 使用 CI Runner,在 GitLab-Runner 中注册好的 Runner # 使用 CI Runner,在 GitLab-Runner 中注册好的 Runner
tags: tags:
- CI - YR-CI
before_script: before_script:
- chmod +x ./gradlew - chmod +x ./gradlew
script: script:
- ./gradlew assemble - ./gradlew app:assemble
artifacts: artifacts:
# 配置构建结果过期时间 # 配置构建结果过期时间
expire_in: 1 week expire_in: 1 day
# 保留目录 # 保留目录
paths: paths:
- build/libs/*.jar - app/build/libs/*.jar
# 发布,在本地构建镜像并推送到发布环境的镜像库 # 发布,在本地构建镜像并推送到发布环境的镜像库
deploy-job: deploy-job:
stage: deploy stage: deploy
image: docker:latest image: $REGISTRY_REMOTE/docker
# 部署依赖编译 # 部署依赖编译
dependencies: dependencies:
- build-job - build-job
only: only:
- beta
- preview
- tags - tags
# 使用 CD Runner,在 GitLab-Runner 中注册好的 Runner(此处配置成使用宿主环境构建) # 使用 CD Runner,在 GitLab-Runner 中注册好的 Runner(此处配置成使用宿主环境构建)
tags: tags:
- CD - YR-CD
script: script:
# 基于 Dockerfile 构建镜像 # 基于 Dockerfile 构建镜像
- docker build -t $TAG . - docker build -t $TAG .
# 登录到发布环境的私服 # 尝试删除上一个容器
- docker login -u $REGISTRY_REMOTE_USER -p $REGISTRY_REMOTE_PASSWORD https://$REGISTRY_REMOTE - docker rm -f $CONTAINER_NAME || true
# 将刚刚构建的镜像推送到私服 # 在本地运行构建好的镜像
- docker push $TAG - docker run -d --name $CONTAINER_NAME -p $EXPOSE_PORT:8081 $TAG
variables: variables:
# 读取 GitLab CI/CD 配置的 Secret variables
REGISTRY_REMOTE: $REGISTRY_REMOTE
REGISTRY_REMOTE_USER: $REGISTRY_REMOTE_USER
REGISTRY_REMOTE_PASSWORD: $REGISTRY_REMOTE_PASSWORD
# 设置镜像 tag,使用 git tag 标识作为镜像 tag # 设置镜像 tag,使用 git tag 标识作为镜像 tag
TAG: ${REGISTRY_REMOTE}/basic/basic-api:${CI_BUILD_REF_NAME} TAG: $REGISTRY_REMOTE/basic/$CONTAINER_NAME:$CI_BUILD_REF_NAME
# 指定基础镜像,在其上进行定制 # 指定基础镜像,在其上进行定制
FROM java:8 FROM localhost:18500/jdk-17
# 维护者信息 # 维护者信息
MAINTAINER ifzm <fangzhimin@yiring.com> MAINTAINER ifzm <fangzhimin@yiring.com>
...@@ -10,14 +10,14 @@ VOLUME /data ...@@ -10,14 +10,14 @@ VOLUME /data
VOLUME /logs VOLUME /logs
# 复制上下文目录下的 build/libs/app.jar 到容器里 # 复制上下文目录下的 build/libs/app.jar 到容器里
COPY build/libs/app-0.0.1-SNAPSHOT.jar app.jar COPY app/build/libs/app-0.0.1-SNAPSHOT.jar app.jar
# bash方式执行,使 app.jar 可访问 # bash方式执行,使 app.jar 可访问
# RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。 # RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
RUN bash -c "touch /app.jar" RUN bash -c "touch /app.jar"
# 声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务 # 声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8181 EXPOSE 8081
# 指定容器启动程序及参数 <ENTRYPOINT> "<CMD>" # 指定容器启动程序及参数 <ENTRYPOINT> "<CMD>"
ENTRYPOINT ["java", "-jar", "app.jar", "--spring.profiles.active=prod"] ENTRYPOINT ["java", "-jar", "app.jar", "--spring.profiles.active=beta"]
...@@ -13,7 +13,7 @@ spring: ...@@ -13,7 +13,7 @@ spring:
name: "basic-api-app" name: "basic-api-app"
profiles: profiles:
include: auth, conf-patch include: auth, conf-patch
active: test active: beta
# DEBUG # DEBUG
debug: false debug: false
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论