小编Aru*_*gal的帖子

Gradle - Groovy和Java类依赖 - 编译

我的项目有Java(N文件)和Groovy代码(仅1个文件).Java编译依赖于这个单个Groovy文件的Java编译类文件(compileJava任务成功).

当我不使用src/java作为main> groovy> sourceSet部分中的srcDir之一时,我得到一个错误,说明找不到类/符号,这是在groovy文件/类中.在ANT中,我们很容易在调用compile-java目标之前首先调用compile-groovy目标,但Gradle中的相同内容是我正在尝试查找的内容.

我读了一些帖子,发现如果我将main> java section设为NULL并为main> java指定srcDir,这是src/java里面的main> groovy sourceSet部分,那么它编译得很好.

我的:1.还有其他办法吗?对于前者,以下应该工作:

   compileJava {
     dependsOn compileGroovy
   }
Run Code Online (Sandbox Code Playgroud)

但是,这是一个infinte循环.

要么

如何使用doFirst进行compileJava任务:

compileJava {
      doFirst {
            compileGroovy
      }
}
Run Code Online (Sandbox Code Playgroud)

这也行不通.






build.gradle这是有效的,但是在某种意义上compileRava在这里变得无用,即使源代码有N否.src/java或src/java-test等树中的java文件.我知道这个构建脚本正在运行,但从逻辑上讲,如果他/她不熟悉为什么源代码为Groovy必须将"src/java"作为其srcDir值,它可能会给开发人员带来一些困惑.

apply plugin: 'java'
apply plugin: 'groovy'

