Browse Source

For Travis CI - more tweaks on the packaging setup. [ci package]

- Prevent packaging from being accidentally invoked by a pull request or a commit on non-master branch.
- Generate documentation before packaging if it is not yet generated in previous step.
- When packaging for iOS platform, rebuild Urho3D library as Mach-O universal binary.
- When packaging for Linux platform, also invokes RPM and Debian CPack generators.
Yao Wei Tjong 姚伟忠 11 years ago
parent
commit
82b707e66b
3 changed files with 20 additions and 5 deletions
  1. 2 2
      .travis.yml
  2. 15 3
      Rakefile
  3. 3 0
      Source/CMakeLists.txt

+ 2 - 2
.travis.yml

@@ -41,8 +41,8 @@ env:
 language: cpp
 compiler: gcc
 before_install:
-    - bash -c "[ $SITE_UPDATE ] && [ '$TRAVIS_BRANCH' == 'master' ] && [ '$TRAVIS_PULL_REQUEST' == 'false' ]" && export SITE_UPDATE_ON_MASTER_COMMIT=1 || true
-    - export msg=$(git log --format=%B -n 1 $TRAVIS_COMMIT |tr -d "'") && bash -c "[[ '$msg' =~ '[ci package]' ]]" && git pull --depth=2000 origin $TRAVIS_BRANCH && git checkout -qf $TRAVIS_COMMIT && export PACKAGE_UPLOAD=1 || true
+    - bash -c "[ '$TRAVIS_BRANCH' == 'master' ] && [ '$TRAVIS_PULL_REQUEST' == 'false' ]" && export ON_MASTER_COMMIT=1 && bash -c "[ $SITE_UPDATE ]" && export SITE_UPDATE_ON_MASTER_COMMIT=1 || true
+    - bash -c "[ $ON_MASTER_COMMIT ]" && export msg=$(git log --format=%B -n 1 $TRAVIS_COMMIT |tr -d "'") && bash -c "[[ '$msg' =~ '[ci package]' ]]" && git pull --depth=2000 origin $TRAVIS_BRANCH && git checkout -qf $TRAVIS_COMMIT && export PACKAGE_UPLOAD=1 || true
     - bash -c "[ $ANDROID ]" && wget -q http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86_64.tar.bz2 && tar xjf *.bz2 && rm *.bz2 && ln -s android-ndk* android-ndk && export ANDROID_NDK=$(pwd)/android-ndk || true
     - bash -c "( [ $SITE_UPDATE_ON_MASTER_COMMIT ] || [ $PACKAGE_UPLOAD ] )" && sudo add-apt-repository ppa:george-edison55/precise-backports -y || true
     - sudo apt-get update -q -y

+ 15 - 3
Rakefile

@@ -67,7 +67,7 @@ task :travis_ci_site_update do
   system "ruby -i -pe 'BEGIN { a = {%q{HTML_HEADER} => %q{minimal-header.html}, %q{HTML_FOOTER} => %q{minimal-footer.html}, %q{HTML_STYLESHEET} => %q{minimal-doxygen.css}, %q{HTML_COLORSTYLE_HUE} => 200, %q{HTML_COLORSTYLE_SAT} => 0, %q{HTML_COLORSTYLE_GAMMA} => 20, %q{DOT_IMAGE_FORMAT} => %q{svg}, %q{INTERACTIVE_SVG} => %q{YES}} }; a.each {|k, v| gsub(/\#{k}\s*?=.*?\n/, %Q{\#{k} = \#{v}\n}) }' Docs/Doxyfile" or abort 'Failed to setup doxygen configuration file'
   system 'cp doc-Build/_includes/Doxygen/minimal-* Docs' or abort 'Failed to copy minimal-themed template'
   # Generate and sync doxygen pages
