vx-builder 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -1
  3. data/lib/vx/builder/configuration.rb +1 -1
  4. data/lib/vx/builder/helper/vxvm_install.rb +19 -0
  5. data/lib/vx/builder/script_builder/base.rb +1 -0
  6. data/lib/vx/builder/script_builder/cache.rb +1 -1
  7. data/lib/vx/builder/script_builder/go.rb +5 -8
  8. data/lib/vx/builder/script_builder/prepare.rb +2 -2
  9. data/lib/vx/builder/script_builder/ruby.rb +5 -19
  10. data/lib/vx/builder/version.rb +1 -1
  11. data/lib/vx/builder.rb +2 -1
  12. data/spec/fixtures/integration/go/language/after_script.sh +4 -4
  13. data/spec/fixtures/integration/go/language/before_script.sh +25 -25
  14. data/spec/fixtures/integration/ruby/deploy/after_script.sh +15 -0
  15. data/spec/fixtures/integration/ruby/deploy/before_script.sh +70 -0
  16. data/spec/fixtures/integration/ruby/deploy/script.sh +8 -0
  17. data/spec/fixtures/integration/ruby/language/after_script.sh +5 -5
  18. data/spec/fixtures/integration/ruby/language/before_script.sh +23 -22
  19. data/spec/fixtures/integration/ruby/matrix/0.after_script.sh +5 -5
  20. data/spec/fixtures/integration/ruby/matrix/0.before_script.sh +23 -22
  21. data/spec/fixtures/integration/ruby/matrix/1.after_script.sh +5 -5
  22. data/spec/fixtures/integration/ruby/matrix/1.before_script.sh +23 -22
  23. data/spec/fixtures/integration/ruby/matrix/d.after_script.sh +4 -4
  24. data/spec/fixtures/integration/ruby/matrix/d.before_script.sh +23 -22
  25. data/spec/fixtures/vx_test_repo_insecure_key +27 -0
  26. data/spec/fixtures/vx_test_repo_insecure_key.pub +1 -0
  27. data/spec/integration/clojure_spec.rb +42 -0
  28. data/spec/integration/go_spec.rb +49 -17
  29. data/spec/integration/ruby_spec.rb +82 -78
  30. data/spec/lib/builder/script_builder/prepare_spec.rb +29 -27
  31. data/spec/lib/builder/task_spec.rb +2 -2
  32. data/spec/spec_helper.rb +2 -0
  33. data/spec/support/create.rb +5 -5
  34. metadata +14 -9
  35. data/spec/fixtures/insecure_private_key +0 -27
  36. data/spec/fixtures/integration/ruby/deploy/d.after_script.sh +0 -14
  37. data/spec/fixtures/integration/ruby/deploy/d.before_script.sh +0 -69
  38. data/spec/fixtures/integration/ruby/deploy/d.script.sh +0 -8
@@ -9,40 +9,41 @@ export CI_JOB_ID=1
9
9
  export CI_JOB_NUMBER=100
10
10
  export CI_BUILD_ID=12
11
11
  export CI_BUILD_NUMBER=101
12
- export CI_PROJECT_NAME=project/name
13
- export CI_BUILD_SHA=b665f90239563c030f1b280a434b3d84daeda1bd
14
- export CI_BRANCH=master
12
+ export CI_PROJECT_NAME=vexor/vx-test-repo
13
+ export CI_BUILD_SHA=8f53c077072674972e21c82a286acc07fada91f5
14
+ export CI_BRANCH=test/pull-request
15
15
  export VX_ROOT=$(pwd)
16
16
  export PATH=$VX_ROOT/bin:$PATH
17
17
  mkdir -p $VX_ROOT/bin