sourceSets {
   main {
      groovy {
         srcDir 'src/groovy'
         srcDir 'src/java'
      }
      java {
       //The following needs to be commented out OR Gradle will always pick compileJava before compileGroovy
       //srcDir 'src/java'
       //srcDir 'src/java-test'
      }
   }
   test {
      groovy {
         srcDir 'test/groovy'
      }
      java {
         srcDir 'test/java' …
Run Code Online (Sandbox Code Playgroud)

java groovy compilation class gradle

13
推荐指数
1
解决办法
7334
查看次数

ansible - 变量中的变量

Ansible 1.9.2版本.

Ansible在评估变量时是否支持变量内的变量扩展.

我有一个任务是从Artifactory下载3个zip文件.

我没有在角色中编写3个单独的任务,而是在剧本中使用了ansible的循环.在Ansible角色的默认值/ main.yml中,我具有角色定义/可用的所有必需变量,即jtpplugins_extras_artifactory_url和其他(标准/ webdriver)对perf_tests角色可见.

---
#- Download and install JMeterPlugins
# Use get_url when Ansible is 2.0+ is available on the machine (otherwise, we can't use get_url) thus, using wget.
- name: Download JMeterPlugins-*
  command: wget {{ jmeterplugins_{{ item.plugin }}_artifactory_url }}  
    chdir="{{ common_download_dir }}"
    creates="{{ common_download_dir }}/{{ jmeterplugins_{{ item.plugin }}_file }}"
  with_items:
    - { plugin: 'extras' }
    - { plugin: 'standard' }  
    - { plugin: 'webdriver' }   
Run Code Online (Sandbox Code Playgroud)

但是使用上面的代码,我收到一个错误(如下所示):

15:58:57 TASK: [perf_tests | Download JMeterPlugins-*] ********************************* …
Run Code Online (Sandbox Code Playgroud)

variables jinja2 ansible ansible-playbook

13
推荐指数
2
解决办法
2万
查看次数

Gradle - 复制/重命名文件 - 为所有文件制作0文件大小/字节

我正在使用Gradle构建来编译Java.

在构建过程中,我获得了成功的构建可交付成果但是我想添加一些额外的文件,这些文件只是Gradle build在构建的".war"文件中存在的一些文件的复制或重命名.

以下代码是我正在使用的.我要做的是:

1.在build/tmp/warApplication文件夹中取消.war文件
2.将文件复制/重命名为oldname-1.2.3到newname-1.2.3
3.复制/重命名oldname. war.properties文件到newname.war.properties
4.将oldname.jar.properties文件复制/重命名为newname.jar.properties
5.对build/tmp/warApplication文件夹中的所有数据进行war并创建原始.war文件(即projectname.战争)

问题:
1.在unwar步骤完成后,我在tmp/warApplication文件夹下看到,树中的所有文件都有有效的文件大小.2. warApplication.doLast - 工作即它不会给出任何错误消息.
3.完成所有复制/重命名步骤后,我看到tmp/warApplication文件夹树或子树级别下的文件大小现在是0字节大小.

我错过了什么?如何将大小为X字节的文件A复制到相同X字节的文件B.

// add a few extra files
warApplication.doLast {
   def tempWarDirU = new File("${buildDir}/tmp/warApplication")
   tempWarDirU.mkdirs()
   ant.unwar(src: "${buildDir}/thidsWar/${thidsProjectName}.war",
            dest: "${buildDir}/tmp/warApplication")

   println ""
   println "--- Inside warApplication - last stage ---"
   println ""
   copy {
      from "${buildDir}/tmp/warApplication"
      into "${buildDir}/tmp/warApplication"
      rename (/([a-z]+)-([0-9]+\.[0-9]+.+)/, 'newname-$2')
   }
   copy {
      from "${buildDir}/tmp/warApplication/WEB-INF/classes"
      into "${buildDir}/tmp/warApplication/WEB-INF/classes"
      rename (/([a-z]+)\.war\.([a-z]+)/, 'newname.war.$2')
   }
   copy {
      from "${buildDir}/tmp/warApplication/WEB-INF/classes"
      into "${buildDir}/tmp/warApplication/WEB-INF/classes"
      rename (/([a-z]+)\.jar\.([a-z]+)/, 'newname.jar.$2')
   }

   ant.jar ( update: …
Run Code Online (Sandbox Code Playgroud)

byte copy rename zero gradle

11
推荐指数
2
解决办法
2万
查看次数

Jenkins Gradle插件 - 将参数传递为-P而不是-D

我有詹金斯的工作(詹金斯版本更近).

在我的Jenkins工作中,我有几个参数(字符串类型).

例如:参数1 =值1 ...参数N =值N.

现在,在Jenkins的工作中,在BUILD部分下,我正在调用" Invoke Gradle".

在这个Gradle部分,我正在调用一个任务.例如:干净的构建

我需要的是:我想将上述Jenkins作业的参数传递给Gradle as -PparamN = ValueN方式?

但是当我在Gradle Build部分的" 开关 "选项中传递-Pparam1 = $ {param1} -Pparam2 = $ {param2} ...等等时,我看到Jenkins日志显示:

它用参数成功地称为Gradle exectuable.

...somepath.../bin/gradle -Dparam1=value1 -Dparam2=value2 ... -DparamN=valueN -Pparam1=value1 -Pparam2=value2 ... -PparamN=valueN
Run Code Online (Sandbox Code Playgroud)

这个告诉,Jenkins非常友好地将参数(我在作业中定义的)传递给Gradle作为免费的"-D"方式.

我的:

  1. 好吧,我不想将上述参数传递为-Dxxx = yyy
  2. 我想传递参数-Pxxx = yyy方式
  3. 这可以使用"Invoke Gradle"插件吗?

parameters plugins parameter-passing gradle jenkins

10
推荐指数
2
解决办法
2万
查看次数

Cygwin - 如何安装ansible?

如何使用Cygwin获取/安装ansible?

我尝试了以下步骤,但在子弹5(运行" python setup.py install ")期间它没有工作.采取的步骤:取自https://servercheck.in/blog/running-ansible-within-windows

1)下载并安装Cygwin,至少选择以下软件包(您可以在安装过程中选择软件包):

libyaml
libyaml-devel
curl
python (2.7.x)
python-crypto
python-openssl
python-paramiko
python-setuptools
git (2.1.x)
vim
openssh
openssl
openssl-devel
Run Code Online (Sandbox Code Playgroud)

2)下载并安装PyYAML和Jinja2,因为它们不能通过Cygwin的安装程序获得:

1. Open Cygwin
2. Download PyYAML:
    curl -O https://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.10.tar.gz
3. Download Jinja2:
    curl -O https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.6.tar.gz
4. Untar both downloads:
    tar -xvf PyYAML-3.10.tar.gz && tar -xvf Jinja2-2.6.tar.gz
5. Change directory into each of the expanded folders and run python "python setup.py install" to install each package.
6. Clone ansible from its repository on GitHub:
    git clone https://github.com/ansible/ansible …
Run Code Online (Sandbox Code Playgroud)

cygwin install setup.py pyyaml ansible

10
推荐指数
3
解决办法
1万
查看次数

pip install pygame - 找不到 SDL.h 文件

MacOS 塞拉利昂

?  fun_python $ pip --version
pip 9.0.1 from /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages (python 3.5)
Run Code Online (Sandbox Code Playgroud)

pip install pygame给我以下错误:src/scrap.c:27:10: fatal error: 'SDL.h' file not found, error: command '/usr/bin/clang' failed with exit status 1, #include "SDL.h"。我在/usr/include/...文件夹树下没有看到这个 SDL/SDL.h 文件。

给了我以下错误。

?  fun_python $ pip install pygame
Collecting pygame
  Downloading pygame-1.9.3.tar.gz (3.0MB)
    100% |????????????????????????????????| 3.0MB 490kB/s
Installing collected packages: pygame
  Running setup.py install for pygame ... error
    Complete output from command /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 -u -c "import setuptools, tokenize;__file__='/private/var/folders/lx/smky81v534q9ydghqkjbkqv80000gp/T/pip-build-to90wzsv/pygame/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', …
Run Code Online (Sandbox Code Playgroud)

python pygame sdl pip file-not-found

9
推荐指数
1
解决办法
6712
查看次数

Jenkinsfile 管道 DSL:如何在作业仪表板 GUI 中显示多列 - 适用于所有动态创建的阶段 - 在 PIPELINE 部分中时

詹金斯2.89.4 滚动

我看到了几乎所有的 stackoverflow 帖子,这些帖子展示了我们如何成功运行并行步骤/阶段(使用列表/映射等)——或者直接对它们进行硬编码——或者甚至为 Jenkinsfile 创建动态阶段(如这篇文章所示:脚本化 jenkinsfile 并行阶段)

我的要求是:

  1. 在“构建”步骤下构建 N 个项目的管道,即在这些项目中的每一个上并行构建。即它在所有 N 个项目上运行 Gradle。在这里,我有一个由声明性 JOB DSL Groovy 创建的 Jenkinsfile。这里我的 Gradle 项目没有设置为多项目,所以我不能调用顶级 gradle 并说,Gradle 请发挥你的平行魔法(在 Gradle 内)。

  2. 我想在它们自己单独的并行动态创建阶段(GUI 列)中运行这些 N 个项目的构建,如 jenkins 作业的仪表板中所见。

  3. 我想分别查看(Gradle 构建/控制台)每个项目构建的输出,即我不想混合每个项目构建的控制台输出,这些构建仅在一列(即名为 的列BUILD中并行运行

  4. 在这个 URL https://jenkins.io/blog/2017/09/25/declarative-1/我明白了,你可以如何运行并行阶段/步骤,但这样做,要么将这些并行步骤的输出混合在一列中(我的意思是在BUILD列)--OR如果你想让它在不同的阶段/列(即发帖称测试在Linux或Windows 分开,那么你仍然硬编码的所有阶段/步骤早期(在Jenkinsfile而不是使用只是一个列表或数组哈希,我更愿意更新它以添加更多或更少的阶段/并行步骤,就像我的情况一样,它们都遵循相同的标准。我想要的是只在一个地方更新多少步骤和什么所有阶段都在一个地方(列表/数组)。

  5. 我现在使用Jenkins Blue Ocean

通常,如果您在一个阶段中有并行步骤,则当您单击以查看给定并行步骤/阶段的控制台输出时,所有步骤的控制台标准输出会混合到一个控制台输出/阶段/列中;当您将鼠标悬停在作业仪表板中的 BUILD 列(假设在 BUILD 阶段中有并行步骤)时(所有这些步骤的标准输出混合在一起,很难看到单个项目步骤的控制台输出仅针对给定的步骤/阶段)。

如果我们想(动态地)创建单独的阶段,那么 Jenkins …

parallel-processing groovy dashboard jenkins-pipeline

9
推荐指数
1
解决办法
3761
查看次数

ansible - unarchive - 未找到输入文件

当Ansible(1.9.2)试图解压缩文件时,我收到此错误.

19:06:38 TASK: [jmeter | unpack jmeter] ************************************************ 
19:06:38 fatal: [jmeter01.veryfast.server.jenkins] => input file not found at /tmp/apache-jmeter-2.13.tgz or /tmp/apache-jmeter-2.13.tgz
19:06:38 
19:06:38 FATAL: all hosts have already failed -- aborting
19:06:38 
Run Code Online (Sandbox Code Playgroud)

我检查了目标服务器,/ tmp /apache-jmeter-2.13.tgz文件存在并且它具有有效权限(对于测试我也给了777,即使没有reqd但仍然得到上面的错误消息).

我还检查了这个文件的md5sum(将其与apache jmeter网站上的内容进行比较) - 它匹配!

# md5sum apache-jmeter-2.13.tgz|grep 53dc44a6379b7b4a57976936f3a65e03
53dc44a6379b7b4a57976936f3a65e03  apache-jmeter-2.13.tgz
Run Code Online (Sandbox Code Playgroud)

当我在这个文件上使用tar -xvzf时,tar能够在.tgz文件中显示/提取它的内容.

我能错过什么?在这一点上,我想知道Ansible中的unarchive方法/模块必须有一些bug.

我的最后一招(如果我无法在Ansible中取消归档工作)将使用Command:"tar -xzvf/tmp/....."但我不想这样做是我的第一选择.

module tar unpack ansible ansible-playbook

8
推荐指数
1
解决办法
4763
查看次数

Jenkins Slave - 如何添加或更新环境变量

有没有人尝试过使用Jenkins Rest/API或任何其他方式在Jenkins slave配置中添加或更新ENVIRONMENT变量的方法.

使用Jenkins Swarm插件,我创建了一个slave(它使用JLNP连接到Jenkins master)但环境变量(复选框没有勾选)并且没有Swarm客户端jar创建的环境变量(默认情况下).用户可以手动添加if reqd,但我正在寻找是否有一种方法可以在slave中添加/更新ENV变量.

在此输入图像描述

我想创建多个swarm slave(其中每个slave都有不同的工具,具有不同的值,即slave01 JAVA_HOME =/path/jdk1.7.0.67和其他slave02 JAVA_HOME =/path/jdk1.8.0_45等等).

我试着查看http://javadoc.jenkins-ci.org/hudson/model/Node.htmlhttp://javadoc.jenkins-ci.org/hudson/model/Slave.htmlhttp:// javadoc. jenkins-ci.org/hudson/slaves/DumbSlave.html 它没有提供任何方法/方法来设置Node的属性/ ENV变量.没有setNodeProperties或类似的东西(如果这是设置ENV变量/属性的正确方法).

我正在寻找的是一种将以下变量添加到从属的方法.

在此输入图像描述

这篇文章(由Villiam撰写)反映出有人尝试了groovy piece来做同样的事情,但我看不出他如何使用相同的API设置ENV变量来创建/管理节点

Jenkins-CLI可以选择运行groovy脚本:

java -jar path/to/jenkins-cli.jar -s http://localhost:8080 groovy path/to/script

脚本:

import jenkins.model.*
import hudson.model.*
import hudson.slaves.*
Jenkins.instance.addNode(new DumbSlave("test-script","test slave description","C:\\Jenkins","1",Node.Mode.NORMAL,"test-slave-label",new JNLPLauncher(),new RetentionStrategy.Always(),new LinkedList())) 
Run Code Online (Sandbox Code Playgroud)

(参见其他选项的文档:http://javadoc.jenkins-ci.org/)

您还可以运行交互式groovy shell

java -jar jenkins-cli.jar -s http://localhost:8080 groovysh

environment-variables master-slave jenkins jenkins-plugins

8
推荐指数
1
解决办法
2万
查看次数

自动退出 Telnet 命令返回提示,无需人工干预 ^] quit close 退出代码 1

我正在telnet主机上为给定端口(打开)运行命令,它返回 0(成功)。

为了手动尝试 telnet,我输入以下命令,然后按 control+bracket ie ^],然后按Enterkey,然后我得到telnet>提示,如果我键入closeor quit,它会返回到$提示并看到最后一个命令的退出状态显示0为(成功)因为端口 2878 已打开(根据 telnet 命令的输出)。

[vagrant@myvagrant /tmp] $ telnet `hostname` 2878
Trying 127.0.0.1...
Connected to myvagrant.
Escape character is '^]'.
^]

telnet> close
Connection closed.
[vagrant@myvagrant /tmp] $ echo $?
0
Run Code Online (Sandbox Code Playgroud)

现在,我想在没有任何人为干预的情况下运行相同的操作,即我不想手动给^]Enter按键来telnet>提示,然后输入close(或quit)telnet 命令最终回到$提示。

为此,我尝试使用echo -e命令的选项并给出^], \n(对于换行符,即Enter键)和close命令(对于telnet>提示,以便我回到 …

linux telnet exit-code exit connection-close

8
推荐指数
2
解决办法
1万
查看次数