zoukankan      html  css  js  c++  java
  • 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>WebRootWEB-INFweb.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>WebRootWEB-INFweb.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

    然而网友说的这些并不能解决问题。

  • 相关阅读:
    数字和字母交替打印
    日期和字符串的转化
    redis简介
    管理MySQL的命令
    创建mysql数据表成功
    微信账号 echo_server 的实现
    html5 画个圈
    php练习1
    人生十大点
    养生“六伤”、“十二莫”、“十二少”
  • 原文地址:https://www.cnblogs.com/zd520pyx1314/p/10244504.html
Copyright © 2011-2022 走看看