diff --git a/.travis.yml b/.travis.yml index 05e3ccb9..ddaec349 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,6 +23,7 @@ addons: env: global: - SDL_VERSION=2.0.8 + - DEPLOY_BRANCH=newengine git: depth: 50 submodules: true @@ -35,18 +36,40 @@ matrix: - os: osx - os: windows env: PYTHONENCODING=UTF-8 -before_script: - - sh scripts/travis_common_deps.sh - - sh scripts/travis_${TRAVIS_OS_NAME}_deps.sh - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export ANDROID_HOME=$PWD/android-sdk-linux; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:$PWD/android-ndk; fi -script: - - sh scripts/build_${TRAVIS_OS_NAME}_engine.sh -# - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sh scripts/build_android_engine.sh; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sh scripts/build_mingw_engine.sh; fi -after_script: - - cd ${TRAVIS_BUILD_DIR} - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ccache --show-stats; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sh scripts/travis-deploy.sh newengine Xash3DFWGS-i386.AppImage xash3d-mingw.7z; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sh scripts/travis-deploy.sh newengine xash3d-osx.tar.bz2; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then sh scripts/travis-deploy.sh newengine xash3d-vc.7z; fi + +jobs: + allow_failures: + - os: osx + - os: windows + - os: linux + include: + - stage: init + name: "Initialize webdav cache" + os: linux + cache: false + script: + - scripts/yadisk_clear.sh + - stage: build + name: "Build engine and upload to webdav cache" + before_script: + - sh scripts/travis_common_deps.sh + - sh scripts/travis_${TRAVIS_OS_NAME}_deps.sh + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export ANDROID_HOME=$PWD/android-sdk-linux; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:$PWD/android-ndk; fi + script: + - sh scripts/build_${TRAVIS_OS_NAME}_engine.sh + # - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sh scripts/build_android_engine.sh; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sh scripts/build_mingw_engine.sh; fi + after_script: + - cd ${TRAVIS_BUILD_DIR} + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ccache --show-stats; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sh scripts/yadisk_upload.sh Xash3DFWGS-i386.AppImage xash3d-mingw.7z; fi + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sh scripts/yadisk_upload.sh xash3d-osx.tar.bz2; fi + - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then sh scripts/yadisk_upload.sh xash3d-vc.7z; fi + - stage: deploy + name: "Deploy to github" + os: linux + cache: false + script: + - sh scripts/travis-deploy.sh Xash3DFWGS-i386.AppImage xash3d-mingw.7z xash3d-osx.tar.bz2 xash3d-vc.7z + diff --git a/scripts/travis-deploy.sh b/scripts/travis-deploy.sh index 0b0e5f0b..560c7f8a 100755 --- a/scripts/travis-deploy.sh +++ b/scripts/travis-deploy.sh @@ -10,63 +10,17 @@ if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then die "Travis should not deploy from pull requests" fi -commit_files() -{ - git add . - git commit -m "Latest travis deploy $TRAVIS_COMMIT" -} - -force_push() -{ - git push -q --force travis-deploy-public $SOURCE_NAME-$TRAVIS_BRANCH >/dev/null 2>/dev/null -} - append_readme() { for arg in $FILES; do - echo \* [$arg]\(https://github.com/FWGS/xash3d-deploy/blob/$SOURCE_NAME-$TRAVIS_BRANCH/$arg\?raw\=true\) >> README.md + echo \* [$arg]\(https://github.com/FWGS/xash3d-deploy/blob/$DEPLOY_BRANCH-$TRAVIS_BRANCH/$arg\?raw\=true\) >> README.md echo >> README.md done } -download_repo_and_copy_files() -{ - git clone https://github.com/FWGS/xash3d-deploy -b $SOURCE_NAME-$TRAVIS_BRANCH --depth=1 - cp -a $FILES xash3d-deploy/ - cd xash3d-deploy - git remote add travis-deploy-public https://FWGS-deployer:${GH_TOKEN}@github.com/FWGS/xash3d-deploy.git -} - -init_repo_and_copy_files() -{ - mkdir xash3d-deploy - cp -a $FILES xash3d-deploy - cd xash3d-deploy - git init - git remote add travis-deploy-public https://FWGS-deployer:${GH_TOKEN}@github.com/FWGS/xash3d-deploy.git - git checkout -b $SOURCE_NAME-$TRAVIS_BRANCH -} - -push_until_success() -{ - git push travis-deploy-public $SOURCE_NAME-$TRAVIS_BRANCH - - # probably will never occur, just in case - count=0 - while [ $? -ne 0 ] && [ $count -lt 5 ] - do - ((count++)) - sleep 20s - git pull travis-deploy-public $SOURCE_NAME-$TRAVIS_BRANCH -X theirs || die "Can't pull from repository!" - append_readme # Re-add lost readme lost during merge - commit_files - git push travis-deploy-public $SOURCE_NAME-$TRAVIS_BRANCH - done -} - generate_readme() { - echo \# $TRAVIS_BRANCH branch autobuilds from $SOURCE_NAME >> README.md + echo \# $TRAVIS_BRANCH branch autobuilds from $DEPLOY_BRANCH >> README.md echo >> README.md echo Short changelog: >> README.md echo \`\`\` >> README.md @@ -81,10 +35,7 @@ generate_readme() echo $TRAVIS_COMMIT > commit.txt } -SOURCE_NAME=$1 -shift - -PUSHED_COMMIT=$(curl --fail https://raw.githubusercontent.com/FWGS/xash3d-deploy/$SOURCE_NAME-$TRAVIS_BRANCH/commit.txt) +PUSHED_COMMIT=$(curl --fail https://raw.githubusercontent.com/FWGS/xash3d-deploy/$DEPLOY_BRANCH-$TRAVIS_BRANCH/commit.txt) echo "Pushed commit: $PUSHED_COMMIT" if [ ! -z "$PUSHED_COMMIT" ]; then REV_RANGE="HEAD...$PUSHED_COMMIT" @@ -97,18 +48,16 @@ git config --global user.email FWGS-deployer@users.noreply.github.com FILES=$* -if [ "$TRAVIS_COMMIT" != "$PUSHED_COMMIT" ]; then - # Create new repo with new files - init_repo_and_copy_files - generate_readme - commit_files - force_push -else - # download repo and commit new files - download_repo_and_copy_files - append_readme - commit_files - push_until_success -fi +# Create new repo with new files +mkdir xash3d-deploy +cd xash3d-deploy +git init +git remote add travis-deploy-public https://FWGS-deployer:${GH_TOKEN}@github.com/FWGS/xash3d-deploy.git +git checkout -b $DEPLOY_BRANCH-$TRAVIS_BRANCH +sh yadisk_download.sh $DEPLOY_BRANCH $FILES +generate_readme +git add . +git commit -m "Latest travis deploy $TRAVIS_COMMIT" +git push -q --force travis-deploy-public $DEPLOY_BRANCH-$TRAVIS_BRANCH >/dev/null 2>/dev/null exit 0 diff --git a/scripts/yadisk_clear.sh b/scripts/yadisk_clear.sh new file mode 100644 index 00000000..98fdc03c --- /dev/null +++ b/scripts/yadisk_clear.sh @@ -0,0 +1,5 @@ +FOLDER_NAME=$DEPLOY_BRANCH-$TRAVIS_BRANCH +WEBDAV_SRV=https://$YANDEX_DISK_USER:$YANDEX_DISK_TOKEN@webdav.yandex.ru + +curl -X DELETE $WEBDAV_SRV/$FOLDER_NAME +curl -X MKCOL $WEBDAV_SRV/$FOLDER_NAME diff --git a/scripts/yadisk_download.sh b/scripts/yadisk_download.sh new file mode 100644 index 00000000..0c0eb06e --- /dev/null +++ b/scripts/yadisk_download.sh @@ -0,0 +1,6 @@ +FOLDER_NAME=$DEPLOY_BRANCH-$TRAVIS_BRANCH +WEBDAV_SRV=https://$YANDEX_DISK_USER:$YANDEX_DISK_TOKEN@webdav.yandex.ru + +for file in $*; do + curl -L $WEBDAV_SRV/$FOLDER_NAME/$file -o $file +done diff --git a/scripts/yadisk_upload.sh b/scripts/yadisk_upload.sh new file mode 100644 index 00000000..b4d72dc1 --- /dev/null +++ b/scripts/yadisk_upload.sh @@ -0,0 +1,6 @@ +FOLDER_NAME=$DEPLOY_BRANCH-$TRAVIS_BRANCH +WEBDAV_SRV=https://$YANDEX_DISK_USER:$YANDEX_DISK_TOKEN@webdav.yandex.ru + +for file in $*; do + curl -T $file $WEBDAV_SRV/$FOLDER_NAME +done