Skip to content

Instantly share code, notes, and snippets.

@barthy1
Last active March 15, 2017 14:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save barthy1/55eef4a01f38e8775dc4b3b254bf3558 to your computer and use it in GitHub Desktop.
Save barthy1/55eef4a01f38e8775dc4b3b254bf3558 to your computer and use it in GitHub Desktop.
#!/bin/bash
# cf-linux bosh release
mkdir -p releases
sudo add-apt-repository -y ppa:openjdk-r/ppa
apt-get update
sudo apt-get install -y git zip openjdk-8-jre openjdk-8-jdk ruby unzip
wget ftp://ftp.unicamp.br/pub/ppc64el/ubuntu/14_04/cloud-foundry/go-1.7-ppc64le.tar.gz
rm -rf /usr/local/go /usr/local/bin/go
tar xvfz go-1.7-ppc64le.tar.gz -C /usr/local
ln -s /usr/local/go/bin/go /usr/local/bin
#gem install bosh_cli
cd releases
git clone --recursive https://github.com/cloudfoundry/cf-release
git clone https://github.com/hashicorp/consul src/github.com/hashicorp/consul
#git clone https://github.com/hashicorp/consul src/github.com/hashicorp/consul-template
export GOPATH=$PWD
export PATH=$PWD/bin:$PATH
cd $GOPATH/src/github.com/hashicorp/consul
git checkout v0.7.1
env XC_ARCH=ppc64le XC_OS=linux make
cd $GOPATH/cf-release
git checkout v248
dir=$PWD
scripts/update
buildpacks="go python nodejs staticfile binary ruby"
delete_buildpacks="dotnet-core java java-offline php "
#for buildpack in $buildpacks; do
# sed -i "s|cloudfoundry/${buildpack}-buildpack-release|barthy1/${buildpack}-buildpack-release|g" .gitmodules
#done
#git submodule sync
#git submodule update --init --recursive
#for buildpack ib $buildpacks; do
#cd $dir/src/$buildpack-buildpack-release
#git checkout ppc64le_buildpack
#done
echo 'yes' | bosh create release --force --name cf
for buildpack in $delete_buildpacks; do
rm -rf $dir/jobs/$buildpack-buildpack
rm -rf $dir/packages/$buildpack-buildpack
rm -rf $dir/blobs/{$buildpack}-buildpack
done
# openjdk
cd $dir/blobs/openjdk
wget http://ftp.unicamp.br/pub/ppc64el/ubuntu/14_04/cloud-foundry/openjdk-1.8.0_101-ppc64le-trusty.tar.gz -O java-8-openjdk-ppc64le.tgz
cd $dir/src/uaa-release/packages/uaa
cat spec; echo -e '- openjdk/java-8-openjdk-ppc64le.tgz' >> spec
sed -i 's/openjdk-1.8.0_101-x86_64-trusty.tar.gz/java-8-openjdk-ppc64le.tgz/g' packaging
sed -i 's/`uname` = "Linux"/`uname -m` = "ppc64le"/g' pre_packaging
sed -i 's/openjdk-1.8.0_101-x86_64-trusty.tar.gz/java-8-openjdk-ppc64le.tgz/g' pre_packaging
# golang 1.7 and 1.6.3
cd $dir/blobs/golang
wget -O ppc64le-go.tar.gz https://storage.googleapis.com/golang/go1.7.4.linux-ppc64le.tar.gz
fname=$(ls go1.7.linux*); dst=$(readlink $fname); rm -f $dst; mv ppc64le-go.tar.gz $fname
wget -O ppc64le-go.tar.gz http://ftp.unicamp.br/pub/ppc64el/ubuntu/14_04/cloud-foundry/go-1.6.2-ppc64le.tar.gz
fname=$(ls go1.6.3.linux*); dst=$(readlink $fname); rm -f $dst; mv ppc64le-go.tar.gz $fname
#cf
cd $dir/blobs/cli
wget -O cf http://ftp.unicamp.br/pub/ppc64el/ubuntu/14_04/cloud-foundry/cf-6.23.1-ppc64le
ls -al
fname=$(ls cf-cli*); dst=$(readlink $fname); rm -f $dst $fname; tar zcvf $fname cf; rm cf
# consul, consul-template
cd $dir/blobs/consul
fname=$(ls consul_*); dst=$(readlink $fname); rm -f $dst; zip -j $fname $GOPATH/bin/consul
wget -O consul-template http://ftp.unicamp.br/pub/ppc64el/ubuntu/14_04/cloud-foundry/consul-template-0.16.0rc1-ppc64le
chmod +x consul-template
fname=$(ls consul-template_*); dst=$(readlink $fname); rm -f $dst; zip $fname consul-template
rm -rf consul consul-template
# libmariadb
cd $dir/blobs/libmariadb
fname=$(ls libmariadb-*); dst=$(readlink $fname); rm -f $dst; rm -f $fname
wget ftp://ftp.unicamp.br/pub/ppc64el/ubuntu/14_04/cloud-foundry/libmariadb-5.5.36.tar.xz
# rootfs
cd $dir/blobs/rootfs
wget -O rootfs.tar.gz http://ftp.unicamp.br/pub/ppc64el/ubuntu/14_04/cloud-foundry/cflinuxfs2-1.97.0.tar.gz
fname=$(ls cflinuxfs2*); dst=$(readlink $fname); rm -f $dst; mv rootfs.tar.gz $fname
# etcd
cd $dir/blobs/etcd
fname=$(ls etcd-*); dst=$(readlink $fname); rm -f $dst $fname;
wget http://ftp.unicamp.br/pub/ppc64el/ubuntu/14_04/cloud-foundry/etcd-v3.1.2-linux-ppc64le.tar.gz -O etcd.tar.gz
tar zxvf etcd.tar.gz; rm etcd.tar.gz
mv etcd-v2.1.1-linux-amd64 ${fname%.tar.gz}
tar zcvf $fname ${fname%.tar.gz}
rm -rf ${fname%.tar.gz}
#buildpacks
cd $dir/blobs
declare -A array
array[go]="https://s3.amazonaws.com/dev-power-buildpacks/buildpack-release-candidates/go/go_buildpack-cached-v1.7.19.zip"
array[binary]="https://s3.amazonaws.com/dev-power-buildpacks/buildpack-release-candidates/binary/binary_buildpack-cached-v1.0.9.zip"
array[nodejs]="https://s3.amazonaws.com/dev-power-buildpacks/buildpack-release-candidates/nodejs/nodejs_buildpack-cached-v1.5.29.zip"
array[python]="https://s3.amazonaws.com/dev-power-buildpacks/buildpack-release-candidates/python/python_buildpack-cached-v1.5.15.zip"
array[ruby]="https://s3.amazonaws.com/dev-power-buildpacks/buildpack-release-candidates/ruby/ruby_buildpack-cached-v1.6.34.zip"
array[staticfile]="https://s3.amazonaws.com/dev-power-buildpacks/buildpack-release-candidates/staticfile/staticfile_buildpack-cached-v1.3.17.zip"
for buildpack in $buildpacks; do
fname=$(ls ${buildpack}-buildpack/${buildpack}_buildpack*.zip); dst=$(readlink $fname); rm -f $dst $fname
wget ${array[$buildpack]} -O $fname
done
# final.yml
cd $dir/config
sed -i 's/provider: s3/provider: local/g' final.yml
sed -i 's/bucket_name: cf-release-blobs/blobstore_path: ~\/releases\/cf-release\/blobs/g' final.yml
cd $dir
yes 'yes' | bosh upload blobs
# type 'yes' for each blob
bosh create release --force --with-tarball --name cf --version $(git describe --tags | sed 's/v//g' | cut -d - -f 1)
cp $dir/dev_releases/cf/cf-*.tgz $dir/../../
# RESULT: Release tarball (cf-X.X.X.tgz)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment