我正在尝试使用Subversion的LDAP访问设置Apache httpd,需要一些帮助:
我想要做的是使用一个组进行访问.如果您是该组的成员,则您具有读/写访问权限.如果不是,则无法访问.
我们的LDAP服务器中的组记录(ldap://ldap.MyCompany.com/DC=MyCompany,DC=COM)
CN=SVN-GROUP,CN=Users,DC=MyCompany,DC=com
Run Code Online (Sandbox Code Playgroud)
并且该组的成员在此记录中如下:
member: CN=David Weintraub,OU=Users,OU=Brooklyn,OU=Accounts,DC=MyCompany,DC=COM
member: CN=Joe Public,OU=Users,OU=Cincinnati,OU=Accounts,DC=MyCompany,DC=COM
Run Code Online (Sandbox Code Playgroud)
如果您在LDAP中查找我的记录,您会看到:
memberOf: CN=SVN-GROUP,CN=Users,DC=MyCompany,DC=com
Name: David Weintraub
Distinguished Name: CN=David Weintraub,OU=Users,OU=Brooklyn,OU=Accounts,DC=MyCompany,DC=COM
sAMAccountName: dweintraub
Run Code Online (Sandbox Code Playgroud)
我想做的是dweintraub使用我的Windows密码登录(这是我的Windows帐户).我也不想将Windows域指定为登录的一部分.每个人都将成为该mycompany域名的一部分.
我正在尝试浏览Apache httpd网站,但将所有内容放在一起有点困难.
这提醒我,任何人都可以推荐一本好的Apache书吗?
我正在编写一个程序来逐步浏览一个目录树(是的,我知道File :: Find,但我正在编写一个替代品).
在我的程序中,我正在readdir整个目录中执行并将其放在列表中.我需要做两件事:
.并..从列表我可以通过循环执行此操作,或者我可以使用map和grep:
# Map and Grep
my @dir_stack = readdir $dir_fh;;
@dir_stack = grep { !/^\.{1,2}$/ } @dir_stack;
@dir_stack = reverse map { "$cwd/$_" } @dir_stack;
push @stack, @dir_stack;
# Read Loop
opendir $dir_fh, $cwd;
my @dir_stack;
foreach my $file (readdir $dir_fh) {
next if $file =~ /^\.{1,2}$/; #Skip "." and ".."
unshift @dir_stack, "$cwd/$file";
}
push @stack, @dir_stack;
Run Code Online (Sandbox Code Playgroud)
怎么样结合grep和map?
opendir …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置PowerShell命令,因此Get-Help -full将会显示有关如何运行脚本的完整信息。我有要在此帮助中显示的默认值。我有以下几点:
<#
.PARAMETER SenderEmail
The name of the user who is sending the email message. Although not
officially required, it will be checked to make sure it's not blank.
#>
Param (
[String]
[Parameter(
Position=1,
HelpMessage="Sender's Email Address")]
$SenderEmail = "bob@fubar.com"
)
Run Code Online (Sandbox Code Playgroud)
但是,当我键入Get-Help -detail时,将显示以下内容。
-SenderEmail <String>
The name of the user who is sending the email message. Although not
officially required, it will be checked to make sure it's not blank.
Required? false
Position? 2
Default value …Run Code Online (Sandbox Code Playgroud) 我正在使用Jacoco Junit任务并尝试以下方法:
<!-- run the junit tests -->
<echo>DEBUG: $${junit.fork} = "${junit.fork}"</echo>
<jacoco:coverage
destfile="${target.dir}/jacoco.exec"
append="false">
<junit fork="${junit.fork}" includeAntRuntime="true">
<classpath>
<pathelement path="${main.destdir}"/>
<pathelement path="${test.destdir}"/>
</classpath>
<classpath refid="test.classpath"/>
<formatter type="${junit.formatter.type}"/>
<batchtest todir="${junit.batchtest.todir}">
<fileset dir="${test.destdir}" />
</batchtest>
</junit>
</jacoco:coverage>
Run Code Online (Sandbox Code Playgroud)
得到以下内容:
test:
[echo] DEBUG: ${junit.fork} = "true"
[jacoco:coverage] Enhancing junit with coverage
BUILD FAILED
D:\build.xml:233: Coverage can only be applied on a forked VM
Total time: 6 seconds
D:\>
Run Code Online (Sandbox Code Playgroud)
如您所见,${junit.fork}属性设置为true,我使用了该属性<junit fork="${junit.fork}"/>.
但是,我只是设置,而不是使用该属性<junit fork="true">,它工作正常:
<jacoco:coverage
destfile="${target.dir}/jacoco.exec"
append="false"> …Run Code Online (Sandbox Code Playgroud) 我有一个常春藤大师项目,其他人通过一个svn:externals属性包含在他们的项目中.该项目包含Ivy jar,连接到我们项目的默认ivysettings.xml文件,以及一些Ant宏,它允许我标准化我们构建jar的方式等.(例如,用户使用<jar.macro>vs <jar>..<jar.macro>使用相同的参数,还会自动嵌入pom.xmljar中并将Jenkins构建信息添加到Manifest中).
我们还使用Jenkins作为我们的持续集成系统.我想做的其中一件事是清理每个构建的常春藤缓存,因此我们没有因缓存问题而导致任何jar问题.为此,我设置了我的ivysettings.xml文件,为每个Jenkins Executor定义一个单独的缓存:
<ivysettings>
<property name="env.EXECUTOR_NUMBER" value="0" override="false"/>
<caches
defaultCacheDir="${ivy.default.ivy.user.dir}/cache-${env.EXECUTOR_NUMBER}"
resolutionCacheDir="${ivy.dir}/../target/ivy.cache"/>
<settings defaultResolver="default"/>
<include file="${ivy.dir}/ivysettings-public.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>
Run Code Online (Sandbox Code Playgroud)
我最初用这个<ivy:settings>任务用Ivy配置我们的项目.但是,所有Jenkins执行程序都使用相同的常春藤缓存,这会导致问题.我切换<ivy:settings>到<ivy:configure>了,问题就消失了.显然,<ivy:configure>立即设置Ivy(从而正确设置缓存),<ivy:settings>而不会将Ivy设置为直到<ivy:resolve>被调用.
我在Nabble上看过一些关于<ivy:configure>被弃用(或许不是)的电子邮件.我在常春藤在线文档中看不到任何内容,说明<ivy:configure>正在弃用.
那么,什么时候会使用<ivy:settings>对<ivy:configure>.在我的情况下,因为我需要为每个Jenkins执行器提供单独的缓存,所以我需要使用<ivy:configure>,但是我有可能使用<ivy:settings>它<ivy:configure>吗?并且,已被<ivy:configure>弃用?
我们使用frontend-maven-plugin在我们的版本中使用grunt和bower。使用Frontend Maven插件,我可以在本地安装NPM,使用Bower下载Java库,然后运行Grunt来优化和混淆我的代码。
这样简化一下:
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>0.0.24</version>
<executions>
<execution>
<id>install node and npm</id>
<goals> <goal>install-node-and-npm</goal> </goals>
...
</execution>
<execution>
<id>npm-install</id>
<goals> <goal>npm</goal> </goals>
...
</execution>
<execution>
<id>bower-install</id>
<goals> <goal>bower</goal> </goals>
...
</execution>
<execution>
<id>grunt-build</id>
<goals> <goal>grunt</goal> </goals>
...
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
请注意,最后一次执行是grunt-build,这是将JavaScript文件连接在一起,进行优化(返回,注释和其他内容已删除)并进行模糊处理的地方。
这对于发行版非常有效。但是,开发人员希望在不对JavaScript文件进行串联,优化和混淆的情况下进行部署。这将帮助他们进行调试。为此,我们只需要grunt-build从此插件的配置中删除执行部分即可。
我想使用个人资料来执行此操作。我可以有一个名为的配置文件development,该文件允许开发人员在没有最后一节的情况下进行构建。我可以简单地复制并粘贴pom.xml文件的这一部分,删除最后执行的代码,然后将其放入单独的配置文件中。全部做完。
但是,有一个古老的编程谚语是:不要重复自己。我将在自己的服务器中复制大约50行代码pom.xml。
我想做的是有一种方法来执行前三个执行,并且只有在这不是开发版本时才执行第四个。在这方面,我还会有其他一些缺点。例如,我将不得不复制JavaScript本身,而不是复制结果。但是,这很容易做到,并且不会重复代码。
这将导致重复的代码,因为我必须frontend-maven-plugin使用两种配置来定义。一次用于development配置文件,一次用于标准发行版。据我所知,我不能说运行的配置frontend-maven-plugin,如果这不是开发构建,请运行的实例,frontend-maven-plugin这只会做些麻烦的事情。
有没有一种方法可以在中两次定义相同的插件pom.xm,并使Maven以正确的顺序运行两个实例?
我非常小心地使用CORE Perl模块 - http://perldoc.perl.org中记录的模块- 只要我能.例如,我使用Time::Piece而不是DateTime或IO::Uncompress不使用Archive::Zip.
我们有数千个Chef托管服务器,我们可以保证安装了特定版本的Perl,但是保证安装了特定的CPAN模块也成了一场噩梦.
想象一下,当一个新服务器上的脚本因Data::Dumper未安装而失败时,我会感到惊讶.自最早的Perl 5版本以来,该模块一直是CORE模块的一部分.
我发现Oracle Linux Release 7(以RHEL 7为模型)划分了标准的Perl软件包,因此基础Perl不再安装所有CORE模块.
我需要在Oracle Linux Release 7(以及可能是RHEL 7)上安装哪些RPM软件包以保证所有CORE Perl模块都已安装?
我们刚刚开始使用Jenkins多分支管道.我喜欢Jenkins在创建新分支时自动创建新Jenkins作业的想法.它将确保Jenkins正在构建所有可释放的开发.我们有大约40或50个项目几乎每个版本都会分支,每次分支时创建大约40个左右的工作都是容易出错的工作.
但是,我发现Jenkins中有两种类型的管道构建:
常规管道构建:您在Jenkins作业中指定位置和分支.但是,您可以指定是要在Jenkins作业配置中使用脚本,还是在源存储库中使用脚本.这将使我们能够Jenkinsfile为所有工作保持单一.如果我们在构建过程中更改了某些内容,我们只需编辑一个Jenkins文件.
多分支管道构建:在创建新分支时,Jenkins将自动为您创建新的Jenkins作业.这意味着我们不再需要在新分支发生时创建数十个新的Jenkins项目.但是,它看起来Jenkinsfile必须位于项目的根目录中.如果在构建过程中进行了基本更改,则必须更新所有Jenkins项目.
我希望能够使用多分支管道构建,但我想指定Jenkinsfile从存储库中提取的位置,或者Jenkinsfile从存储库URL中包含主服务器.
有没有办法用Jenkins多分支管道做到这一点?
我们在这个庄园中设置了Subversion存储库:
http://svn.vegicorp.net/svn/toast/api/trunkhttp://svn.vegicorp.net/svn/toast/api/1.0http://svn.vegicorp.net/svn/toast/data/trunkhttp://svn.vegicorp.net/svn/toast/data/branches/1.2http://svn.vegicorp.net/svn/toast/data/branches/1.3我为整个toast项目设置了Jenkins Multi-Pipeline构建,包括所有子项目 - 每个子项目都是一个jar文件.我想要的是Jenkins每次在一个toast项目中更改任何文件时都会触发一个新的构建.那个项目应该重建.这样,如果我们在Toast中创建一个新的子项目或在其中一个toast子项目中创建一个新的分支,Jenkins将自动为它创建一个新的构建.
这是我的Jenkins Multi-Branch设置:
分支来源
颠覆
- 项目存储库基础:
http://svn.vegicorp.net/svn/toast- 证书:
builder/*****- 包括分支:
*/trunk, */branches/*- 排除分支:
*/private- 物业策略:所有分行都拥有相同的物业
构建配置
- 模式:Jenkinsfile
构建触发器(未选中)
- 触发器远程构建(例如,从脚本)构建功能帮助:触发器*远程构建(例如,从脚本)
- 定期构建功能帮助:定期构建
- 在推广另一个项目时构建
- Maven依赖关系更新触发器功能帮助:Maven依赖关系更新触发器
- 如果没有另外运行,则定期
请注意," 构建触发器"列表列表不包括" 轮询SCM".存储库中的更改不会触发任何构建.Jenkinsfiles位于每个子项目的根目录.如果我强制重新索引,则会构建所有已更改的子项目并找到所有新分支.我最初定期检查并每分钟重新编制索引以获取更改,但这是klutzy,它似乎导致Jenkins消耗内存.
触发SCM更改的构建应该是非常基本的,但我没有看到这样的配置参数,就像我使用标准作业一样.我似乎也无法进入子项目并将其设置为触发构建.
必须有一些真正,非常简单的东西,我想念.
组态:
我有这个:
use constant JAR_FILE => qr/\.jar$/;
my @dir_list = ...;
my @jar_list;
find ( sub {
return unless -f;
return unless JAR_FILE; #THIS IS THE TROUBLED LINE
push @jar_list, $File::Find::name;
}, @dir_list;
say join ": ", @jar_list;
Run Code Online (Sandbox Code Playgroud)
这将打印出@dir_list- jar文件和非jar文件中的所有文件;
但是,这个:
use constant JAR_FILE => qr/\.jar$/;
my @dir_list = ...;
my @jar_list;
find ( sub {
return unless -f;
return unless $_ =~ JAR_FILE; #Now explicitly do the comparison
push @jar_list, $File::Find::name;
}, @dir_list;
say join ": ", @jar_list; …Run Code Online (Sandbox Code Playgroud)