Giglab CI/CD

devtools/2024/9/22 10:56:02/

.gitlab-ci.yml

打包结构是 将前端代码放到后端的static目录。

步骤:

tags:shell 是配置号的docker

从前端代码编译->打jar->上传ftp

# This file is a template, and might need editing before it works on your project.
# This is a sample GitLab CI/CD configuration file that should run without any modifications.
# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts,
# it uses echo commands to simulate the pipeline execution.
#
# A pipeline is composed of independent jobs that run scripts, grouped into stages.
# Stages run in sequential order, but jobs within stages run in parallel.
#
# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages
#
# You can copy and paste this template into a new `.gitlab-ci.yml` file.
# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.
#
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml
variables:pageHome: project-pagesserverHome: project-serverstages:          # List of stages for jobs, and their order of execution- install- copyfiles- build- test- deploycache:paths:- ${pageHome}- $serverHome- ${pageHome}/node_modules- ${pageHome}/build- ${pageHome}/dist- app.jarbefore_script:- echo "Check Envirenment..."- echo "Hello, $GITLAB_USER_LOGIN!"- curl --help - uname -a#编译前端vue3 
npm-install-job:   # This job also runs in the install stage.stage: install    # It can run at the same time .image: node:18     tags:- shellscript:- echo "firstly, build pageHome by package.json ..."- echo "----------------------------"- cd ${pageHome}   #- sleep 10- node -v- npm -v- ls -a- npm install - npm run build- ls -a- cd ..   # move to Home Dir- echo "install completely."- echo "Ready to next step..."# 将前端build 的内容全部移动到后端的static目录
copyfiles-job:   # This job also runs in the copyfiles stage,, which runs secondlystage: copyfiles    # It can run ...tags:- shellscript:- echo "secondly, move ${pageHome}/dist/** to ./${serverHome}/src/main/resources/static/"- echo "----------------------------"- if [ -d "./${serverHome}/src/main/resources/static/" ]; thenrm -rf "./${serverHome}/src/main/resources/static/" ;fi;- ls- cp -r "./${pageHome}/dist/" "./${serverHome}/src/main/resources/static/"- cd ./${serverHome}/src/main/resources/static/- ls- echo "Copy files completely."- echo "Ready to next step..."# 打jar包
build-job:       # This job runs in the build stage, which runs thirdly.stage: buildimage: adoptopenjdk/maven-openjdk8tags:- shellscript:- echo "thirdly ,build pom.xml for java home"- echo "----------------------------"- java -version- mvn -v# - ls# - cd ./${serverHome}/src/main/resources/static/# - ls- echo "take a break for a while..."- sleep 1  - cd ${serverHome}- mvn clean package -Dmaven.test.skip=true- cd ..- echo "finally, rename the jar name" - echo "----------------------------"- if [ -e "app.jar" ];then rm "app.jar";fi;- cp "./${serverHome}/target/spark-server-0.0.1-SNAPSHOT.jar" "app.jar"- ls -a- echo "Compile complete."- echo "Ready to next step..."#测试,没啥用
lint-test-job:   # This job also runs in the test stage.stage: test    # It can run at the same time as unit-test-job (in parallel).tags:- shellscript:- echo "nothing to do!"- echo "Ready to next step..."- if [ -e "app.jar" ];then echo "app.jar is ready !";else echo "the jar not be ok.";fi;- echo "Ready to next step..."    #- sleep 10 # 上次到ftp
deploy-job:      # This job runs in the deploy stage.stage: deploy  # It only runs when *both* jobs in the test stage complete successfully.tags:- shellscript:- echo "Deploying application..."- echo "${FTPS_URL}"- echo "${FTPS_USERNAME}"- echo "${FTPS_PASSWORD}"- echo "${CI_PROJECT_DIR}"- CURRENT_TIME=$(date +"%Y-%m-%d_%H-%M-%S")- echo "$CURRENT_TIME"- echo "$CI_PIPELINE_CREATED_AT"- apt-get update -qy- apt-get install -qy lftp- echo "show gitLab local files:"  - ls - lftp ${FTPS_URL} -u ${FTPS_USERNAME},${FTPS_PASSWORD} <<END_SCRIPT- mv app.jar ./backup-cicd/app-${CURRENT_TIME}.jar;- put ${CI_PROJECT_DIR}/app.jar;- exit;


http://www.ppmy.cn/devtools/42563.html

相关文章

CSRF 攻击

什么是 CSRF &#xff1f; CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;攻击&#xff0c;是一种常见的网络攻击方式&#xff0c;它利用用户在已登录网站的凭证&#xff08;如 Cookie、Session 等&#xff09;向第三方网站发送非授权的请求…

前端基础入门三大核心之HTML篇:深入理解重绘与重排 —— 概念、区别与实战演练

前端基础入门三大核心之HTML篇&#xff1a;深入理解重绘与重排 —— 概念、区别与实战演练 HTML渲染基础回顾重绘与重排的概念重绘&#xff08;Repaint&#xff09;重排&#xff08;Reflow&#xff09; 区别与影响实战示例&#xff1a;优化策略与代码演示示例1&#xff1a;避免…

Golang创建文件夹

方法 package zdpgo_fileimport ("os" )// AddDir 创建文件夹 func AddDir(dir string) error {if !IsExist(dir) {return os.MkdirAll(dir, os.ModePerm)}return nil }测试 package zdpgo_fileimport "testing"func TestAddDir(t *testing.T) {data : […

Scrapy 从创建到运行

Scrapy是一个强大的Python框架&#xff0c;专门用于构建网络爬虫。 步骤1&#xff1a;安装Scrapy 首先&#xff0c;你需要安装Scrapy框架来进行后续操作。以下是具体操作步骤&#xff1a; 1、使用pip命令安装Scrapy&#xff1a; pip install scrapy 步骤2&#xff1a;创建S…

【Python设计模式04】策略模式

策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以互相替换。策略模式让算法的变化不会影响使用算法的客户端&#xff0c;使得算法可以独立于客户端的变化而变化。…

Java数据结构与算法(最小栈)

前言 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。i…

每日新闻掌握【2024年5月20日 星期一】

2024年5月20日 星期一 农历四月十三 小满 TOP大新闻 住建部谈公积金贷款利率下调&#xff1a;100万贷款30年&#xff0c;总利息将减少4.85万元 日前&#xff0c;住房公积金个人住房贷款利率下调0.25个百分点。住房城乡建设部住房公积金监管司相关负责同志接受采访表示&#xf…

2024年电工杯赛题浅析一图流【一张图看懂 2024 年电工杯】

一图流【一张图看懂 2024 年电工杯】 Aspect A 题&#xff1a;园区微电网风光储协 调优化配置 B 题&#xff1a;大学生平衡膳食食谱 的优化设计及评价 数据处理 需要处理园区的负荷曲线、 风光发电数据、储能配置数 据&#xff1b;涉及数据量较大&#xff0c;需进 行数据…