18
- mkdir -p ${VX_ROOT}/data/project/name
19
- mkdir -p ${VX_ROOT}/code/project/name
20
- (echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBdmVpcXpyMG54SkE0OGZrL1Q3cUZyT0RtZFQ5NGx2dDdvbnRHTGhxTlQ3WitHYnFMCnQ0NUY0LzVCeE5neU1iU1FmYUp3MXNHTXVuUWZqS1JkV2Z1S1VRcDB5NmJOaEFqdG5Dbm9WZWwzU01CYVhFMnIKODk2R2toTlhjMS9sejF2LzFUOGJsYy9jaFZlS1p2UVQraER2Qy9LRUNGLyt2ZDd5TDZOUmxvYXlaZHYwa3M3egpDd29JZWVUZkV1MmhkM3JYREVMZ29pTStBQUVjaVllMDhWdXl0RmpiT055MjhFeTNTR0hVUk40MThGSnJKSERzCjdCNXgzUDg5Z2xrU3RhMVRZNEpPUXRvV3V4emE3eWxTOEcxaytzcytUREIrRVQzc3FqRGUxbXhvc1JBZnFTQTcKYXBFWkszQUxiWnJ1M25ZZDI2eCtDRTg0ZHZIN0dpS29CbDBUU1FJREFRQUJBb0lCQUVFQWduYUJDRHVmb2Q0eApFaHFZSFdrdkViTFFKdGFHL2FwL3gyWEFjTjMzK1BHVmlIMHJsWUNVWnE2WjBaUngyWU1uTnJoTFI0QUtmMElFCmdHOXNTY3V6YUliTWNVdmdRblJSWTlVRU5IQVNadHR4T29vZWdMRS9MWSt3STFqMmhIclpQdmZvVGZMV0krbFoKWWYwV0RyeG9KZ2szMGxuckZicDRqRlNaaGphV21zbTFYUTRodHQ5YmZHT0JsZS9nSjZVVHIzMndGMEV5T3B2NAplcmNpMVJTVXp5RFd6MHE3VGphcTZTSGx3UTJKd2NMRzB2bnJacStZbk1KVXdqTGhDNEpBTVpFS0YvNjFLbnNNCnp3UjludU9FMlpESTF4SDV4QUErMHBOa3d6eFdjcXJ5b0tCck9NYXREYSs3Wk9KRW9iT2lxK2dscW1vcHJvdjQKZ1hYUjJJRUNnWUVBK3dQMVNaTTdFMFdudFF5UGdSaVo3RDlUU2lvVit4NTFSUHc5UHV3OEtHM1R1R09McWFNegpyTXdzY2JUb2VqaVpGU3YybEhHRGJTZldzdzc2TVlqK3ZLM1JGNWVkOE14eTNnU2ZWRnhWelNENTBlZnBKY1ZxCmtWNm4vdWEzQUpZR1ZibmVhajU2QmxqeEhieFZ2Y3lYWEZHbmFtbDhJQ1BKMmp5UjhSRTE4NDhDZ1lFQXdhNFMKamdubVJlWStUdXU3VTB4ZDZPbzBYOXRqa3FreXlHcStzdFEzSTJPZll6bXRRdmVGbFdzZmVjbmJDbUVNeWxMeQpuR1Z4WVNpUk5jaWdNb1o3ZXVyZ2RtR0QvTzRtREc4MER5NFBKN2xGOC84WHg3MDFWN1lqZ0duSUkyL1Z3cDFrCnZsUjl4VEo1bFZwQU5YcVNZcTFrd3llU1BuMUtMS3QwRTQyVlA2Y0NnWUVBMmw0T0pDeU9KdXpnd2JNa29FVDcKbXJkWVNOdWw5YWtBa2J2eHQreWhSUGFPU2dsbmRYTUJ3R0I2aFl6QTlacUpLZzd0MnlPSkZ3dWlUbkZJSEpHMgpNZ1B3TTFyMXpvYTlvd0ZZYm5aSk9rTm1zVUhUNU1VQ09XYWtOUzhXb3M3Z3dmRUpXVm55bzlUNkpVa3pPZ05pCjViQXZPWFo4d2lVQU0vZWZhcHp6VjJjQ2dZQmJLdFkvRi9mVjFWQmxFOStFa1VEdlB6ZFNHOUllR2hqMmNCQzkKMnRqdGhwcGpPYVlPRExkTG96WVl2T1NuV1JHTk4waE9TQTM3bnYzalpFSE1Kck4vSTRwdkR1M3pKQ0t5M2JHUwpwNnFvbHpTUGF2ZEZwUkd6N045L05jdm9xbDdqa2ZUM0JveUJRNFlwd0diVEJaUmNjS1FxbkxqaFExYWoranpVCmEyUGlwd0tCZ1FDQ0x1T3JoTzM3VW92TW5tTnJSelhud3U5QytWQ0I0b0dmNlF0akVlaE14L0orNmVodlNZdWIKbExPeGVaUUh6VmtDM0k2clZNYksxcXgwdDhRbmIrNWpIUkFrUjR4L0phVG9qcFpZcW5nZExydFk0L3FMS0pxNwo0YU9MWWpKeUwzWUIwOWczcjY4d2NuVFVIYmNaWWorUTd4VDFZL250WE5wM3BkYlljNDdOVVE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | base64 --decode) > ${VX_ROOT}/data/project/name/key
21
- chmod 0600 ${VX_ROOT}/data/project/name/key
22
- export VX_PRIVATE_KEY=${VX_ROOT}/data/project/name/key
23
- (echo IyEvYmluL3NoCmV4ZWMgL3Vzci9iaW4vc3NoIC1BIC1vIExvZ0xldmVsPXF1aWV0IC1vIFN0cmljdEhvc3RLZXlDaGVja2luZz1ubyAtbyBVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsIC1pICR7VlhfUk9PVH0vZGF0YS9wcm9qZWN0L25hbWUva2V5ICRACg== | base64 --decode) > ${VX_ROOT}/data/project/name/git_ssh
24
- chmod 0750 ${VX_ROOT}/data/project/name/git_ssh
25
- export GIT_SSH=${VX_ROOT}/data/project/name/git_ssh
26
- echo "$ git clone --depth=50 --branch=master git@github.com:dima-exe/ci-worker-test-repo.git ${VX_ROOT}/code/project/name"
27
- git clone --depth=50 --branch=master git@github.com:dima-exe/ci-worker-test-repo.git ${VX_ROOT}/code/project/name
28
- echo "$ git checkout -qf b665f90239563c030f1b280a434b3d84daeda1bd"
29
- ( cd ${VX_ROOT}/code/project/name && git checkout -qf b665f90239563c030f1b280a434b3d84daeda1bd )
18
+ mkdir -p ${VX_ROOT}/data/vexor/vx-test-repo
19
+ mkdir -p ${VX_ROOT}/code/vexor/vx-test-repo
20
+ (echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcE1rYW0rbWh3Q2RDUWRxdHU3VTlwNVZSRm1rcmJpOUhhQTN2YWdwaE12eXJ5V3F4CkM5c1krYW44akNOUlVwZWx5ako4ZjZiNi9WNWg0V2NubHdwT3ZWR0duczRIT2JuWWo4OUdLb0JGK1FwVDI4bXAKQ01pMGt6SE5TV01SWmcvZDl4M0FmMmNESWdKaGdHS2RLTGhPYitTSjJpUnpLQTZ5d215TlRyVUI0dEpocGdKLwpQQTFsR2xZWGtHYWQyS1JBZmc3bVRjdVFycUxKNHFpMlhkZ0FIY3RJU045d1VkYkUxeDVIRlB5enVrd0t1QkFFCmg3bTZWVnJKenNrS05yQnN1T1ZTWnVRNnJ2OVRpcVdYVnBBWGdyV3ZLenRsZjNTTkF0dG1BQmI1ZDJ1UE9hMisKcmVDV0V6SGJXT0ZnTVFEUXNYc1MzcnFDM2Z6dzRWTUtSUXdYSVFJREFRQUJBb0lCQURnWk9wVFBrY0JmM1IrYwpPYjhJY1lmbXZtYzV3STVQVENqeGJZc1ZJNGYvR3VDRUVPZnZXKzVLMzI0NTY4cUpVK2lsRFZ0TDFuQ0JQQ05IClFlUWFuem0yVW5VbndLLzNRL0daWjlLNlBwZ00yd1djL28yOS9qT0tKZEFSQ1BCTkFJekxOU2hxUWxmR3BialcKV1podVBrMjdhTzY1ci9aNElvVXIvV05KSGU1QWt2NUZNZnNlQVoremxBSEEzMlFxTmdnT2VpdDY1R2lvMmNJdQpZREtJNU5yMWlpU3EzSk1mRVp2bWMvNVFlZFU5VTdESWVOV3dqaThwR3pGa0Y4eGh1NkV5OWhwR1IyVTdnRXFSCitkeVNud2k4K3Fhc3BvZjhyZ3VHZVNVWlZtb1RHbWZZVUVuejFacEpWYVFpQUJrYVZYd0FEYWhodmU4dGQxVHIKN2gxYitRMENnWUVBMXZEcDdPa2xXeXZGaWVQWXU0cmxubWpWS052NmtiVVVMdE9peDl5S1diQXBZNmxqcFloUwp5aWdpcVY2amlWb3JDMUNsY1hQV3BXc0hvc2QrcDZEUmFhME1pcUQyV0pQU1huZENvbUdSc09yQ2VPN0RyTFdsClVDUkhsMU9sY1JIY3V4U3FWREgrQ0NxVytOQzRKeFVLYzIyT3pJK2thS1RydWozczlYa2VmSU1DZ1lFQXhFTjYKQjd4QU5ZOWNlYjFYb2V2M1o3QVdJaExQUThHUFozS1NTbXoxWmRwMTFNTm91eFJKQnpEUzRrNjRRdjJuNDRKUApVK2tiWFNqdm5DeUlUQ2pUZXZESXNLeEh0TzB3T0xFd0I1TENCenBKVEVzandHWmNUUDBBT3Y2ZHF3SndMUHBtCnlzaVRyTEZCSDVTZFZzVE10OFVKRnhaMzNzRFdIWnZTbzBwMjFJc0NnWUI2ODhyTWs3Mmp2cEU4UkpMcERSWTIKbkg4NjVVTWJjSHNBSWw0ZWQrRElWMFlGMVpMRDBReVN5WXl5V0FteWUxcmVHUjdhbkVudnpCN05GZE0wcm9DOApNNXBWL3FlTW1kcWY0UmJEN280NXBzRGlEcXJ1TStaQnhzOFJHRzh1RStxeE5hd05oNTlxS25xOEVDRVhjaWpOClNLR0VFTE1halNTdkg5ZFp3QlFaWXdLQmdRQ2NCaGlJOWJzRjJVWm04WU10RW0zSVhFLzhIbi92R1gxcmU4V1kKclM0WkhxYjEwYkw4cG8rM3k3U2FmSUkzbjNkTWdsZVdHWWJMZExPbnNDOWFmRXBEUGhBTmc2Z3R5VEhBbi92Uwp5WFMrVWpQYkZ4RUE3MThKUlVoZG5mU3g4bXBERjMySVVCUTJBV1FJT3hrcDFhSDVwZ1luK0pDcTRScFd4MzJZCm1xWUZLUUtCZ1FDYkVzdllsZmVXSkRpK0NCSCt6aGZrZldJWTlTaXl1SEVVUWE0aE5iYVMvRGtETWdxTjU4Q3UKOGdYR1NmdEVpVGNMYXQwYTBQNnZlYWNnUEt1aEFIZTFLN2g4NCtSMHJFL2N2MVFUQnBXMzhSUWdhYkxzK2V4eQpqeUY1UjFOSEkvTFhzREJOYWlSMDVzclhkaVNadW1MMGF3WDdyaUM0RHpJazZaWllSZGJuYlE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | base64 --decode) > ${VX_ROOT}/data/vexor/vx-test-repo/key
21
+ chmod 0600 ${VX_ROOT}/data/vexor/vx-test-repo/key
22
+ export VX_PRIVATE_KEY=${VX_ROOT}/data/vexor/vx-test-repo/key
23
+ (echo IyEvYmluL3NoCmV4ZWMgL3Vzci9iaW4vc3NoIC1BIC1vIExvZ0xldmVsPXF1aWV0IC1vIFN0cmljdEhvc3RLZXlDaGVja2luZz1ubyAtbyBVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsIC1pICR7VlhfUk9PVH0vZGF0YS92ZXhvci92eC10ZXN0LXJlcG8va2V5ICRACg== | base64 --decode) > ${VX_ROOT}/data/vexor/vx-test-repo/git_ssh
24
+ chmod 0750 ${VX_ROOT}/data/vexor/vx-test-repo/git_ssh
25
+ export GIT_SSH=${VX_ROOT}/data/vexor/vx-test-repo/git_ssh
26
+ echo "$ git clone --depth=50 --branch=test/pull-request git@github.com:vexor/vx-test-repo.git ${VX_ROOT}/code/vexor/vx-test-repo"
27
+ git clone --depth=50 --branch=test/pull-request git@github.com:vexor/vx-test-repo.git ${VX_ROOT}/code/vexor/vx-test-repo
28
+ echo "$ git checkout -qf 8f53c077072674972e21c82a286acc07fada91f5"
29
+ ( cd ${VX_ROOT}/code/vexor/vx-test-repo && git checkout -qf 8f53c077072674972e21c82a286acc07fada91f5 ) || exit 1
30
30
  unset GIT_SSH
