小编Dav*_* W.的帖子

设置Apache和Subversion以使用LDAP(Windows Active Directory)组身份验证

我正在尝试使用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书吗?

svn apache ldap apache2 active-directory

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

Perl:使用Loop还是Map/Grep?

我正在编写一个程序来逐步浏览一个目录树(是的,我知道File :: Find,但我正在编写一个替代品).

在我的程序中,我正在readdir整个目录中执行并将其放在列表中.我需要做两件事:

  1. 删除...从列表
  2. 在每个文件前面添加当前目录名称.

我可以通过循环执行此操作,或者我可以使用mapgrep:

# 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)

怎么样结合grepmap

 opendir …
Run Code Online (Sandbox Code Playgroud)

perl grep map readdir

5
推荐指数
1
解决办法
1058
查看次数

Powershell脚本默认值未显示在Get-Help -full中

我正在尝试设置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)

parameters powershell

5
推荐指数
1
解决办法
3790
查看次数

Ant和Jacoco:需要将junit的fork设置为"true",而不是将属性设置为true

我正在使用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)

ant junit jacoco

5
推荐指数
1
解决办法
2999
查看次数

常春藤:<常春藤:设置>与<常春藤:配置>

我有一个常春藤大师项目,其他人通过一个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>弃用?

ivy

5
推荐指数
1
解决办法
766
查看次数

Maven和配置文件:在两个不同的配置文件中使用相同的插件,并且两者同时处于活动状态

我们使用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以正确的顺序运行两个实例?

maven maven-profiles

5
推荐指数
1
解决办法
2578
查看次数

确保所有CORE Perl模块都安装在Oracle Linux上

我非常小心地使用CORE Perl模块 - http://perldoc.perl.org中记录的模块- 只要我能.例如,我使用Time::Piece而不是DateTimeIO::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模块都已安装?

linux perl packages

5
推荐指数
1
解决办法
2227
查看次数

Jenkins多分支管道 - 在本地Jenkinsfile中包含另一个脚本

我们刚刚开始使用Jenkins多分支管道.我喜欢Jenkins在创建新分支时自动创建新Jenkins作业的想法.它将确保Jenkins正在构建所有可释放的开发.我们有大约40或50个项目几乎每个版本都会分支,每次分支时创建大约40个左右的工作都是容易出错的工作.

但是,我发现Jenkins中有两种类型的管道构建:

  • 常规管道构建:您在Jenkins作业中指定位置和分支.但是,您可以指定是要在Jenkins作业配置中使用脚本,还是在源存储库中使用脚本.这将使我们能够Jenkinsfile为所有工作保持单一.如果我们在构建过程中更改了某些内容,我们只需编辑一个Jenkins文件.

  • 多分支管道构建:在创建新分支时,Jenkins将自动为您创建新的Jenkins作业.这意味着我们不再需要在新分支发生时创建数十个新的Jenkins项目.但是,它看起来Jenkinsfile必须位于项目的根目录中.如果在构建过程中进行了基本更改,则必须更新所有Jenkins项目.

我希望能够使用多分支管道构建,但我想指定Jenkinsfile从存储库中提取的位置,或者Jenkinsfile从存储库URL中包含主服务器.

有没有办法用Jenkins多分支管道做到这一点?

jenkins-pipeline jenkinsfile

5
推荐指数
1
解决办法
8491
查看次数

Jenkins多管道构建未检测到存储库中的更改

我们在这个庄园中设置了Subversion存储库:

  • http://svn.vegicorp.net/svn/toast/api/trunk
  • http://svn.vegicorp.net/svn/toast/api/1.0
  • http://svn.vegicorp.net/svn/toast/data/trunk
  • http://svn.vegicorp.net/svn/toast/data/branches/1.2
  • http://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更改的构建应该是非常基本的,但我没有看到这样的配置参数,就像我使用标准作业一样.我似乎也无法进入子项目并将其设置为触发构建.

必须有一些真正,非常简单的东西,我想念.

组态:

  • 詹金斯2.19
  • 管道2.3
  • 管道API:2.3
  • Pipeline Groovy:2.17
  • 管道工作:2.6
  • Pipeline REST API插件:2.0
  • 管道共享Groovy库:2.3
  • 管道:Stage View插件:1.7
  • 管道:支持API 2.2
  • SCM API插件:1.2

jenkins-pipeline jenkins-2

5
推荐指数
1
解决办法
5200
查看次数

Perl Constant似乎不起作用

我有这个:

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)

perl constants

4
推荐指数
1
解决办法
185
查看次数