From d399ba8d89896412f47e214d0e317a8a4d9d8b0a Mon Sep 17 00:00:00 2001 From: Christophe Philemotte Date: Fri, 18 Dec 2015 16:15:28 +0100 Subject: [PATCH 1/5] use travis ci to test target linux and osx 64bits --- .travis.yml | 7 ++++++- Rakefile | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5b19146..01b0754 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,10 +2,15 @@ language: c sudo: required services: - docker +os: + - linux + - osx before_install: - - sudo apt-get -qq update + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq update; fi + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update; fi install: - sudo sh -c "curl -L https://github.com/docker/compose/releases/download/1.3.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose" - sudo chmod +x /usr/local/bin/docker-compose script: - docker-compose run test + - rake local:test_bin_on_current_target diff --git a/Rakefile b/Rakefile index 25111dc..53f9666 100644 --- a/Rakefile +++ b/Rakefile @@ -114,6 +114,24 @@ namespace :local do require_relative 'mrblib/mruby-cli/version' puts "mruby-cli #{MRubyCLI::Version::VERSION}" end + + SUPPORTED_TARGET = { + "linux" => "x86_64-pc-linux-gnu", + "osx" => "x86_64-apple-darwin14" + } + def test_bin_for_target(target) + abort "target not supported" unless SUPPORTED_TARGET.keys.include? target + bin = "./build/#{SUPPORTED_TARGET[target]}/bin/mruby-cli" + abort "mruby for target #{target} absent!" unless File.exists? bin + `#{bin}` + abort "#{target} target is not runnable" unless $?.success? + puts "#{target} target is working!" + end + + desc "test on the current target its corresponding binary" + task :test_bin_on_current_target do + test_bin_for_target ENV["TRAVIS_OS_NAME"] + end end def is_in_a_docker_container? From 2b4c323528d12c3ef6ea653c606cb63c1245b75c Mon Sep 17 00:00:00 2001 From: Christophe Philemotte Date: Fri, 18 Dec 2015 16:25:19 +0100 Subject: [PATCH 2/5] fix broken build on osx because of docker-compose bug cf https://github.com/docker/compose/issues/271#issuecomment-126918110 --- .travis.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 01b0754..a9113ed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,8 +9,19 @@ before_install: - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq update; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update; fi install: - - sudo sh -c "curl -L https://github.com/docker/compose/releases/download/1.3.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose" - - sudo chmod +x /usr/local/bin/docker-compose + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then + sudo sh -c "curl -L https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose"; + sudo chmod +x /usr/local/bin/docker-compose; + fi + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then + brew cask install virtualbox; + brew install docker docker-machine; + sudo pip install -U docker-compose; + fi script: + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then + docker-machine create --driver virtualbox docker; + eval “$(docker-machine env docker)”; + fi - docker-compose run test - rake local:test_bin_on_current_target From fe981ba5fe4803a5b3c5847bd9cb85a8df61a0c1 Mon Sep 17 00:00:00 2001 From: Christophe Philemotte Date: Thu, 24 Dec 2015 11:39:02 +0100 Subject: [PATCH 3/5] deploy on mruby-cli-bins to test the binaries --- .travis.yml | 30 ++++++-------- .travis/sshkey-mruby-cli-bins-travis.enc | Bin 0 -> 3248 bytes Rakefile | 48 +++++++++++++++++------ 3 files changed, 48 insertions(+), 30 deletions(-) create mode 100644 .travis/sshkey-mruby-cli-bins-travis.enc diff --git a/.travis.yml b/.travis.yml index a9113ed..17cce5c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,26 +2,18 @@ language: c sudo: required services: - docker -os: - - linux - - osx before_install: - - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq update; fi - - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update; fi + - openssl aes-256-cbc -K $encrypted_e0bbaa80af07_key -iv $encrypted_e0bbaa80af07_iv -in .travis/sshkey-mruby-cli-bins-travis.enc -out .travis/sshkey-mruby-cli-bins-travis -d + - sudo apt-get -qq update install: - - if [ "$TRAVIS_OS_NAME" = "linux" ]; then - sudo sh -c "curl -L https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose"; - sudo chmod +x /usr/local/bin/docker-compose; - fi - - if [ "$TRAVIS_OS_NAME" = "osx" ]; then - brew cask install virtualbox; - brew install docker docker-machine; - sudo pip install -U docker-compose; - fi + - sudo sh -c "curl -L https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose"; + - sudo chmod +x /usr/local/bin/docker-compose script: - - if [ "$TRAVIS_OS_NAME" = "osx" ]; then - docker-machine create --driver virtualbox docker; - eval “$(docker-machine env docker)”; - fi - docker-compose run test - - rake local:test_bin_on_current_target +after_success: + - if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then + eval "$(ssh-agent -s)"; + chmod 600 .travis/sshkey-mruby-cli-bins-travis; + ssh-add .travis/sshkey-mruby-cli-bins-travis; + rake local:send_bins_for_test; + fi diff --git a/.travis/sshkey-mruby-cli-bins-travis.enc b/.travis/sshkey-mruby-cli-bins-travis.enc new file mode 100644 index 0000000000000000000000000000000000000000..fce85e70895ff23537c268299d4d8284eeeba45f GIT binary patch literal 3248 zcmV;h3{UeHtL`3O01iV##l_K1lW1hGDkKgEWl`5|+!YGSL?Omq-Lk)h&symwfaYho zQ7C%QUIeqHfl=;f7*rregTHl1q%R;PlK71Tf;h@ca7g-K>1V$5fMQg1(E3i+94%;GKN{fEn!HJaokCpI zp<^Dnds}1g_}`-d(Mp!@Yc>=&CRnE}0Dp|YnbFu4X(D63eTs7nF5 zztk)ixK!5Qf>|ofsBpv53^j^+I&S{%1&#W-EXl<~^B==TJw$;^xT$!3Tdft>mx#{Q zsKnM0eqhp6@DYl{IG1i#vbI~ZVakhX6tnLGyYD@MDd0zP%l<}yB>j={axQIgfHTaB59NzuM}nS{=!^_kKfn05h%rjN?D^br(*Nhn)bn!gA&U1j(e+$zG&4U{#5E73 z4GV+e7SvW_RXR6}z?}-ugFQiNc=tw8aX|b_SId4U>TOg1k_H?nodp*TY7QNOm0=;S z6`V1|DLfV$aj+M9>JfLK$#;63HFUYO6ukI)Tm;Vv`X|xQ#3y?Aug#TsP zrytX7+|2_ug~9t9Z|NM5G$}wHFTfVu##U9|Sy^(xXTg1O0MmPTOKNAzN`uZ3_R5Rnf`sg7TIcOBZaMGIfFdM z6q4AT-Wjr0Ub0g0DLgofgYXiceLX+cp*2JL+~o4S)aO4JW+g*MfvKYi@RY@8a&xBA z;my~IxEoRzXStez-MGEDQ9+AtAiD`OBm*hbxU#$Pyb{|!o?!q`85XE1TWkJGu?We`pLarM5lw$(92_+EB4OfVgZ9P;> z|0o=Y0B}v~i1^)RPv$@r6{GAHz1Awa{57e@##Ua zK^Ec{>o;1BmoQd6{B{ecL#nheg~mA|X>7s8iWs~GHT>&tWX`i$weI@74TwTGt^1}= zDq8Ivy9lJc){bK4MYY9?)(LRF3R$TZL4jCN7!^;3OpQth#23r*tL$8|a^olr-G2z@ z+JP>^!z`i%GUzZm(o5932@hqMw%ukT!Xh6QYaQxeOr{YqNsHe*i)SB*rTa6ggEH9* za34MJL8?mUkDFmT`)zt-k%j^i^JxpSO1m^iI^k;%evM7CHDM#gnZbR;Gp@mR${Mvb ztoH{$a4?M?UHct43%t|LRyS~q16`@N_M)Uc4e}^>w=DdS|8=Pt#u)D`1RHCt^0jcLOjLpz;DC`k%qt0-WB1pk5UCciWU}pi&H{Hlb81eJIk@P60Vy_W^F$4w zCe#53%K%6}x%pc5f@ZzoB&+`$QcX(QAbNE?IpaR%j~x7g0`YDFF*ED6Kv?9R+wNQ1 zLloa#jmat9@7$A*=GC~e(GzCLGY`K+l;mbbAmf;*}^D8|1=2 zL5EI&FO#SYl>;pV#@Moj0h>m%4nV#__Qv7wv#YZFk7Q;b=k*UndbP zqbR$}r=?tTyWRQ{2mEKB@)$ zAvhz!Xs?4<0Z-rzyznOXk&=D?&~9e<-eL7?jNX>eas1s&SH1_bBo$|pAAcZBvHpCR zF6CXt5d4TNnj8OokEN=Pb@YhnY@@s)H0c<~%q8?w9pU|1OC1^EB#O3VrUcpR)JVR` zsZT6xk%3cIt>R}2D%lu*4nzd(8+qrBUstN-84-{re3N5ri2k(YGg(5UG;kZ*2r*mm z7Q+SRDjpjX;;y7%k;d@V8}z&IBC+3yAkUroHfEQM!xQ!he;Wx3+_?|54_Q0(1{zns zN)HW7BZz#+19WjUa9o0>%kNVPGf0wT!kRvPdhLDW*cl7sB~?$@d_`@3(4E%m?4MgD zM7L%qjJ_52LIHr?=;@r|{%1kPW((7k=vMYl)`8m)z{30R*CPL~B}k_S1))lUH?G8c6izT>pC*DY>xg^Na%rUVj_`%t0tCrZZ16+h|a>0cVrv zE}UY7s8p@aNg79WVNp3I$BG>>7fzb;vPiZ=KgZCrdo$%6y;cVR literal 0 HcmV?d00001 diff --git a/Rakefile b/Rakefile index 53f9666..2b610ab 100644 --- a/Rakefile +++ b/Rakefile @@ -115,22 +115,48 @@ namespace :local do puts "mruby-cli #{MRubyCLI::Version::VERSION}" end + def clone_mruby_cli_bins + Dir.chdir(APP_ROOT) do + `git clone git@github.com:toch/mruby-cli-bins.git` + return "#{APP_ROOT}/mruby-cli-bins" if $?.success? + end + nil + end + + def detect_current_branch + return nil unless ENV.key? 'TRAVIS' + return ENV['TRAVIS_BRANCH'] if ENV['TRAVIS_PULL_REQUEST'] == "false" + nil + end + SUPPORTED_TARGET = { "linux" => "x86_64-pc-linux-gnu", - "osx" => "x86_64-apple-darwin14" + "osx" => "x86_64-apple-darwin14", + "win" => "x86_64-w64-mingw32" } - def test_bin_for_target(target) - abort "target not supported" unless SUPPORTED_TARGET.keys.include? target - bin = "./build/#{SUPPORTED_TARGET[target]}/bin/mruby-cli" - abort "mruby for target #{target} absent!" unless File.exists? bin - `#{bin}` - abort "#{target} target is not runnable" unless $?.success? - puts "#{target} target is working!" + + def push_mruby_cli_bins(dir, branch) + Dir.chdir(dir) do + `git checkout -B #{branch}` + SUPPORTED_TARGET.each do |target, dir| + bin_dir = "#{APP_ROOT}/mruby/build/#{dir}/bin" + bin_file = "mruby-cli" + bin_file << ".exe" if target == "win" + `cp #{bin_dir}/#{bin_file} #{dir}/bin/` + `git add #{dir}/bin/#{bin_file}` + end + `git commit -m "Travis Build #{ENV['TRAVIS_BUILD_NUMBER']} on branch #{branch}"` + `git push origin #{branch}` + end end - desc "test on the current target its corresponding binary" - task :test_bin_on_current_target do - test_bin_for_target ENV["TRAVIS_OS_NAME"] + desc "prepare the bins and send them to mruby-cli-bins" + task :send_bins_for_test do + mruby_cli_bins_dir = clone_mruby_cli_bins + abort "[send bins for test] impossible to clone mruby-cli-bins" unless mruby_cli_bins_dir + current_branch = detect_current_branch + abort "[send bins for test] impossible to detect current branch" unless current_branch + push_mruby_cli_bins(mruby_cli_bins_dir, current_branch) end end From 43a0f017b55afbe0f53df66dc5f3538f331650e9 Mon Sep 17 00:00:00 2001 From: Christophe Philemotte Date: Wed, 3 Aug 2016 19:22:02 +0200 Subject: [PATCH 4/5] Add current commit SHA when pushing on mruby-cli-bins --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 2b610ab..2a3348c 100644 --- a/Rakefile +++ b/Rakefile @@ -145,7 +145,7 @@ namespace :local do `cp #{bin_dir}/#{bin_file} #{dir}/bin/` `git add #{dir}/bin/#{bin_file}` end - `git commit -m "Travis Build #{ENV['TRAVIS_BUILD_NUMBER']} on branch #{branch}"` + `git commit -m "Travis Build #{ENV['TRAVIS_BUILD_NUMBER']} on branch #{branch}\n[MRUBY_CLI_SHA:#{ENV['TRAVIS_COMMIT']}]"` `git push origin #{branch}` end end From 7772c3f4c21763f2f5f660f776071c76426c3d00 Mon Sep 17 00:00:00 2001 From: Christophe Philemotte Date: Wed, 3 Aug 2016 19:45:22 +0200 Subject: [PATCH 5/5] fix branch switching for mruby-cli-bins --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 2a3348c..7b8d42b 100644 --- a/Rakefile +++ b/Rakefile @@ -137,7 +137,7 @@ namespace :local do def push_mruby_cli_bins(dir, branch) Dir.chdir(dir) do - `git checkout -B #{branch}` + `git checkout #{branch} || git checkout -b #{branch}` SUPPORTED_TARGET.each do |target, dir| bin_dir = "#{APP_ROOT}/mruby/build/#{dir}/bin" bin_file = "mruby-cli"