31
31
  echo "starting SSH Agent"
32
32
  eval "$(ssh-agent)" > /dev/null
33
33
  ssh-add $VX_PRIVATE_KEY 2> /dev/null
34
- cd ${VX_ROOT}/code/project/name
34
+ cd ${VX_ROOT}/code/vexor/vx-test-repo
35
35
  echo "download latest version of vxvm"
36
- curl --fail --silent --show-error https://raw.githubusercontent.com/vexor/vx-packages/master/vxvm > $VX_ROOT/bin/vxvm
36
+ curl --tcp-nodelay --retry 3 --fail --silent --show-error -o $VX_ROOT/bin/vxvm https://raw.githubusercontent.com/vexor/vx-packages/master/vxvm
37
37
  chmod +x $VX_ROOT/bin/vxvm
38
- export CASHER_DIR=$HOME/.casher && ( mkdir -p $CASHER_DIR/bin && /usr/bin/curl https://raw2.github.com/dima-exe/casher/master/bin/casher -s -o $HOME/.casher/bin/casher && chmod +x $HOME/.casher/bin/casher ) || true
39
- test -f $HOME/.casher/bin/casher && /opt/rbenv/versions/1.9.3-p547/bin/ruby $HOME/.casher/bin/casher fetch http://example.com/master/rvm-2.0.0-gemfile.tgz || true
40
- test -f $HOME/.casher/bin/casher && /opt/rbenv/versions/1.9.3-p547/bin/ruby $HOME/.casher/bin/casher add ~/.rubygems || true
38
+ export CASHER_DIR=$HOME/.casher && ( mkdir -p $CASHER_DIR/bin && /usr/bin/curl https://raw2.github.com/dima-exe/casher/master/bin/casher --tcp-nodelay --retry 3 --fail --silent --show-error -o $HOME/.casher/bin/casher && chmod +x $HOME/.casher/bin/casher ) || true
39
+ test -f $HOME/.casher/bin/casher && casher-ruby $HOME/.casher/bin/casher fetch http://example.com/test/pull-request/rvm-2.0.0-gemfile.tgz http://example.com/master/rvm-2.0.0-gemfile.tgz || true
40
+ test -f $HOME/.casher/bin/casher && casher-ruby $HOME/.casher/bin/casher add ~/.rubygems || true
41
41
  unset CASHER_DIR
42
42
 
43
43
  # before install
44
- eval "$(rbenv init -)" || true
45
- rbenv shell $(rbenv versions | sed -e 's/^*/ /' | awk '{print $1}' | grep -v 'system' | grep '2.0.0' | tail -n1)
44
+ echo \$\ sudo\ env\ PATH\=\$PATH\ vxvm\ install\ ruby\ 2.0.0
45
+ VX_VM_SOURCE="$(sudo env PATH=$PATH vxvm install ruby 2.0.0)"
46
+ source "$VX_VM_SOURCE"
46
47
  echo \$\ export\ BUNDLE_GEMFILE\=\$\{PWD\}/Gemfile
47
48
  export BUNDLE_GEMFILE=${PWD}/Gemfile
48
49
  echo \$\ export\ GEM_HOME\=\~/.rubygems
@@ -5,10 +5,10 @@ export CI_JOB_ID=1
5
5
  export CI_JOB_NUMBER=100
6
6
  export CI_BUILD_ID=12
7
7
  export CI_BUILD_NUMBER=101
8
- export CI_PROJECT_NAME=project/name
9
- export CI_BUILD_SHA=b665f90239563c030f1b280a434b3d84daeda1bd
10
- export CI_BRANCH=master
8
+ export CI_PROJECT_NAME=vexor/vx-test-repo
9
+ export CI_BUILD_SHA=8f53c077072674972e21c82a286acc07fada91f5
10
+ export CI_BRANCH=test/pull-request
11
11
  export VX_ROOT=$(pwd)
12
- cd ${VX_ROOT}/code/project/name
12
+ cd ${VX_ROOT}/code/vexor/vx-test-repo
13
13
 
14
14
  # after script
@@ -9,40 +9,41 @@ export CI_JOB_ID=1
9
9
  export CI_JOB_NUMBER=100
10
10
  export CI_BUILD_ID=12
11
11
  export CI_BUILD_NUMBER=101
12
- export CI_PROJECT_NAME=project/name
13
- export CI_BUILD_SHA=b665f90239563c030f1b280a434b3d84daeda1bd
14
- export CI_BRANCH=master
12
+ export CI_PROJECT_NAME=vexor/vx-test-repo
13
+ export CI_BUILD_SHA=8f53c077072674972e21c82a286acc07fada91f5
14
+ export CI_BRANCH=test/pull-request
15
15
  export VX_ROOT=$(pwd)
16
16
  export PATH=$VX_ROOT/bin:$PATH
17
17
  mkdir -p $VX_ROOT/bin
18
- mkdir -p ${VX_ROOT}/data/project/name
19
- mkdir -p ${VX_ROOT}/code/project/name
20
- (echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBdmVpcXpyMG54SkE0OGZrL1Q3cUZyT0RtZFQ5NGx2dDdvbnRHTGhxTlQ3WitHYnFMCnQ0NUY0LzVCeE5neU1iU1FmYUp3MXNHTXVuUWZqS1JkV2Z1S1VRcDB5NmJOaEFqdG5Dbm9WZWwzU01CYVhFMnIKODk2R2toTlhjMS9sejF2LzFUOGJsYy9jaFZlS1p2UVQraER2Qy9LRUNGLyt2ZDd5TDZOUmxvYXlaZHYwa3M3egpDd29JZWVUZkV1MmhkM3JYREVMZ29pTStBQUVjaVllMDhWdXl0RmpiT055MjhFeTNTR0hVUk40MThGSnJKSERzCjdCNXgzUDg5Z2xrU3RhMVRZNEpPUXRvV3V4emE3eWxTOEcxaytzcytUREIrRVQzc3FqRGUxbXhvc1JBZnFTQTcKYXBFWkszQUxiWnJ1M25ZZDI2eCtDRTg0ZHZIN0dpS29CbDBUU1FJREFRQUJBb0lCQUVFQWduYUJDRHVmb2Q0eApFaHFZSFdrdkViTFFKdGFHL2FwL3gyWEFjTjMzK1BHVmlIMHJsWUNVWnE2WjBaUngyWU1uTnJoTFI0QUtmMElFCmdHOXNTY3V6YUliTWNVdmdRblJSWTlVRU5IQVNadHR4T29vZWdMRS9MWSt3STFqMmhIclpQdmZvVGZMV0krbFoKWWYwV0RyeG9KZ2szMGxuckZicDRqRlNaaGphV21zbTFYUTRodHQ5YmZHT0JsZS9nSjZVVHIzMndGMEV5T3B2NAplcmNpMVJTVXp5RFd6MHE3VGphcTZTSGx3UTJKd2NMRzB2bnJacStZbk1KVXdqTGhDNEpBTVpFS0YvNjFLbnNNCnp3UjludU9FMlpESTF4SDV4QUErMHBOa3d6eFdjcXJ5b0tCck9NYXREYSs3Wk9KRW9iT2lxK2dscW1vcHJvdjQKZ1hYUjJJRUNnWUVBK3dQMVNaTTdFMFdudFF5UGdSaVo3RDlUU2lvVit4NTFSUHc5UHV3OEtHM1R1R09McWFNegpyTXdzY2JUb2VqaVpGU3YybEhHRGJTZldzdzc2TVlqK3ZLM1JGNWVkOE14eTNnU2ZWRnhWelNENTBlZnBKY1ZxCmtWNm4vdWEzQUpZR1ZibmVhajU2QmxqeEhieFZ2Y3lYWEZHbmFtbDhJQ1BKMmp5UjhSRTE4NDhDZ1lFQXdhNFMKamdubVJlWStUdXU3VTB4ZDZPbzBYOXRqa3FreXlHcStzdFEzSTJPZll6bXRRdmVGbFdzZmVjbmJDbUVNeWxMeQpuR1Z4WVNpUk5jaWdNb1o3ZXVyZ2RtR0QvTzRtREc4MER5NFBKN2xGOC84WHg3MDFWN1lqZ0duSUkyL1Z3cDFrCnZsUjl4VEo1bFZwQU5YcVNZcTFrd3llU1BuMUtMS3QwRTQyVlA2Y0NnWUVBMmw0T0pDeU9KdXpnd2JNa29FVDcKbXJkWVNOdWw5YWtBa2J2eHQreWhSUGFPU2dsbmRYTUJ3R0I2aFl6QTlacUpLZzd0MnlPSkZ3dWlUbkZJSEpHMgpNZ1B3TTFyMXpvYTlvd0ZZYm5aSk9rTm1zVUhUNU1VQ09XYWtOUzhXb3M3Z3dmRUpXVm55bzlUNkpVa3pPZ05pCjViQXZPWFo4d2lVQU0vZWZhcHp6VjJjQ2dZQmJLdFkvRi9mVjFWQmxFOStFa1VEdlB6ZFNHOUllR2hqMmNCQzkKMnRqdGhwcGpPYVlPRExkTG96WVl2T1NuV1JHTk4waE9TQTM3bnYzalpFSE1Kck4vSTRwdkR1M3pKQ0t5M2JHUwpwNnFvbHpTUGF2ZEZwUkd6N045L05jdm9xbDdqa2ZUM0JveUJRNFlwd0diVEJaUmNjS1FxbkxqaFExYWoranpVCmEyUGlwd0tCZ1FDQ0x1T3JoTzM3VW92TW5tTnJSelhud3U5QytWQ0I0b0dmNlF0akVlaE14L0orNmVodlNZdWIKbExPeGVaUUh6VmtDM0k2clZNYksxcXgwdDhRbmIrNWpIUkFrUjR4L0phVG9qcFpZcW5nZExydFk0L3FMS0pxNwo0YU9MWWpKeUwzWUIwOWczcjY4d2NuVFVIYmNaWWorUTd4VDFZL250WE5wM3BkYlljNDdOVVE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | base64 --decode) > ${VX_ROOT}/data/project/name/key
21
- chmod 0600 ${VX_ROOT}/data/project/name/key
22
- export VX_PRIVATE_KEY=${VX_ROOT}/data/project/name/key
23
- (echo IyEvYmluL3NoCmV4ZWMgL3Vzci9iaW4vc3NoIC1BIC1vIExvZ0xldmVsPXF1aWV0IC1vIFN0cmljdEhvc3RLZXlDaGVja2luZz1ubyAtbyBVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsIC1pICR7VlhfUk9PVH0vZGF0YS9wcm9qZWN0L25hbWUva2V5ICRACg== | base64 --decode) > ${VX_ROOT}/data/project/name/git_ssh
24
- chmod 0750 ${VX_ROOT}/data/project/name/git_ssh
25
- export GIT_SSH=${VX_ROOT}/data/project/name/git_ssh
26
- echo "$ git clone --depth=50 --branch=master git@github.com:dima-exe/ci-worker-test-repo.git ${VX_ROOT}/code/project/name"
27
- git clone --depth=50 --branch=master git@github.com:dima-exe/ci-worker-test-repo.git ${VX_ROOT}/code/project/name
28
- echo "$ git checkout -qf b665f90239563c030f1b280a434b3d84daeda1bd"
29
- ( cd ${VX_ROOT}/code/project/name && git checkout -qf b665f90239563c030f1b280a434b3d84daeda1bd )
18
+ mkdir -p ${VX_ROOT}/data/vexor/vx-test-repo
19
+ mkdir -p ${VX_ROOT}/code/vexor/vx-test-repo
20
+ (echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcE1rYW0rbWh3Q2RDUWRxdHU3VTlwNVZSRm1rcmJpOUhhQTN2YWdwaE12eXJ5V3F4CkM5c1krYW44akNOUlVwZWx5ako4ZjZiNi9WNWg0V2NubHdwT3ZWR0duczRIT2JuWWo4OUdLb0JGK1FwVDI4bXAKQ01pMGt6SE5TV01SWmcvZDl4M0FmMmNESWdKaGdHS2RLTGhPYitTSjJpUnpLQTZ5d215TlRyVUI0dEpocGdKLwpQQTFsR2xZWGtHYWQyS1JBZmc3bVRjdVFycUxKNHFpMlhkZ0FIY3RJU045d1VkYkUxeDVIRlB5enVrd0t1QkFFCmg3bTZWVnJKenNrS05yQnN1T1ZTWnVRNnJ2OVRpcVdYVnBBWGdyV3ZLenRsZjNTTkF0dG1BQmI1ZDJ1UE9hMisKcmVDV0V6SGJXT0ZnTVFEUXNYc1MzcnFDM2Z6dzRWTUtSUXdYSVFJREFRQUJBb0lCQURnWk9wVFBrY0JmM1IrYwpPYjhJY1lmbXZtYzV3STVQVENqeGJZc1ZJNGYvR3VDRUVPZnZXKzVLMzI0NTY4cUpVK2lsRFZ0TDFuQ0JQQ05IClFlUWFuem0yVW5VbndLLzNRL0daWjlLNlBwZ00yd1djL28yOS9qT0tKZEFSQ1BCTkFJekxOU2hxUWxmR3BialcKV1podVBrMjdhTzY1ci9aNElvVXIvV05KSGU1QWt2NUZNZnNlQVoremxBSEEzMlFxTmdnT2VpdDY1R2lvMmNJdQpZREtJNU5yMWlpU3EzSk1mRVp2bWMvNVFlZFU5VTdESWVOV3dqaThwR3pGa0Y4eGh1NkV5OWhwR1IyVTdnRXFSCitkeVNud2k4K3Fhc3BvZjhyZ3VHZVNVWlZtb1RHbWZZVUVuejFacEpWYVFpQUJrYVZYd0FEYWhodmU4dGQxVHIKN2gxYitRMENnWUVBMXZEcDdPa2xXeXZGaWVQWXU0cmxubWpWS052NmtiVVVMdE9peDl5S1diQXBZNmxqcFloUwp5aWdpcVY2amlWb3JDMUNsY1hQV3BXc0hvc2QrcDZEUmFhME1pcUQyV0pQU1huZENvbUdSc09yQ2VPN0RyTFdsClVDUkhsMU9sY1JIY3V4U3FWREgrQ0NxVytOQzRKeFVLYzIyT3pJK2thS1RydWozczlYa2VmSU1DZ1lFQXhFTjYKQjd4QU5ZOWNlYjFYb2V2M1o3QVdJaExQUThHUFozS1NTbXoxWmRwMTFNTm91eFJKQnpEUzRrNjRRdjJuNDRKUApVK2tiWFNqdm5DeUlUQ2pUZXZESXNLeEh0TzB3T0xFd0I1TENCenBKVEVzandHWmNUUDBBT3Y2ZHF3SndMUHBtCnlzaVRyTEZCSDVTZFZzVE10OFVKRnhaMzNzRFdIWnZTbzBwMjFJc0NnWUI2ODhyTWs3Mmp2cEU4UkpMcERSWTIKbkg4NjVVTWJjSHNBSWw0ZWQrRElWMFlGMVpMRDBReVN5WXl5V0FteWUxcmVHUjdhbkVudnpCN05GZE0wcm9DOApNNXBWL3FlTW1kcWY0UmJEN280NXBzRGlEcXJ1TStaQnhzOFJHRzh1RStxeE5hd05oNTlxS25xOEVDRVhjaWpOClNLR0VFTE1halNTdkg5ZFp3QlFaWXdLQmdRQ2NCaGlJOWJzRjJVWm04WU10RW0zSVhFLzhIbi92R1gxcmU4V1kKclM0WkhxYjEwYkw4cG8rM3k3U2FmSUkzbjNkTWdsZVdHWWJMZExPbnNDOWFmRXBEUGhBTmc2Z3R5VEhBbi92Uwp5WFMrVWpQYkZ4RUE3MThKUlVoZG5mU3g4bXBERjMySVVCUTJBV1FJT3hrcDFhSDVwZ1luK0pDcTRScFd4MzJZCm1xWUZLUUtCZ1FDYkVzdllsZmVXSkRpK0NCSCt6aGZrZldJWTlTaXl1SEVVUWE0aE5iYVMvRGtETWdxTjU4Q3UKOGdYR1NmdEVpVGNMYXQwYTBQNnZlYWNnUEt1aEFIZTFLN2g4NCtSMHJFL2N2MVFUQnBXMzhSUWdhYkxzK2V4eQpqeUY1UjFOSEkvTFhzREJOYWlSMDVzclhkaVNadW1MMGF3WDdyaUM0RHpJazZaWllSZGJuYlE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | base64 --decode) > ${VX_ROOT}/data/vexor/vx-test-repo/key
21
+ chmod 0600 ${VX_ROOT}/data/vexor/vx-test-repo/key
22
+ export VX_PRIVATE_KEY=${VX_ROOT}/data/vexor/vx-test-repo/key
23
+ (echo IyEvYmluL3NoCmV4ZWMgL3Vzci9iaW4vc3NoIC1BIC1vIExvZ0xldmVsPXF1aWV0IC1vIFN0cmljdEhvc3RLZXlDaGVja2luZz1ubyAtbyBVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsIC1pICR7VlhfUk9PVH0vZGF0YS92ZXhvci92eC10ZXN0LXJlcG8va2V5ICRACg== | base64 --decode) > ${VX_ROOT}/data/vexor/vx-test-repo/git_ssh
24
+ chmod 0750 ${VX_ROOT}/data/vexor/vx-test-repo/git_ssh
25
+ export GIT_SSH=${VX_ROOT}/data/vexor/vx-test-repo/git_ssh
26
+ echo "$ git clone --depth=50 --branch=test/pull-request git@github.com:vexor/vx-test-repo.git ${VX_ROOT}/code/vexor/vx-test-repo"
27
+ git clone --depth=50 --branch=test/pull-request git@github.com:vexor/vx-test-repo.git ${VX_ROOT}/code/vexor/vx-test-repo
28
+ echo "$ git checkout -qf 8f53c077072674972e21c82a286acc07fada91f5"
29
+ ( cd ${VX_ROOT}/code/vexor/vx-test-repo && git checkout -qf 8f53c077072674972e21c82a286acc07fada91f5 ) || exit 1
30
30
  unset GIT_SSH
31
31
  echo "starting SSH Agent"
32
32
  eval "$(ssh-agent)" > /dev/null
33
33
  ssh-add $VX_PRIVATE_KEY 2> /dev/null
34
- cd ${VX_ROOT}/code/project/name
34
+ cd ${VX_ROOT}/code/vexor/vx-test-repo
35
35
  echo "download latest version of vxvm"
36
- curl --fail --silent --show-error https://raw.githubusercontent.com/vexor/vx-packages/master/vxvm > $VX_ROOT/bin/vxvm
36
+ curl --tcp-nodelay --retry 3 --fail --silent --show-error -o $VX_ROOT/bin/vxvm https://raw.githubusercontent.com/vexor/vx-packages/master/vxvm
37
37
  chmod +x $VX_ROOT/bin/vxvm
38
- export CASHER_DIR=$HOME/.casher && ( mkdir -p $CASHER_DIR/bin && /usr/bin/curl https://raw2.github.com/dima-exe/casher/master/bin/casher -s -o $HOME/.casher/bin/casher && chmod +x $HOME/.casher/bin/casher ) || true
39
- test -f $HOME/.casher/bin/casher && /opt/rbenv/versions/1.9.3-p547/bin/ruby $HOME/.casher/bin/casher fetch http://example.com/master/rvm-1.9.3-gemfile.tgz || true
40
- test -f $HOME/.casher/bin/casher && /opt/rbenv/versions/1.9.3-p547/bin/ruby $HOME/.casher/bin/casher add ~/.rubygems || true
38
+ export CASHER_DIR=$HOME/.casher && ( mkdir -p $CASHER_DIR/bin && /usr/bin/curl https://raw2.github.com/dima-exe/casher/master/bin/casher --tcp-nodelay --retry 3 --fail --silent --show-error -o $HOME/.casher/bin/casher && chmod +x $HOME/.casher/bin/casher ) || true
39
+ test -f $HOME/.casher/bin/casher && casher-ruby $HOME/.casher/bin/casher fetch http://example.com/test/pull-request/rvm-1.9.3-gemfile.tgz http://example.com/master/rvm-1.9.3-gemfile.tgz || true
40
+ test -f $HOME/.casher/bin/casher && casher-ruby $HOME/.casher/bin/casher add ~/.rubygems || true
41
41
  unset CASHER_DIR
42
42
 
43
43
  # before install
44
- eval "$(rbenv init -)" || true
45
- rbenv shell $(rbenv versions | sed -e 's/^*/ /' | awk '{print $1}' | grep -v 'system' | grep '1.9.3' | tail -n1)
44
+ echo \$\ sudo\ env\ PATH\=\$PATH\ vxvm\ install\ ruby\ 1.9.3
45
+ VX_VM_SOURCE="$(sudo env PATH=$PATH vxvm install ruby 1.9.3)"
46
+ source "$VX_VM_SOURCE"
46
47
  echo \$\ export\ BUNDLE_GEMFILE\=\$\{PWD\}/Gemfile
47
48
  export BUNDLE_GEMFILE=${PWD}/Gemfile
48
49
  echo \$\ export\ GEM_HOME\=\~/.rubygems
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEApMkam+mhwCdCQdqtu7U9p5VRFmkrbi9HaA3vagphMvyryWqx
3
+ C9sY+an8jCNRUpelyjJ8f6b6/V5h4WcnlwpOvVGGns4HObnYj89GKoBF+QpT28mp
4
+ CMi0kzHNSWMRZg/d9x3Af2cDIgJhgGKdKLhOb+SJ2iRzKA6ywmyNTrUB4tJhpgJ/
5
+ PA1lGlYXkGad2KRAfg7mTcuQrqLJ4qi2XdgAHctISN9wUdbE1x5HFPyzukwKuBAE
6
+ h7m6VVrJzskKNrBsuOVSZuQ6rv9TiqWXVpAXgrWvKztlf3SNAttmABb5d2uPOa2+
7
+ reCWEzHbWOFgMQDQsXsS3rqC3fzw4VMKRQwXIQIDAQABAoIBADgZOpTPkcBf3R+c
8
+ Ob8IcYfmvmc5wI5PTCjxbYsVI4f/GuCEEOfvW+5K324568qJU+ilDVtL1nCBPCNH
9
+ QeQanzm2UnUnwK/3Q/GZZ9K6PpgM2wWc/o29/jOKJdARCPBNAIzLNShqQlfGpbjW
10
+ WZhuPk27aO65r/Z4IoUr/WNJHe5Akv5FMfseAZ+zlAHA32QqNggOeit65Gio2cIu
11
+ YDKI5Nr1iiSq3JMfEZvmc/5QedU9U7DIeNWwji8pGzFkF8xhu6Ey9hpGR2U7gEqR
12
+ +dySnwi8+qaspof8rguGeSUZVmoTGmfYUEnz1ZpJVaQiABkaVXwADahhve8td1Tr
13
+ 7h1b+Q0CgYEA1vDp7OklWyvFiePYu4rlnmjVKNv6kbUULtOix9yKWbApY6ljpYhS
14
+ yigiqV6jiVorC1ClcXPWpWsHosd+p6DRaa0MiqD2WJPSXndComGRsOrCeO7DrLWl
15
+ UCRHl1OlcRHcuxSqVDH+CCqW+NC4JxUKc22OzI+kaKTruj3s9XkefIMCgYEAxEN6
16
+ B7xANY9ceb1Xoev3Z7AWIhLPQ8GPZ3KSSmz1Zdp11MNouxRJBzDS4k64Qv2n44JP
17
+ U+kbXSjvnCyITCjTevDIsKxHtO0wOLEwB5LCBzpJTEsjwGZcTP0AOv6dqwJwLPpm
18
+ ysiTrLFBH5SdVsTMt8UJFxZ33sDWHZvSo0p21IsCgYB688rMk72jvpE8RJLpDRY2
19
+ nH865UMbcHsAIl4ed+DIV0YF1ZLD0QySyYyyWAmye1reGR7anEnvzB7NFdM0roC8
20
+ M5pV/qeMmdqf4RbD7o45psDiDqruM+ZBxs8RGG8uE+qxNawNh59qKnq8ECEXcijN
21
+ SKGEELMajSSvH9dZwBQZYwKBgQCcBhiI9bsF2UZm8YMtEm3IXE/8Hn/vGX1re8WY
22
+ rS4ZHqb10bL8po+3y7SafII3n3dMgleWGYbLdLOnsC9afEpDPhANg6gtyTHAn/vS
23
+ yXS+UjPbFxEA718JRUhdnfSx8mpDF32IUBQ2AWQIOxkp1aH5pgYn+JCq4RpWx32Y
24
+ mqYFKQKBgQCbEsvYlfeWJDi+CBH+zhfkfWIY9SiyuHEUQa4hNbaS/DkDMgqN58Cu
25
+ 8gXGSftEiTcLat0a0P6veacgPKuhAHe1K7h84+R0rE/cv1QTBpW38RQgabLs+exy
26
+ jyF5R1NHI/LXsDBNaiR05srXdiSZumL0awX7riC4DzIk6ZZYRdbnbQ==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkyRqb6aHAJ0JB2q27tT2nlVEWaStuL0doDe9qCmEy/KvJarEL2xj5qfyMI1FSl6XKMnx/pvr9XmHhZyeXCk69UYaezgc5udiPz0YqgEX5ClPbyakIyLSTMc1JYxFmD933HcB/ZwMiAmGAYp0ouE5v5InaJHMoDrLCbI1OtQHi0mGmAn88DWUaVheQZp3YpEB+DuZNy5CuosniqLZd2AAdy0hI33BR1sTXHkcU/LO6TAq4EASHubpVWsnOyQo2sGy45VJm5Dqu/1OKpZdWkBeCta8rO2V/dI0C22YAFvl3a485rb6t4JYTMdtY4WAxANCxexLeuoLd/PDhUwpFDBch dima@dmexe.local
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+ require 'yaml'
3
+ require 'tmpdir'
4
+ require 'fileutils'
5
+
6
+ describe "(integration) go" do
7
+ let(:path) { Dir.tmpdir + "/vx-builder-test" }
8
+
9
+ before do
10
+ FileUtils.rm_rf(path)
11
+ FileUtils.mkdir_p(path)
12
+ end
13
+ after { FileUtils.rm_rf(path) }
14
+
15
+ def build(file, options = {})
16
+ config = Vx::Builder::BuildConfiguration.from_yaml(file)
17
+ matrix = Vx::Builder.matrix config
18
+ options[:task] ||= create(:task)
19
+ script = Vx::Builder.script(options[:task], matrix.build.first)
20
+ OpenStruct.new script: script, matrix: matrix
21
+ end
22
+
23
+ it "should succesfuly run lang/clojure", real: true do
24
+ file = {"language" => "clojure"}.to_yaml
25
+ task = create(
26
+ :task,
27
+ sha: "HEAD",
28
+ branch: "lang/clojure"
29
+ )
30
+
31
+ b = build(file, task: task)
32
+ Dir.chdir(path) do
33
+ File.open("script.sh", "w") do |io|
34
+ io.write "set -e\n"
35
+ io.write b.script.to_before_script
36
+ io.write b.script.to_script
37
+ end
38
+ system("env", "-", "USER=$USER", "HOME=#{path}", "bash", "script.sh" )
39
+ expect($?.to_i).to eq 0
40
+ end
41
+ end
42
+ end
@@ -1,15 +1,19 @@
1
1
  require 'spec_helper'
2
+ require 'yaml'
3
+ require 'tmpdir'
4
+ require 'fileutils'
2
5
 
3
6
  describe "(integration) go" do
4
- let(:build_configuration) {
5
- Vx::Builder::BuildConfiguration.from_yaml(config)
6
- }
7
- let(:matrix) { Vx::Builder.matrix build_configuration }
8
- let(:task) { create :task }
9
- let(:script) { Vx::Builder.script(task, source) }
10
- subject { matrix }
11
-
12
- def write_script_to_filter(prefix)
7
+ let(:path) { Dir.tmpdir + "/vx-builder-test" }
8
+
9
+ before do
10
+ FileUtils.rm_rf(path)
11
+ FileUtils.mkdir_p(path)
12
+ end
13
+ after { FileUtils.rm_rf(path) }
14
+
15
+ def write_script_to_filter(prefix, script)
16
+ =begin
13
17
  File.open(fixture_path("integration/go/#{prefix}before_script.sh"), 'w') do |io|
14
18
  io << script.to_before_script
15
19
  end
@@ -19,22 +23,50 @@ describe "(integration) go" do
19
23
  File.open(fixture_path("integration/go/#{prefix}script.sh"), 'w') do |io|
20
24
  io << script.to_script
21
25
  end
26
+ =end
22
27
  end
23
28
 
24
- context "language" do
25
- let(:config) { fixture("integration/go/language/config.yml") }
26
- let(:source) { matrix.build.first }
29
+ def build(file, options = {})
30
+ config = Vx::Builder::BuildConfiguration.from_yaml(file)
31
+ matrix = Vx::Builder.matrix config
32
+ options[:task] ||= create(:task)
33
+ script = Vx::Builder.script(options[:task], matrix.build.first)
34
+ OpenStruct.new script: script, matrix: matrix
35
+ end
27
36
 
28
- before { write_script_to_filter "language/" }
37
+ context "(generation)" do
38
+ let(:file) { fixture("integration/go/language/config.yml") }
39
+ let(:b) { build(file) }
40
+ before { write_script_to_filter "language/", b.script }
29
41
 
30
42
  it "should generate one configuration" do
31
- expect(matrix.build).to have(1).item
43
+ expect(b.matrix.build).to have(1).item
32
44
  end
33
45
 
34
46
  it "should generate valid scripts" do
35
- expect(script.to_before_script).to eq fixture("integration/go/language/before_script.sh")
36
- expect(script.to_script).to eq fixture("integration/go/language/script.sh")
37
- expect(script.to_after_script).to eq fixture("integration/go/language/after_script.sh")
47
+ expect(b.script.to_before_script).to eq fixture("integration/go/language/before_script.sh")
48
+ expect(b.script.to_script).to eq fixture("integration/go/language/script.sh")
49
+ expect(b.script.to_after_script).to eq fixture("integration/go/language/after_script.sh")
50
+ end
51
+ end
52
+
53
+ it "should succesfuly run lang/go", real: true do
54
+ file = {"language" => "go"}.to_yaml
55
+ task = create(
56
+ :task,
57
+ sha: "HEAD",
58
+ branch: "lang/go"
59
+ )
60
+
61
+ b = build(file, task: task)
62
+ Dir.chdir(path) do
63
+ File.open("script.sh", "w") do |io|
64
+ io.write "set -e\n"
65
+ io.write b.script.to_before_script
66
+ io.write b.script.to_script
67
+ end
68
+ system("env", "-", "USER=$USER", "HOME=#{path}", "bash", "script.sh" )
69
+ expect($?.to_i).to eq 0
38
70
  end
39
71
  end
40
72
  end
@@ -1,16 +1,19 @@
1
1
  require 'spec_helper'
2
+ require 'fileutils'
3
+ require 'tempfile'
4
+ require 'yaml'
2
5
 
3
6
  describe "(integration) ruby" do
4
- let(:build_configuration) {
5
- Vx::Builder::BuildConfiguration.from_yaml(config)
6
- }
7
- let(:matrix) { Vx::Builder.matrix build_configuration }
8
- let(:task) { create :task }
9
- let(:script) { Vx::Builder.script(task, source) }
10
- subject { matrix }
11
-
12
- def write_script_to_filter(prefix)
13
- =begin
7
+ let(:path) { Dir.tmpdir + "/vx-builder-test" }
8
+
9
+ before do
10
+ FileUtils.rm_rf(path)
11
+ FileUtils.mkdir_p(path)
12
+ end
13
+
14
+ after { FileUtils.rm_rf(path) }
15
+
16
+ def write_script_to_filter(prefix, script)
14
17
  File.open(fixture_path("integration/ruby/#{prefix}before_script.sh"), 'w') do |io|
15
18
  io << script.to_before_script
16
19
  end
@@ -20,93 +23,94 @@ describe "(integration) ruby" do
20
23
  File.open(fixture_path("integration/ruby/#{prefix}script.sh"), 'w') do |io|
21
24
  io << script.to_script
22
25
  end
23
- =end
24
26
  end
25
27
 
26
- context "language" do
27
- let(:config) { fixture("integration/ruby/language/config.yml") }
28
-
29
- its(:build) { should have(1).item }
30
-
31
- context "first configuration" do
32
- let(:source) { matrix.build.first }
33
- subject { script }
34
-
35
- before { write_script_to_filter "language/" }
36
-
37
- its(:to_before_script) { should eq fixture("integration/ruby/language/before_script.sh") }
38
- its(:to_script) { should eq fixture("integration/ruby/language/script.sh") }
39
- its(:to_after_script) { should eq fixture("integration/ruby/language/after_script.sh") }
28
+ def build(file, options = {})
29
+ config = Vx::Builder::BuildConfiguration.from_yaml(file)
30
+ matrix = Vx::Builder.matrix config
31
+ options[:task] ||= create(:task)
32
+ rs = OpenStruct.new matrix: matrix, scripts: []
33
+ matrix.build.each do |b|
34
+ rs.scripts << Vx::Builder.script(options[:task], b)
40
35
  end
36
+ rs
41
37
  end
42
38
 
43
- context "deploy" do
44
- let(:config) { fixture("integration/ruby/deploy/config.yml") }
45
-
46
- context "configuration" do
47
- let(:task) { create :task, deploy: true }
48
- let(:sources) { Vx::Builder.deploy(matrix, branch: "master").build }
49
-
50
- it "should have source" do
51
- expect(sources).to have(1).item
52
- end
53
-
54
- context "first deploy configuration" do
55
- let(:source) { sources.first }
56
- before { write_script_to_filter "deploy/d." }
57
- subject { script }
39
+ context "generation" do
40
+ let(:config) { fixture("integration/ruby/language/config.yml") }
58
41
 
59
- its(:to_before_script) { should eq fixture("integration/ruby/deploy/d.before_script.sh") }
60
- its(:to_script) { should eq fixture("integration/ruby/deploy/d.script.sh") }
61
- its(:to_after_script) { should eq fixture("integration/ruby/deploy/d.after_script.sh") }
62
- end
42
+ it "should successfuly generate scripts using language: ruby" do
43
+ c = fixture("integration/ruby/language/config.yml")
44
+ b = build(c)
45
+ expect(b.scripts).to have(1).item
46
+ script = b.scripts[0]
47
+ write_script_to_filter("language/", script)
48
+ expect(script.to_before_script).to eq fixture("integration/ruby/language/before_script.sh")
49
+ expect(script.to_script).to eq fixture("integration/ruby/language/script.sh")
50
+ expect(script.to_after_script).to eq fixture("integration/ruby/language/after_script.sh")
63
51
  end
64
- end
65
-
66
- context "matrix" do
67
- let(:config) { fixture("integration/ruby/matrix/config.yml") }
68
52
 
69
- its(:build) { should have(2).item }
53
+ it "should successfuly generate scripts for deploy" do
54
+ c = fixture("integration/ruby/deploy/config.yml")
55
+ b = build(c)
56
+ expect(b.scripts).to have(1).item
57
+ script = b.scripts[0]
58
+ write_script_to_filter("deploy/", script)
59
+ expect(script.to_before_script).to eq fixture("integration/ruby/deploy/before_script.sh")
60
+ expect(script.to_script).to eq fixture("integration/ruby/deploy/script.sh")
61
+ expect(script.to_after_script).to eq fixture("integration/ruby/deploy/after_script.sh")
62
+ end
70
63
 
71
- context "0th configuration" do
72
- let(:source) { matrix.build[0] }
73
- subject { script }
64
+ it "should successfuly generate scripts for rvm matrix" do
65
+ c = fixture("integration/ruby/matrix/config.yml")
66
+ b = build(c)
74
67
 
75
- before { write_script_to_filter "matrix/0." }
68
+ expect(b.scripts).to have(2).items
76
69
 
77
- its(:to_before_script) { should eq fixture("integration/ruby/matrix/0.before_script.sh") }
78
- its(:to_script) { should eq fixture("integration/ruby/matrix/0.script.sh") }
79
- its(:to_after_script) { should eq fixture("integration/ruby/matrix/0.after_script.sh") }
80
- end
70
+ script = b.scripts[0]
71
+ write_script_to_filter("matrix/0.", script)
81
72
 
82
- context "1th configuration" do
83
- let(:source) { matrix.build[1] }
84
- subject { script }
73
+ expect(script.to_before_script).to eq fixture("integration/ruby/matrix/0.before_script.sh")
74
+ expect(script.to_script).to eq fixture("integration/ruby/matrix/0.script.sh")
75
+ expect(script.to_after_script).to eq fixture("integration/ruby/matrix/0.after_script.sh")
85
76
 
86
- before { write_script_to_filter "matrix/1." }
77
+ script = b.scripts[1]
78
+ write_script_to_filter("matrix/1.", script)
87
79
 
88
- its(:to_before_script) { should eq fixture("integration/ruby/matrix/1.before_script.sh") }
89
- its(:to_script) { should eq fixture("integration/ruby/matrix/1.script.sh") }
90
- its(:to_after_script) { should eq fixture("integration/ruby/matrix/1.after_script.sh") }
91
- end
80
+ expect(script.to_before_script).to eq fixture("integration/ruby/matrix/1.before_script.sh")
81
+ expect(script.to_script).to eq fixture("integration/ruby/matrix/1.script.sh")
82
+ expect(script.to_after_script).to eq fixture("integration/ruby/matrix/1.after_script.sh")
92
83
 
93
- context "deploy configuration" do
94
- let(:task) { create :task }
95
- let(:sources) { Vx::Builder.deploy(matrix, branch: "master").build }
84
+ deploy = Vx::Builder.deploy(b.matrix, branch: "master").build
85
+ expect(deploy).to have(1).item
96
86
 
97
- it "should have source" do
98
- expect(sources).to have(1).item
99
- end
87
+ script = Vx::Builder.script(create(:task), deploy[0])
88
+ write_script_to_filter("matrix/d.", script)
100
89
 
101
- context "first deploy configuration" do
102
- let(:source) { sources.first }
103
- subject { script }
104
- before { write_script_to_filter "matrix/d." }
90
+ expect(script.to_before_script).to eq fixture("integration/ruby/matrix/d.before_script.sh")
91
+ expect(script.to_script).to eq fixture("integration/ruby/matrix/d.script.sh")
92
+ expect(script.to_after_script).to eq fixture("integration/ruby/matrix/d.after_script.sh")
93
+ end
94
+ end
105
95
 
106
- its(:to_before_script) { should eq fixture("integration/ruby/matrix/d.before_script.sh") }
107
- its(:to_script) { should eq fixture("integration/ruby/matrix/d.script.sh") }
108
- its(:to_after_script) { should eq fixture("integration/ruby/matrix/d.after_script.sh") }
96
+ it "should succesfuly run lang/ruby", real: true do
97
+ file = {"language" => "ruby"}.to_yaml
98
+ task = create(
99
+ :task,
100
+ sha: "HEAD",
101
+ branch: "lang/ruby"
102
+ )
103
+
104
+ b = build(file, task: task)
105
+ Dir.chdir(path) do
106
+ File.open("script.sh", "w") do |io|
107
+ io.write "set -e\n"
108
+ io.write b.scripts[0].to_before_script
109
+ io.write b.scripts[0].to_script
109
110
  end
111
+ system("env", "-", "USER=$USER", "HOME=#{path}", "bash", "script.sh" )
112
+ expect($?.to_i).to eq 0
110
113
  end
111
114
  end
115
+
112
116
  end
@@ -3,42 +3,44 @@ require 'tmpdir'
3
3
  require 'fileutils'
4
4
 
5
5
  describe Vx::Builder::ScriptBuilder::Prepare do
6
- let(:app) { ->(_) { 0 } }
7
- let(:script) { described_class.new app }
8
- let(:env) { create :env }
9
- let(:run) { script.call env }
10
- let(:path) { Dir.tmpdir }
11
- subject { run }
6
+ let(:path) { Dir.tmpdir }
12
7
 
13
8
  before { FileUtils.rm_rf(path) }
14
9
  after { FileUtils.rm_rf(path) }
15
10
 
16
- it { should eq 0 }
11
+ def new_command(options = {})
12
+ options[:task] ||= create(:task)
13
+ options[:env] ||= create(:env, task: options[:task])
14
+ options[:app] ||= ->(_) { 0 }
15
+ options[:script] ||= described_class.new options[:app]
16
+ options[:script].call(options[:env])
17
17
 
18
- context "run it", git: true do
19
- let(:command) { create :command_from_env, env: env }
20
- before { run }
18
+ options[:cmd] ||= create(:command_from_env, env: options[:env])
19
+ options[:cmd]
20
+ end
21
21
 
22
- context "success" do
23
- it "should return zero code" do
24
- Dir.chdir(path) do
25
- system( command )
26
- end
27
- expect($?.to_i).to eq 0
28
- end
22
+ it "should successfuly run command" do
23
+ cmd = new_command
24
+ Dir.chdir(path) do
25
+ system( cmd )
29
26
  end
27
+ expect($?.to_i).to eq 0
28
+ end
29
+
30
+ it "should be fail if reference if not in tree" do
31
+ cmd = new_command(task: create(:task, sha: '8f53c077072674972e21c82a286acc07fada0000'))
32
+ Dir.chdir(path) do
33
+ system( cmd )
34
+ end
35
+ expect($?.to_i).to_not eq 0
36
+ end
30
37
 
31
- context "with github pull request" do
32
- let(:env) { create :env, task: create(:task, pull_request_id: 1) }
33
- context "success" do
34
- it "should return zero code" do
35
- Dir.chdir(path) do
36
- system( command )
37
- end
38
- expect($?.to_i).to eq 0
39
- end
40
- end
38
+ it "should successfuly run for pull request" do
39
+ cmd = new_command task: create(:task, pull_request_id: 1)
40
+ Dir.chdir(path) do
41
+ system( cmd )
41
42
  end
43
+ expect($?.to_i).to eq 0
42
44
  end
43
45
 
44
46
  end
@@ -6,8 +6,8 @@ describe Vx::Builder::Task do
6
6
  subject { task }
7
7
 
8
8
  context "just created" do
9
- its(:name) { should eq 'project/name' }
10
- its(:sha) { should eq 'b665f90239563c030f1b280a434b3d84daeda1bd' }
9
+ its(:name) { should eq 'vexor/vx-test-repo' }
10
+ its(:sha) { should eq '8f53c077072674972e21c82a286acc07fada91f5' }
11
11
  its(:deploy_key) { should be }
12
12
  its(:cache_url_prefix){ should eq 'http://example.com' }
13
13
  its(:job_id) { should eq 1 }
data/spec/spec_helper.rb CHANGED
@@ -9,6 +9,8 @@ Dir[File.expand_path("../..", __FILE__) + "/spec/support/**/*.rb"].each {|f| req
9
9
  RSpec.configure do |config|
10
10
  config.mock_with :rr
11
11
 
12
+ config.filter_run_excluding real: true
13
+
12
14
  config.before(:each) do
13
15
  Vx::Builder.reset_config!
14
16
  end