You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by al...@apache.org on 2018/08/14 22:23:37 UTC

[beam-wheels] branch master updated: Add travis build config files and upload artifacts into dist.apache.org (#2)

This is an automated email from the ASF dual-hosted git repository.

altay pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam-wheels.git


The following commit(s) were added to refs/heads/master by this push:
     new 83b493d  Add travis build config files and upload artifacts into dist.apache.org (#2)
83b493d is described below

commit 83b493d33651ed96aa7c6cff9b8b64eaaa7c7a36
Author: Boyuan Zhang <36...@users.noreply.github.com>
AuthorDate: Tue Aug 14 15:23:36 2018 -0700

    Add travis build config files and upload artifacts into dist.apache.org (#2)
    
    * Add travis build config files and upload artifacts into dist.apache.org
    * Add README.md
---
 .travis.yml      | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 README.md        | 56 ++++++++++++++++++++++++++++++++++++++++++++++++
 config.sh        | 13 ++++++++++++
 deploy_travis.sh | 17 +++++++++++++++
 4 files changed, 151 insertions(+)

diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..67327b1
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,65 @@
+language: python
+python: 3.5
+sudo: required
+dist: trusty
+services: docker
+osx_image: xcode6.4
+
+env:
+  global:
+      - PYTHON_ARTIFACTS_DIR=python
+      - STAGING=https://dist.apache.org/repos/dist/dev/beam/${VERSION}/${PYTHON_ARTIFACTS_DIR}
+      - BEAM_SVN_DIR=https://dist.apache.org/repos/dist/dev/beam
+      - ZIP_FILE=apache-beam-${VERSION}.zip
+
+      - PLAT=x86_64
+      - BUILD_DEPENDS="Cython"
+      - TEST_DEPENDS=
+
+matrix:
+  exclude:
+    # Exclude the default Python 3.5 build
+    - python: 3.5
+  include:
+   - os: osx
+     language: generic
+     env:
+       - MB_PYTHON_VERSION=2.7
+   - os: linux
+     env:
+       - MB_PYTHON_VERSION=2.7
+   - os: linux
+     env:
+       - MB_PYTHON_VERSION=2.7
+       - UNICODE_WIDTH=16
+   - os: linux
+     env:
+       - MB_PYTHON_VERSION=2.7
+       - PLAT=i686
+   - os: linux
+     env:
+       - MB_PYTHON_VERSION=2.7
+       - PLAT=i686
+       - UNICODE_WIDTH=16
+
+before_install:
+    - source multibuild/common_utils.sh
+    - source multibuild/travis_steps.sh
+    - before_install
+
+install:
+    - wget $STAGING/$ZIP_FILE
+    - unzip $ZIP_FILE
+
+# VERSION and RC setup in travis build console > More options > Settings > Environment Variables with 'Display value in build log' enabled.
+script:
+    - build_wheel apache-beam-${VERSION} $PLAT
+
+after_success:
+    - ls -lh ${TRAVIS_BUILD_DIR}/wheelhouse/
+    - |
+      for artifact in ${TRAVIS_BUILD_DIR}/wheelhouse/*.*; do
+          mv $artifact ${artifact/$VERSION/$VERSION.$RC};
+      done
+    - source deploy_travis.sh
+    - deploy
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9dbdd7a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,56 @@
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+
+# Apache Beam Wheels
+
+## Overview
+
+`beam-wheels` is a helper repository of [apache beam](https://github.com/apache/beam), which helps a Release 
+Manager build python wheels on Linux/MacOS in a release process.
+
+## Structure
+
+There are 2 major parts in this repository.
+* [multibuild](https://github.com/matthew-brett/multibuild) as git submodule, helps build python wheels based on different os.
+
+* [travis](https://travis-ci.com/) configuration files, setups environment variables and deployment strategy.
+  
+  * `.travis.yml` contains a set of [environment variables](https://docs.travis-ci.com/user/environment-variables/) and steps of build process.
+  * `deploy_travis.sh` defines that final python wheels will be deployed to [dist.apache.org/dev](https://dist.apache.org/repos/dist/dev/beam/)
+    using svn with your apache credential.
+  * `config.sh` defines custom build steps.
+
+## User Guide
+
+* Fork this repo into your own github account.
+
+* Sign up [travis](https://travis-ci.com/) with your github account and add this folk beam-wheels repository into travis.
+
+* In travis build console > More options > Settings > Environment Variables:
+
+  * Add `RC` and `VERSION` with 'Display value in build log' enabled (e.g. RC=rc1, RELEASE=2.6.0).
+  * Add `APACHE_USERNAME` and `APACHE_SECRET` with 'Display value in build log' disabled(which encrypt your credential).
+  
+    __NOTE__: If you have special characters in your credential, please escape them following the [guide](https://docs.travis-ci.com/user/encryption-keys/#note-on-escaping-certain-symbols) properly.
+
+* Create and push a new branch(e.g. release_2_6_0) into your folk beam-wheels repository, which will trigger the travis build.
+
+* Confirm that build successful and wheels get staged on dist.apache.org.
+
+* Delete your apache credential in travis environment.
diff --git a/config.sh b/config.sh
new file mode 100644
index 0000000..e56371f
--- /dev/null
+++ b/config.sh
@@ -0,0 +1,13 @@
+# Define custom utilities
+# Test for OSX with [ -n "$IS_OSX" ]
+
+function pre_build {
+    # Any stuff that you need to do before you start building the wheels
+    # Runs in the root directory of this repository.
+    :
+}
+
+function run_tests {
+    # Runs tests on installed distribution from an empty directory
+    python --version
+}
diff --git a/deploy_travis.sh b/deploy_travis.sh
new file mode 100644
index 0000000..ffef872
--- /dev/null
+++ b/deploy_travis.sh
@@ -0,0 +1,17 @@
+# Define custom utilities for deploying on travis
+
+function deploy {
+  cd ${TRAVIS_BUILD_DIR}/wheelhouse
+  svn co ${BEAM_SVN_DIR}/${VERSION}
+  for artifact in *.whl; do
+    echo $artifact
+    mv $artifact ${VERSION}/${PYTHON_ARTIFACTS_DIR}/$artifact
+    svn add ${VERSION}/${PYTHON_ARTIFACTS_DIR}/$artifact
+    cd ${VERSION}
+    # Your apache credential is needed here in order to upload artifacts into dist.apache.org
+    # Please add APACHE_USERNAME and APACHE_SECRET in travis build console > More options > Settings > Environment Variables with 'Display value in build log' disabled.
+    # After build finishes, delete your environment variables.
+    svn commit --non-interactive --no-auth-cache --username "$APACHE_USERNAME" --password "$APACHE_SECRET" -m "Upload python wheels"
+    cd ..
+  done
+}