-  system 'cd Build && make doc >/dev/null 2>&1 && rsync -a --delete ../Docs/html/ ../doc-Build/documentation' or abort 'Failed to generate/rsync doxygen pages'
+  system 'cd Build && make doc >/dev/null && rsync -a --delete ../Docs/html/ ../doc-Build/documentation' or abort 'Failed to generate/rsync doxygen pages'
   # Supply GIT credentials and push site documentation to urho3d/urho3d.github.io.git
   system "msg=`git log --format=%B -n 1 $TRAVIS_COMMIT`; export msg && cd doc-Build && pwd && git config user.name '#{ENV['GIT_NAME']}' && git config user.email '#{ENV['GIT_EMAIL']}' && git remote set-url --push origin https://#{ENV['GH_TOKEN']}@github.com/urho3d/urho3d.github.io.git && git add -A . && ( git commit -q -m \"Travis CI: site documentation update at #{Time.now.utc}.\n\nCommit: https://github.com/urho3d/Urho3D/commit/$TRAVIS_COMMIT\n\nMessage: $msg\" || true) && git push -q >/dev/null 2>&1" or abort 'Failed to update site'
   # Supply GIT credentials and push API documentation to urho3d/Urho3D.git (the push may not be successful if detached HEAD is not a fast forward of remote master)
@@ -92,14 +92,26 @@ task :travis_ci_package_upload do
   else
     platform_prefix = ''
   end
-  if ENV['IOS']     # There is a bug in CMake/CPack that causes the 'package' scheme failed to build for IOS platform, workaround by calling documentation generation and cpack directly
-    xcode_build(ENV['IOS'], "#{platform_prefix}Build/Urho3D.xcodeproj", 'doc', false, '>/dev/null') or abort 'Failed to generate documentation'
+  # Generate the documentation if necessary
+  unless ENV['SITE_UPDATE_ON_MASTER_COMMIT']
+    if ENV['XCODE']
+      xcode_build(ENV['IOS'], "#{platform_prefix}Build/Urho3D.xcodeproj", 'doc', false, '>/dev/null') or abort 'Failed to generate documentation'
+    else
+      system "cd #{platform_prefix}Build && make doc >/dev/null" or abort 'Failed to generate documentation'
+    end
+  end
+  # Make the package
+  if ENV['IOS']
+    # Build Mach-O universal binary consisting of iphoneos (universal ARM archs including 'arm64' if 64-bit is enabled) and iphonesimulator (i386 arch and also x86_64 arch if 64-bit is enabled)
+    xcode_build(0, "#{platform_prefix}Build/Urho3D.xcodeproj", 'Urho3D_universal', false) or abort 'Failed to build Mach-O universal binary'
+    # There is a bug in CMake/CPack that causes the 'package' scheme failed to build for IOS platform, workaround by calling cpack directly
     system "cd #{platform_prefix}Build && cpack -G TGZ" or abort 'Failed to make binary package'
   elsif ENV['XCODE']
     xcode_build(ENV['IOS'], "#{platform_prefix}Build/Urho3D.xcodeproj", 'package', false) or abort 'Failed to make binary package'
   else
     system "cd #{platform_prefix}Build && make package" or abort 'Failed to make binary package'
   end
+  # Upload the package
   setup_digital_keys
   system "scp #{platform_prefix}Build/Urho3D-* [email protected]:/home/frs/project/urho3d/Urho3D/Snapshots" or abort 'Failed to upload binary package'
 end

+ 3 - 0
Source/CMakeLists.txt

@@ -82,6 +82,7 @@ set (URHO3D_DESCRIPTION "Urho3D is a lightweight, cross-platform rendering and g
 set (CPACK_PACKAGE_DESCRIPTION_SUMMARY ${URHO3D_DESCRIPTION})
 set (URHO3D_URL "https://github.com/urho3d/Urho3D")
 set (CPACK_PACKAGE_VENDOR ${URHO3D_URL})
+set (CPACK_PACKAGE_CONTACT ${URHO3D_URL})
 execute_process (COMMAND ${CMAKE_COMMAND} -P ${PROJECT_SOURCE_DIR}/CMake/Modules/GetUrho3DRevision.cmake OUTPUT_VARIABLE URHO3D_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
 set (CPACK_PACKAGE_VERSION ${URHO3D_VERSION})
 string (REGEX MATCH "([^.]+)\\.([^.]+)\\.(.+)" MATCHED ${URHO3D_VERSION})
@@ -103,6 +104,8 @@ elseif (APPLE)
     set (CPACK_SYSTEM_NAME OSX)
 elseif (WIN32)
     set (CPACK_GENERATOR ZIP)
+elseif (CPACK_SYSTEM_NAME STREQUAL Linux)
+    list (APPEND CPACK_GENERATOR RPM DEB)
 endif ()
 if (ENABLE_64BIT)
     set (CPACK_SYSTEM_NAME ${CPACK_SYSTEM_NAME}-64bit)