github.com/jasonkeene/cli@v6.14.1-0.20160816203908-ca5715166dfb+incompatible/ci/cli/tasks/create-installers.yml (about)

     1  ---
     2  platform: linux
     3  image: docker:///cloudfoundry/cli-ci
     4  
     5  inputs:
     6  - name: cf-cli-binaries
     7  - name: cli-private
     8  - name: cli
     9  
    10  outputs:
    11  - name: installers
    12  
    13  run:
    14    path: bash
    15    args:
    16    - -c
    17    - |
    18      set -ex
    19      set -o pipefail
    20  
    21      root=$PWD
    22  
    23      pushd cf-cli-binaries
    24         tar xvf cf-cli-binaries.tgz
    25      popd
    26  
    27      VERSION=$(cat cli/VERSION)
    28      RPM_VERSION=$(echo $VERSION | sed 's/-/_/')
    29  
    30      mkdir archives
    31  
    32      echo "Building 32-bit Debian package"
    33      (
    34          SIZE="$(BLOCKSIZE=1000 du $root/cf-cli-binaries/cf-cli_linux_i686 | cut -f 1)"
    35  
    36          pushd cli/installers/deb
    37            mkdir -p cf/usr/bin
    38  
    39            cp $root/cf-cli-binaries/cf-cli_linux_i686 cf/usr/bin/cf
    40  
    41            cp control.template cf/DEBIAN/control
    42            echo "Installed-Size: ${SIZE}" >> cf/DEBIAN/control
    43            echo "Version: ${VERSION}" >> cf/DEBIAN/control
    44            echo "Architecture: i386" >> cf/DEBIAN/control
    45  
    46            fakeroot dpkg --build cf cf-cli-installer_i686.deb
    47            mv cf-cli-installer_i686.deb $root/archives
    48            rm -rf cf/usr/bin cf/DEBIAN/control
    49          popd
    50      )
    51  
    52      echo "Building 64-bit Debian package"
    53      (
    54          SIZE="$(BLOCKSIZE=1000 du $root/cf-cli-binaries/cf-cli_linux_x86-64 | cut -f 1)"
    55  
    56          pushd cli/installers/deb
    57            mkdir -p cf/usr/bin
    58  
    59            cp $root/cf-cli-binaries/cf-cli_linux_x86-64 cf/usr/bin/cf
    60  
    61            cp control.template cf/DEBIAN/control
    62            echo "Installed-Size: ${SIZE}" >> cf/DEBIAN/control
    63            echo "Version: ${VERSION}" >> cf/DEBIAN/control
    64            echo "Architecture: amd64" >> cf/DEBIAN/control
    65  
    66            fakeroot dpkg --build cf cf-cli-installer_x86-64.deb
    67            mv cf-cli-installer_x86-64.deb $root/archives
    68            rm -rf cf/usr/bin cf/DEBIAN/control
    69          popd
    70      )
    71  
    72      echo "Building 32-bit RedHat package"
    73      (
    74        pushd cli/installers/rpm
    75          cp $root/cf-cli-binaries/cf-cli_linux_i686 cf
    76          echo "Version: ${RPM_VERSION}" > cf-cli.spec
    77          cat cf-cli.spec.template >> cf-cli.spec
    78          rpmbuild --target i386 --define "_topdir $(pwd)/build" -bb cf-cli.spec
    79          mv build/RPMS/i386/cf-cli*.rpm $root/archives/cf-cli-installer_i686.rpm
    80          rm -rf build cf cf-cli.spec
    81        popd
    82      )
    83  
    84      echo "Building 64-bit RedHat package"
    85      (
    86        pushd cli/installers/rpm
    87          cp $root/cf-cli-binaries/cf-cli_linux_x86-64 cf
    88          echo "Version: ${RPM_VERSION}" > cf-cli.spec
    89          cat cf-cli.spec.template >> cf-cli.spec
    90          rpmbuild --target x86_64 --define "_topdir $(pwd)/build" -bb cf-cli.spec
    91          mv build/RPMS/x86_64/cf-cli*.rpm $root/archives/cf-cli-installer_x86-64.rpm
    92          rm -rf build cf cf-cli.spec
    93        popd
    94      )
    95  
    96      echo "Building OS X installer"
    97      (
    98        SIZE="$(BLOCKSIZE=1000 du $root/cf-cli-binaries/cf-cli_osx | cut -f 1)"
    99  
   100        pushd cli/installers/osx
   101          sed -i -e "s/VERSION/${VERSION}/g" Distribution
   102          sed -i -e "s/SIZE/${SIZE}/g" Distribution
   103          mkdir -p cf-cli/usr/local/bin
   104          mkdir -p cf-cli/usr/local/share/doc/cf-cli
   105          cp $root/cf-cli-binaries/cf-cli_osx cf-cli/usr/local/bin/cf
   106          cp COPYING cf-cli/usr/local/share/doc/cf-cli
   107          chmod -R go-w cf-cli
   108          pushd cf-cli
   109            find usr | cpio -o --format=odc | gzip -c > ../Payload
   110          popd
   111          ls4mkbom cf-cli | sed 's/1000\/1000/0\/80/' > bom_list
   112          mkbom -i bom_list Bom
   113          mv Bom Payload com.cloudfoundry.cli.pkg
   114          xar -c --compression none -f cf-cli-installer_osx.pkg com.cloudfoundry.cli.pkg Distribution
   115  
   116          f=cf-cli-installer_osx.pkg
   117          xar --sign -f $f \
   118              --digestinfo-to-sign digestinfo.dat \
   119              --sig-size `cat $root/cli-private/certs/siglen.txt` \
   120              --cert-loc $root/cli-private/certs/Developer\ ID\ Installer_\ Cloudfoundry.org\ Foundation\,\ Inc\ \(ZS92ETKJX7\).cer \
   121              --cert-loc $root/cli-private/certs/Developer\ ID\ Certification\ Authority.cer
   122  
   123          openssl rsautl -sign \
   124              -inkey $root/cli-private/certs/developer-id-installer-private-key.pem \
   125              -in digestinfo.dat \
   126              -out signature.dat
   127          xar --inject-sig signature.dat -f $f
   128  
   129          mv cf-cli-installer_osx.pkg $root/archives/cf-cli-installer_osx.pkg
   130          rm -rf cf-cli com.cloudfoundry.cli.pkg/Payload com.cloudfoundry.cli.pkg/Bom bom_list
   131        popd
   132      )
   133  
   134      echo "Packaging Installers"
   135      (
   136        cd installers
   137        tar cvzf cf-cli-installers.tgz -C $root/archives .
   138      )