后端Java编译
后端Java项目编译jar包
直接使用流水线进行快速编译。
[root@gitclient apiserver]# vim .gitlab-ci.yml
stages:
- compile
compile:
stage: compile
image: maven:3.8.5-openjdk-17
script:
- mvn clean
- mvn compile
- mvn package -Dmaven.test.skip=true
- ls target
only:
- main
tags:
- study-runner
提交流水线:
[root@gitclient apiserver]# git add .
[root@gitclient apiserver]# git commit -m "Compile Java to jar"
[root@gitclient apiserver]# git push origin main
查看编译结果,可知以成功编译出jar包。
此编译 jar 包后续需要封装为容器镜像,因此需要将编译的结果作为产物进行共享。
修改流水线如下后,重新提交流水线:
[root@gitclient apiserver]# vim .gitlab-ci.yml
stages:
- compile
compile:
stage: compile
image: uhub.service.ucloud.cn/imxhy/maven:3.8.5-openjdk-17
artifacts:
paths:
- target/apiservice-0.0.1-SNAPSHOT.jar
script:
- mvn clean
- mvn compile
- mvn package -Dmaven.test.skip=true
- ls target
only:
- main
tags:
- study-runner
提交流水线:
[root@gitclient apiserver]# git add .
[root@gitclient apiserver]# git commit -m "Compile and Share Java to jar"
[root@gitclient apiserver]# git push origin main
查看流水线:
后端Java构建为镜像
编写相应的Dockerfile文件,将jar封装为对应的容器镜像。
[root@gitclient apiserver]# vim Dockerfile
FROM uhub.service.ucloud.cn/imxhy/maven:3.8.5-openjdk-17
MAINTAINER xhy@itzgr.cn
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
EXPOSE 8080
WORKDIR /opt/apiservice/
COPY target/apiservice-0.0.1-SNAPSHOT.jar ./
ENTRYPOINT ["java","-jar","/opt/apiservice/apiservice-0.0.1-SNAPSHOT.jar"]
使用Dockerfile构建镜像的步骤可以直接合入到流水线中,即增加build阶段。
提前在gitlab中创建ALIYUN_USER和ALIYUN_PASSWORD变量,配置阿里云镜像推送的账号和密码。
[root@gitclient apiserver]# vim .gitlab-ci.yml
stages:
- compile
- build
compile:
stage: compile
image: uhub.service.ucloud.cn/imxhy/maven:3.8.5-openjdk-17
artifacts:
paths:
- target/apiservice-0.0.1-SNAPSHOT.jar
script:
- mvn clean
- mvn compile
- mvn package -Dmaven.test.skip=true
- ls target
only:
- main
tags:
- study-runner
build:
stage: build
image: uhub.service.ucloud.cn/imxhy/executor:v1.9.0-debug
needs:
- compile
script:
- ls target
- IMAGE_TAG=$(echo "${CI_COMMIT_TIMESTAMP}" | sed 's/T/_/g; s/-//g; s/://g' | cut -c1-15)
- IMAGE_TAG_TO_INSTALL=${CI_COMMIT_TAG:-$IMAGE_TAG}
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"registry.cn-hangzhou.aliyuncs.com\":{\"auth\":\"$(echo -n ${ALIYUN_USER}:${ALIYUN_PASSWORD} | base64)\"}}}" > /kaniko/.docker/config.json
- cat /kaniko/.docker/config.json
- >
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/Dockerfile"
--destination "registry.cn-hangzhou.aliyuncs.com/xhyimages/apiservice:${IMAGE_TAG_TO_INSTALL}"
--registry-mirror "https://dbzucv6w.mirror.aliyuncs.com"
only:
- main
- tags
tags:
- study-runner
提交流水线:
[root@gitclient apiserver]# git add .
[root@gitclient apiserver]# git commit -m "Compile and Share and Build Java to jar"
[root@gitclient apiserver]# git push origin main
提示:如上流水线直接将构建的镜像推送到阿里云镜像仓库,便于后期直接使用。
查看流水线:
确认推送成功:
前端VUE项目构建
前端项目构建镜像
前端VUE项目可以直接构建为容器镜像,不需要编译。
编写如下 Dockerfile ,构建对应的容器镜像。
[root@gitclient webui]# vim Dockerfile
FROM uhub.service.ucloud.cn/imxhy/node:23.11.0
MAINTAINER xhy@itzgr.cn
RUN npm install -g @vue/cli
WORKDIR /opt/webui/
COPY . ./
RUN npm install
ENTRYPOINT ["npm","run","serve"]
编写流水线:
[root@gitclient webui]# vim .gitlab-ci.yml
stages:
- build
build:
stage: build
image: uhub.service.ucloud.cn/imxhy/executor:v1.9.0-debug
script:
- IMAGE_TAG=$(echo "${CI_COMMIT_TIMESTAMP}" | sed 's/T/_/g; s/-//g; s/://g' | cut -c1-15)
- IMAGE_TAG_TO_INSTALL=${CI_COMMIT_TAG:-$IMAGE_TAG}
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"registry.cn-hangzhou.aliyuncs.com\":{\"auth\":\"$(echo -n ${ALIYUN_USER}:${ALIYUN_PASSWORD} | base64)\"}}}" > /kaniko/.docker/config.json
- cat /kaniko/.docker/config.json
- >
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/Dockerfile"
--destination "registry.cn-hangzhou.aliyuncs.com/xhyimages/webui:${IMAGE_TAG_TO_INSTALL}"
--registry-mirror "https://dbzucv6w.mirror.aliyuncs.com"
only:
- main
- tags
tags:
- study-runner
提交流水线:
[root@gitclient webui]# git add .
[root@gitclient webui]# git commit -m "Build webui to docker image"
[root@gitclient webui]# git push origin main
提示:如上流水线直接将构建的镜像推送到阿里云镜像仓库,便于后期直接使用。
查看流水线:
确认推送成功: