Jenkins+Gitlab+Ansible自动化部署(四)
接Jenkins+Gitlab+Ansible自动化部署(三)https://www.cnblogs.com/zd520pyx1314/p/10235394.html
Jenkins应用
Jenkins Linux Shell集成
登录Jenkins web管理页,点击新建任务
添加描述信息
添加构建执行shell
在执行shell输入框内输入
#!/bin/sh user=`whoami` if [ $user == 'deploy' ] then echo "Hello, my name is $user" else echo "Sorry, I am not $user" fi ip addr cat /etc/system-release free -m df -h py_cmd=`which python` $py_cmd --version
点击查看输出信息
Started by user admin Building in workspace /var/lib/jenkins/workspace/shell-freestyle-job [shell-freestyle-job] $ /bin/sh /tmp/jenkins3318863497197478868.sh Hello, my name is deploy 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:23:04:a4 brd ff:ff:ff:ff:ff:ff inet 192.168.244.131/24 brd 192.168.244.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet6 fe80::6c1f:4afc:8c42:2ef7/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:23:04:ae brd ff:ff:ff:ff:ff:ff 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:d5:9c:dd brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:d5:9c:dd brd ff:ff:ff:ff:ff:ff CentOS Linux release 7.5.1804 (Core) total used free shared buff/cache available Mem: 1982 1032 377 10 571 707 Swap: 2047 0 2047 Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 18G 4.6G 13G 26% / devtmpfs 975M 0 975M 0% /dev tmpfs 992M 0 992M 0% /dev/shm tmpfs 992M 11M 982M 2% /run tmpfs 992M 0 992M 0% /sys/fs/cgroup /dev/sr0 8.8G 8.8G 0 100% /media/cdrom /dev/sda1 497M 150M 347M 31% /boot tmpfs 199M 12K 199M 1% /run/user/42 tmpfs 199M 0 199M 0% /run/user/0 Python 2.7.5 Finished: SUCCESS
Jenkins 参数集成
仍然登录到Jenkins web管理页,点击新建任务。
添加描述信息
点击“参数化构建过程”
#!/bin/sh echo "Current deploy environment is $deploy_env" echo "The build is $version" echo "The paasword is $pass" if $bool then echo "Request is approved" else echo "Request is rejected" fi
点击“Build with Parameters”后如下图所示
查看输出信息
Started by user admin Building in workspace /var/lib/jenkins/workspace/parameter-freestyle-job [parameter-freestyle-job] $ /bin/sh /tmp/jenkins459467524349987986.sh Current deploy environment is dev The build is 1.0.1 The paasword is 123456 Request is approved Finished: SUCCESS
Jenkins Git集成
首先还是登录Jenkins web管理页,点击“New 任务”
添加描述信息
返回到gitlab新建一个ansible-playbook.repo工程(新建过程略),只有一个ansible-playbook.txt空文件
复制ansible-playbook.repo仓库地址,粘贴至下图
点击“立即构建”
查看输出信息
Started by user admin Building in workspace /var/lib/jenkins/workspace/git-freestyle-job Cloning the remote Git repository Cloning repository https://gitlab.example.com/root/ansible-playbook-repo.git > git init /var/lib/jenkins/workspace/git-freestyle-job # timeout=10 Fetching upstream changes from https://gitlab.example.com/root/ansible-playbook-repo.git > git --version # timeout=10 using GIT_ASKPASS to set credentials > git fetch --tags --progress https://gitlab.example.com/root/ansible-playbook-repo.git +refs/heads/*:refs/remotes/origin/* > git config remote.origin.url https://gitlab.example.com/root/ansible-playbook-repo.git # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url https://gitlab.example.com/root/ansible-playbook-repo.git # timeout=10 Fetching upstream changes from https://gitlab.example.com/root/ansible-playbook-repo.git using GIT_ASKPASS to set credentials > git fetch --tags --progress https://gitlab.example.com/root/ansible-playbook-repo.git +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision eb4736cb66dd954b1f45b1d38f789c84aaedb078 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f eb4736cb66dd954b1f45b1d38f789c84aaedb078 Commit message: "First comm" First time build. Skipping changelog. Finished: SUCCESS
Jenkins maven集成
打开maven官网:https://maven.apache.org/download.cgi
复制最新maven的软件包链接
http://mirrors.shu.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
安装maven
[root@jenkins ~]# wget http://mirrors.shu.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz [root@jenkins ~]# tar -xf apache-maven-3.6.0-bin.tar.gz -C /opt/ [root@jenkins ~]# ls /opt/ apache-maven-3.6.0 rh [root@jenkins ~]# cd /opt/apache-maven-3.6.0/bin/ [root@jenkins bin]# ./mvn --version Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00) Maven home: /opt/apache-maven-3.6.0 Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"
回到Jenkins web管理页,点击“New 任务”
添加描述信息
回到gitlab主页
新建一个空的Java-war-dev工程,复制其仓库地址;
然后切到windows git bash命令行,上传本地代码到刚才新建的Java-war-dev仓库中:
xueji@xueji MINGW64 ~/Desktop/repo $ pwd /c/Users/xueji/Desktop/repo xueji@xueji MINGW64 ~/Desktop/repo $ ls Java-war-dev/ xueji@xueji MINGW64 ~/Desktop/repo $ git config --global user.name "root" xueji@xueji MINGW64 ~/Desktop/repo $ git config --global user.email "root@example.com" xueji@xueji MINGW64 ~/Desktop/repo $ git init Initialized empty Git repository in C:/Users/xueji/Desktop/repo/.git/ xueji@xueji MINGW64 ~/Desktop/repo (master) $ git remote add origin https://gitlab.example.com/root/java-war-dev.git xueji@xueji MINGW64 ~/Desktop/repo (master) $ git add . warning: LF will be replaced by CRLF in Java-war-dev/pom.xml. The file will have its original line endings in your working directory warning: LF will be replaced by CRLF in Java-war-dev/src/main/webapp/WEB-INF/web.xml. The file will have its original line endings in your working directory warning: LF will be replaced by CRLF in Java-war-dev/src/main/webapp/index.jsp. The file will have its original line endings in your working directory xueji@xueji MINGW64 ~/Desktop/repo (master) $ git commit -m"first commit" [master (root-commit) aa3c70c] first commit 7 files changed, 58 insertions(+) create mode 100644 Java-war-dev/.DS_Store create mode 100644 Java-war-dev/pom.xml create mode 100644 Java-war-dev/src/.DS_Store create mode 100644 Java-war-dev/src/main/.DS_Store create mode 100644 Java-war-dev/src/main/webapp/.DS_Store create mode 100644 Java-war-dev/src/main/webapp/WEB-INF/web.xml create mode 100644 Java-war-dev/src/main/webapp/index.jsp xueji@xueji MINGW64 ~/Desktop/repo (master) $ git -c http.sslVerify=false push origin master Enumerating objects: 14, done. Counting objects: 100% (14/14), done. Delta compression using up to 4 threads Compressing objects: 100% (12/12), done. Writing objects: 100% (14/14), 2.13 KiB | 726.00 KiB/s, done. Total 14 (delta 3), reused 0 (delta 0) To https://gitlab.example.com/root/java-war-dev.git * [new branch] master -> master
查看gitlab上已经上传成功,复制Java-war-dev仓库地址;
再次回到Jenkins刚才创建的maven-freestyle-job中,将复制的仓库地址粘贴过来;
接着添加构建步骤
返回到Jenkins系统管理设置jdk和maven路径
点击“Apply”,最后点击“Save”
回到Jenkins mavent-freestyle-job配置页;
试了好多次,中间错误过程及错误信息在本文结尾列出,针对我的环境,我猜测的是路径错误导致的,因为重新设置了路径之后,第16次构建,也就是上述构建成功的截图就是我重新建了一个Java-war-dev工程,直接在工程下面就是src目录,之前的错误因为我的目录结构是Java-war-dev工程下还有一个Java-war-dev文件夹,导致一直报错,在晚上转了一大圈,也没解决,最后我尝试新建了一个工程,重新配置了一下,构建成功!
查看输出信息
Started by user admin Building in workspace /var/lib/jenkins/workspace/maven-freestyle-job > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://gitlab.example.com/root/Java-war-dev.git # timeout=10 Fetching upstream changes from https://gitlab.example.com/root/Java-war-dev.git > git --version # timeout=10 using GIT_ASKPASS to set credentials > git fetch --tags --progress https://gitlab.example.com/root/Java-war-dev.git +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 87d659a9d8706b67e70a89fe7c9d5359d8fd72f5 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 87d659a9d8706b67e70a89fe7c9d5359d8fd72f5 Commit message: "master-1.0.0" First time build. Skipping changelog. [maven-freestyle-job] $ /opt/apache-maven-3.6.0/bin/mvn package [INFO] Scanning for projects... [INFO] [INFO] -------------------< com.jenkins.demo:Java-war-dev >-------------------- [INFO] Building Java-war-dev Maven Webapp 1.0.15-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Java-war-dev --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /var/lib/jenkins/workspace/maven-freestyle-job/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Java-war-dev --- [INFO] No sources to compile [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ Java-war-dev --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /var/lib/jenkins/workspace/maven-freestyle-job/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ Java-war-dev --- [INFO] No sources to compile [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ Java-war-dev --- [INFO] No tests to run. [INFO] [INFO] --- maven-war-plugin:2.2:war (default-war) @ Java-war-dev --- [INFO] Packaging webapp [INFO] Assembling webapp [Java-war-dev] in [/var/lib/jenkins/workspace/maven-freestyle-job/target/Java-war-dev] [INFO] Processing war project [INFO] Copying webapp resources [/var/lib/jenkins/workspace/maven-freestyle-job/src/main/webapp] [INFO] Webapp assembled in [21 msecs] [INFO] Building war: /var/lib/jenkins/workspace/maven-freestyle-job/target/Java-war-dev.war [INFO] WEB-INF/web.xml already added, skipping [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.341 s [INFO] Finished at: 2019-01-09T19:22:35+08:00 [INFO] ------------------------------------------------------------------------ Finished: SUCCESS
Jenkins Ansible集成演示
需要同anible主机上的配置ansible2.5+python 3.6虚拟环境一致,
配置Ansible2.5+python3.6
[root@jenkins Python-3.6.8]# yum install -y openssl* gcc zlib* [root@jenkins ~]# wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz [root@jenkins ~]# tar -xf Python-3.6.8.tar.xz -C /usr/local/src/ [root@jenkins ~]# cd /usr/local/src/Python-3.6.8/ [root@jenkins Python-3.6.8]# ./configure --prefix=/usr/local/ --with-ensurepip=install --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" [root@jenkins Python-3.6.8]# make && echo $? && sleep 3 && make altinstall && echo $? [root@jenkins Python-3.6.8]# whereis pip3.6 pip3: /usr/local/bin/pip3.6 [root@jenkins Python-3.6.8]# whereis pip pip: /usr/local/bin/pip3.6 [root@jenkins Python-3.6.8]# ln -s /usr/local/bin/pip3.6 /usr/local/bin/pip [root@jenkins ~]# pip install virtualenv [root@jenkins ~]# su - deploy [deploy@jenkins ~]$ virtualenv -p /usr/local/bin/python3.6 .py3-a2.5-env Already using interpreter /usr/local/bin/python3.6 Using base prefix '/usr/local' New python executable in /home/deploy/.py3-a2.5-env/bin/python3.6 Also creating executable in /home/deploy/.py3-a2.5-env/bin/python Installing setuptools, pip, wheel... done. [deploy@jenkins ~]$ cd /home/deploy/.py3-a2.5-env/ [deploy@jenkins .py3-a2.5-env]$ source /home/deploy/.py3-a2.5-env/bin/activate (.py3-a2.5-env) [deploy@jenkins .py3-a2.5-env]$ pip install paramiko PyYAML jinja2 (.py3-a2.5-env) [deploy@jenkins .py3-a2.5-env]$git clone https://github.com/ansible/ansible.git (.py3-a2.5-env) [deploy@jenkins .py3-a2.5-env]$ cd ansible/ (.py3-a2.5-env) [deploy@jenkins ansible]$ pwd /home/deploy/.py3-a2.5-env/ansible (.py3-a2.5-env) [deploy@jenkins ansible]$ git checkout stable-2.5 Branch stable-2.5 set up to track remote branch stable-2.5 from origin. Switched to a new branch 'stable-2.5' (.py3-a2.5-env) [deploy@jenkins ansible]$ source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q (.py3-a2.5-env) [deploy@jenkins ansible]$ ansible --version ansible 2.5.14 (stable-2.5 c748512c4c) last updated 2019/01/09 20:03:39 (GMT +800) config file = None configured module search path = ['/home/deploy/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/deploy/.py3-a2.5-env/ansible/lib/ansible executable location = /home/deploy/.py3-a2.5-env/ansible/bin/ansible python version = 3.6.8 (default, Jan 9 2019, 19:44:42) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
配置jenkins.example.com主机到test.example.com主机的ssh免秘钥认证
(.py3-a2.5-env) [deploy@jenkins ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/deploy/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/deploy/.ssh/id_rsa. Your public key has been saved in /home/deploy/.ssh/id_rsa.pub. The key fingerprint is: SHA256:cXo/fOrw7FhywXZvsRmHUBkMPvuY2C3wdMIFTgeaZ1Q deploy@jenkins.example.com The key's randomart image is: +---[RSA 2048]----+ | *=Eo | | B +o | | . + B . | | + = = . | | S o O +o.| | . X X .*| | + % +oo| | O = . | | .o* | +----[SHA256]-----+ (.py3-a2.5-env) [deploy@jenkins ~]$ ssh-copy-id root@test.example.com /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/deploy/.ssh/id_rsa.pub" /bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@test.example.com's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@test.example.com'" and check to make sure that only the key(s) you wanted were added. (.py3-a2.5-env) [deploy@jenkins ~]$ ssh root@test.example.com Last login: Wed Jan 9 20:20:16 2019 from 192.168.244.131 [root@test ~]# hostname test.example.com
配置ansible
[deploy@jenkins ~]$ pwd /home/deploy [deploy@jenkins ~]$ cat testservers [testserver] test.example.com ansible_user=root
登录到jenkins web管理页,点击“New 任务”
添加描述信息
#!/bin/sh set +x source /home/deploy/.py3-a2.5-env/bin/activate source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q cd /home/deploy ansible --version ansible-playbook --version cat testservers ansible -i testservers testserver -m command -a "ip addr" set -x
查看输出信息
Started by user admin Building in workspace /var/lib/jenkins/workspace/ansible-freestyle-job [ansible-freestyle-job] $ /bin/sh /tmp/jenkins7988516678097340995.sh ansible 2.5.14 (stable-2.5 c748512c4c) last updated 2019/01/09 20:03:39 (GMT +800) config file = None configured module search path = ['/home/deploy/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/deploy/.py3-a2.5-env/ansible/lib/ansible executable location = /home/deploy/.py3-a2.5-env/ansible/bin/ansible python version = 3.6.8 (default, Jan 9 2019, 19:44:42) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] ansible-playbook 2.5.14 (stable-2.5 c748512c4c) last updated 2019/01/09 20:03:39 (GMT +800) config file = None configured module search path = ['/home/deploy/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/deploy/.py3-a2.5-env/ansible/lib/ansible executable location = /home/deploy/.py3-a2.5-env/ansible/bin/ansible-playbook python version = 3.6.8 (default, Jan 9 2019, 19:44:42) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] [testserver] test.example.com ansible_user=root test.example.com | SUCCESS | rc=0 >> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:61:aa:73 brd ff:ff:ff:ff:ff:ff inet 192.168.244.133/24 brd 192.168.244.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet6 fe80::7395:7e45:e2e6:ec36/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:61:aa:7d brd ff:ff:ff:ff:ff:ff inet 192.168.182.134/24 brd 192.168.182.255 scope global noprefixroute dynamic ens34 valid_lft 1477sec preferred_lft 1477sec inet6 fe80::196:adf0:e929:d612/64 scope link noprefixroute valid_lft forever preferred_lft forever Finished: SUCCESS
下面错误信息就是上述构建jenkins maven集成时报错信息(可以随便看看):
构建失败,查看错误输出信息
Started by user admin Building in workspace /var/lib/jenkins/workspace/maven-freestyle-job Cloning the remote Git repository Cloning repository https://gitlab.example.com/root/java-war-dev.git > git init /var/lib/jenkins/workspace/maven-freestyle-job # timeout=10 Fetching upstream changes from https://gitlab.example.com/root/java-war-dev.git > git --version # timeout=10 using GIT_ASKPASS to set credentials > git fetch --tags --progress https://gitlab.example.com/root/java-war-dev.git +refs/heads/*:refs/remotes/origin/* > git config remote.origin.url https://gitlab.example.com/root/java-war-dev.git # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url https://gitlab.example.com/root/java-war-dev.git # timeout=10 Fetching upstream changes from https://gitlab.example.com/root/java-war-dev.git using GIT_ASKPASS to set credentials > git fetch --tags --progress https://gitlab.example.com/root/java-war-dev.git +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision aa3c70c49a68bfc91b4fe65c38be0b4b15461a63 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f aa3c70c49a68bfc91b4fe65c38be0b4b15461a63 Commit message: "first commit" First time build. Skipping changelog. [maven-freestyle-job] $ /opt/apache-maven-3.6.0/bin/mvn package The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE Build step 'Invoke top-level Maven targets' marked build as failure Finished: FAILURE
由报错信息可以看出,jdk环境设置有问题
以下报错信息目前没有解决掉,如果有热心同学知道解决办法的欢迎评论区指教^_^ ~,针对以上问题,我是删掉重新构建了一遍,包括全局凭据也是删掉重新创建了一个一样的,然后再次执行的时候就没有报错。
但是经反复确认,jdk路径没有错,接着有重新构建,提示以下内容
Started by user admin Building in workspace /var/lib/jenkins/workspace/maven-freestyle-job > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://gitlab.example.com/root/java-war-dev.git # timeout=10 Fetching upstream changes from https://gitlab.example.com/root/java-war-dev.git > git --version # timeout=10 using GIT_ASKPASS to set credentials > git fetch --tags --progress https://gitlab.example.com/root/java-war-dev.git +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision aa3c70c49a68bfc91b4fe65c38be0b4b15461a63 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f aa3c70c49a68bfc91b4fe65c38be0b4b15461a63 Commit message: "first commit" > git rev-list --no-walk aa3c70c49a68bfc91b4fe65c38be0b4b15461a63 # timeout=10 [maven-freestyle-job] $ /opt/apache-maven-3.6.0/bin/mvn package [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.112 s [INFO] Finished at: 2019-01-09T17:46:04+08:00 [INFO] ------------------------------------------------------------------------ [ERROR] The goal you specified requires a project to execute but there is no POM in this directory (/var/lib/jenkins/workspace/maven-freestyle-job). Please verify you invoked Maven from the correct directory. -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MissingProjectException Build step 'Invoke top-level Maven targets' marked build as failure Finished: FAILURE
然后进行如下操作
[root@jenkins ~]# cd /var/lib/jenkins/workspace/maven-freestyle-job [root@jenkins maven-freestyle-job]# ls Java-war-dev [root@jenkins maven-freestyle-job]# ls Java-war-dev/ pom.xml src [root@jenkins maven-freestyle-job]# mv Java-war-dev/pom.xml . [root@jenkins maven-freestyle-job]# ls Java-war-dev pom.xml
再次执行构建操作,还是报错
........ [INFO] Building war: /var/lib/jenkins/workspace/maven-freestyle-job/target/Java-war-dev.war [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:36 min [INFO] Finished at: 2019-01-09T18:04:52+08:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project Java-war-dev: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException Build step 'Invoke top-level Maven targets' marked build as failure Finished: FAILURE
改了pom.xml文件之后
<artifactId>maven-release-plugin</artifactId> <version>3.6</version> <configuration> <webXml>WebRoot\WEB-INF\web.xml</webXml> <warSourceDirectory>WebRoot</warSourceDirectory> <!--autoVersionSubmodules>true</autoVersionSubmodules--> </configuration>
仍然报错
[INFO] Building war: /var/lib/jenkins/workspace/maven-freestyle-job/target/Java-war-dev.war [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.995 s [INFO] Finished at: 2019-01-09T18:23:24+08:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project Java-war-dev: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException Build step 'Invoke top-level Maven targets' marked build as failure Finished: FAILURE
再次更改pom.xml
<version>3.6</version> <configuration> <webResources> <resource> <directory>web</directory> </resource> </webResources> <!--webXml>WebRoot\WEB-INF\web.xml</webXml> <warSourceDirectory>WebRoot</warSourceDirectory--> <!--autoVersionSubmodules>true</autoVersionSubmodules--> </configuration>
仍然报错
[INFO] Building war: /var/lib/jenkins/workspace/maven-freestyle-job/target/Java-war-dev.war [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.982 s [INFO] Finished at: 2019-01-09T18:26:38+08:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project Java-war-dev: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException Build step 'Invoke top-level Maven targets' marked build as failure Finished: FAILURE
然而网友说的这些并不能解决问题。