Browse Source

scripts: travis: use stages, use yandex disk as temporary place for build artifacts

pull/2/head
Alibek Omarov 6 years ago
parent
commit
880a9651d8
  1. 29
      .travis.yml
  2. 75
      scripts/travis-deploy.sh
  3. 5
      scripts/yadisk_clear.sh
  4. 6
      scripts/yadisk_download.sh
  5. 6
      scripts/yadisk_upload.sh

29
.travis.yml

@ -23,6 +23,7 @@ addons:
env: env:
global: global:
- SDL_VERSION=2.0.8 - SDL_VERSION=2.0.8
- DEPLOY_BRANCH=newengine
git: git:
depth: 50 depth: 50
submodules: true submodules: true
@ -35,6 +36,21 @@ matrix:
- os: osx - os: osx
- os: windows - os: windows
env: PYTHONENCODING=UTF-8 env: PYTHONENCODING=UTF-8
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: before_script:
- sh scripts/travis_common_deps.sh - sh scripts/travis_common_deps.sh
- sh scripts/travis_${TRAVIS_OS_NAME}_deps.sh - sh scripts/travis_${TRAVIS_OS_NAME}_deps.sh
@ -47,6 +63,13 @@ script:
after_script: after_script:
- cd ${TRAVIS_BUILD_DIR} - cd ${TRAVIS_BUILD_DIR}
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ccache --show-stats; fi - 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" == "linux" ]]; then sh scripts/yadisk_upload.sh 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" == "osx" ]]; then sh scripts/yadisk_upload.sh xash3d-osx.tar.bz2; fi
- if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then sh scripts/travis-deploy.sh newengine xash3d-vc.7z; 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

75
scripts/travis-deploy.sh

@ -10,63 +10,17 @@ if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
die "Travis should not deploy from pull requests" die "Travis should not deploy from pull requests"
fi 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() append_readme()
{ {
for arg in $FILES; do 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 echo >> README.md
done 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() 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 >> README.md
echo Short changelog: >> README.md echo Short changelog: >> README.md
echo \`\`\` >> README.md echo \`\`\` >> README.md
@ -81,10 +35,7 @@ generate_readme()
echo $TRAVIS_COMMIT > commit.txt echo $TRAVIS_COMMIT > commit.txt
} }
SOURCE_NAME=$1 PUSHED_COMMIT=$(curl --fail https://raw.githubusercontent.com/FWGS/xash3d-deploy/$DEPLOY_BRANCH-$TRAVIS_BRANCH/commit.txt)
shift
PUSHED_COMMIT=$(curl --fail https://raw.githubusercontent.com/FWGS/xash3d-deploy/$SOURCE_NAME-$TRAVIS_BRANCH/commit.txt)
echo "Pushed commit: $PUSHED_COMMIT" echo "Pushed commit: $PUSHED_COMMIT"
if [ ! -z "$PUSHED_COMMIT" ]; then if [ ! -z "$PUSHED_COMMIT" ]; then
REV_RANGE="HEAD...$PUSHED_COMMIT" REV_RANGE="HEAD...$PUSHED_COMMIT"
@ -97,18 +48,16 @@ git config --global user.email FWGS-deployer@users.noreply.github.com
FILES=$* FILES=$*
if [ "$TRAVIS_COMMIT" != "$PUSHED_COMMIT" ]; then
# Create new repo with new files # Create new repo with new files
init_repo_and_copy_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 generate_readme
commit_files git add .
force_push git commit -m "Latest travis deploy $TRAVIS_COMMIT"
else git push -q --force travis-deploy-public $DEPLOY_BRANCH-$TRAVIS_BRANCH >/dev/null 2>/dev/null
# download repo and commit new files
download_repo_and_copy_files
append_readme
commit_files
push_until_success
fi
exit 0 exit 0

5
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

6
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

6
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
Loading…
Cancel
Save