不维护目录结构的 Bamboo SCP 任务

Bamboo SCP Task without maintaining directory structure

我似乎无法弄清楚如何在不复制实际构建文件夹的情况下使用 SCP 将构建目录的内容移动到服务器。我目前的流程是这样的:

  1. Bamboo build 从 Stash 中检出源代码
  2. Ant 将创建一个构建目录并将所有必需的文件复制到其中
  3. 然后创建共享工件。 (构建目录本身)

所以我的工件结构看起来像这样

build/
- img/
- css/
- index.html

当我复制到服务器时,我总是在服务器上获得构建文件夹本身。所以我的根文件夹最终看起来像: /root/build/rest_of_files

我想要实现的是从构建目录复制所有文件并将它们放在根级别。所以我最终的根文件夹看起来像:

root/
- img/
- css/
- index.html

我尝试过不同的本地路径,使用和不使用 ant 模式。我已经为工件本身尝试了不同的模式,但我似乎无法弄清楚我需要做什么。

我希望这是清楚的。

好的,我想出了一个方法来完成我想要做的事情。基本上,我最终在我的 ant 构建文件中创建了更多目标,这些目标(重新)移动文件以实现我想要的结构。

<?xml version="1.0" encoding="utf-8"?>
<project name="my_project_name" basedir="." default="build">
    <!-- dev directory -->
    <property name="dev.dir" value="dev"></property>
    <!-- public directory -->
    <property name="public.dir" value="${dev.dir}/public/"></property>
    <!-- output directory -->
    <property name="build.dir" value="build"/>
    <!-- public_html directory -->
    <property name="web.dir" value="${build.dir}/public_html/"></property>

    <!-- create the build directory -->
    <target name="migrate" description="Make required directories">
        <echo message="Creating directories."/>
        <!-- make the build directory if it doesn't exist -->
        <mkdir dir="${build.dir}/"/>
        <!-- make the public_html directory -->
        <mkdir dir="${web.dir}/"/>
        <!-- call our target that copies the files to the build folder -->
        <antcall target="copyToBuild"/>
    </target>

    <!-- list of includes -->
    <target name="copyToBuild" description="Copy files to build folder">
        <echo message="Building."/>
        <!-- copy to the build directory -->
        <copy todir="${build.dir}">
            <fileset dir="${dev.dir}">
                <!-- includes -->
                <include name="**"></include>
                <!-- excludes -->
                <exclude name="build.xml"></exclude>
                <exclude name="public/**"></exclude>
            </fileset>
        </copy>
        <!-- copy files to the public_html directory -->
        <copy includeEmptyDirs="true" todir="${web.dir}">
            <fileset dir="${public.dir}">
                <include name="**"></include>
                <!-- exclude the less directory -->
                <exclude name="**/less/**"></exclude>
            </fileset>
        </copy>

        <!-- call the clean target -->
        <antcall target="clean"/>
    </target>

    <!-- Clean the root folder -->
    <target name="clean" description="Clean the root directory">
        <echo message="Cleaning."></echo>
        <!-- delete all except the build directory -->
        <delete includeemptydirs="true">
            <fileset dir="${basedir}" includes="**/*">
                <include name="**/*"></include>
                <exclude name="build/**"></exclude>
            </fileset>
        </delete>
        <!-- delete the dev folder -->
        <delete dir="${dev.dir}"></delete>
        <!-- copy files to the root directory -->
        <copy todir="${basedir}">
            <fileset dir="${build.dir}">
                <include name="**/*"></include>
            </fileset>
        </copy>
        <!-- delete the build directory -->
        <delete dir="${build.dir}"></delete>
        <!-- delete the public directory -->
        <delete dir="${public.dir}"></delete>
    </target>
</project>