From 2d4b2f14d09abc3088ac56fe6af2dcb3da86ee47 Mon Sep 17 00:00:00 2001 From: DRC Date: Thu, 20 Oct 2016 17:55:55 -0500 Subject: [PATCH] Travis: Deploy to S3 rather than SourceForge This has the following advantages: -- It doesn't require checking a private SSH key into the repository. (With SourceForge, an SSH key is the "keys to the kingdom".) -- If the S3 key is compromised, it is very easy to revoke it and generate a new one. -- The S3 bucket is isolated, so even if it becomes compromised, then the damage that one could do is limited. -- It's much easier to manage files through S3's web interface than through SourceForge. -- The files are served via HTTPS. -- Travis fully supports S3 as a deployment target, so this simplifies .travis.yml somewhat. --- .travis.yml | 49 ++++++++++++++++++++++++------------------------- ci/keys.enc | Bin 8720 -> 4624 bytes 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/.travis.yml b/.travis.yml index e352fd565..3c1c60483 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,9 +34,6 @@ matrix: compiler: gcc env: CONFIGURE_FLAGS="--without-simd" -addons: - ssh_known_hosts: shell.sourceforge.net - before_install: - if [ "${BUILD_OFFICIAL:-}" != "" ]; then if [ "$TRAVIS_OS_NAME" = "linux" ]; then @@ -46,8 +43,6 @@ before_install: openssl aes-256-cbc -K $encrypted_f92e8533f6f1_key -iv $encrypted_f92e8533f6f1_iv -in ci/keys.enc -out ci/keys -d && tar xf ci/keys && rm ci/keys && - mv ci/deploy_ljt ~/.ssh/id_rsa && - chmod 600 ~/.ssh/id_rsa && mv ci/gpgsign ~/src/buildscripts && gpg --import ci/sign_ljt && rm ci/sign_ljt; @@ -66,9 +61,11 @@ script: fi && if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker run -v $HOME/src/ljt.nightly:/root/src/ljt.nightly -v $HOME/src/buildscripts:/root/src/buildscripts -v $TRAVIS_BUILD_DIR:/root/src/libjpeg-turbo -v $HOME/.gnupg:/root/.gnupg -t dcommander/buildljt:latest bash -c "rpm --import http://pgp.mit.edu/pks/lookup?op=get\&search=0x0575F26BD5B3FDB1 && ~/src/buildscripts/buildljt -r file:///root/src/libjpeg-turbo $TRAVIS_BRANCH -v" && - sudo chown -R travis:travis ~/src/ljt.nightly; + sudo chown -R travis:travis ~/src/ljt.nightly && + mv ~/src/ljt.nightly/latest/log-$TRAVIS_OS_NAME.txt ~/src/ljt.nightly/latest/files/; else - PATH=$PATH:~/src/gas-preprocessor ~/src/buildscripts/buildljt -r file://$TRAVIS_BUILD_DIR $TRAVIS_BRANCH -v; + PATH=$PATH:~/src/gas-preprocessor ~/src/buildscripts/buildljt -r file://$TRAVIS_BUILD_DIR $TRAVIS_BRANCH -v && + mv ~/src/ljt.nightly/latest/log-$TRAVIS_OS_NAME.txt ~/src/ljt.nightly/latest/files/; fi && if [ -f .git/shallow.bak ]; then mv .git/shallow.bak .git/shallow; @@ -97,26 +94,28 @@ after_failure: fi fi -before_deploy: - - if [ "${BUILD_OFFICIAL:-}" != "" ]; then - eval "$(ssh-agent -s)" && - ssh-add; - fi - deploy: - - provider: script - script: - if [ "${BUILD_OFFICIAL:-}" != "" ]; then - mv ~/src/ljt.nightly/latest/log-$TRAVIS_OS_NAME.txt ~/src/ljt.nightly/latest/files/ && - ~/src/buildscripts/uploadljt dcommander $TRAVIS_BRANCH.$TRAVIS_OS_NAME; - fi + - provider: s3 + bucket: libjpeg-turbo-pr + access_key_id: + secure: bmFEt4H90/oR/LiN9XI+G26Pd6hiyrTw3+Vg3lS4ynwAYk33weApaVM8CyzQTgIhGSPzFStqVm9fTrb3RmrYP/PnNS+/surOeWLkH2DMRxvc0qmetBuNx1+vAN7FUkY8MO/u5uE9WXHAdp4e64pXcLXEbKmh+wgDm72b35WmMxErtHsGbpqy+j47rQkY4BJGi7XQzjjafaamfm4PzitsjkYYsgX8KLI16jyJEIirvyDHCPTn9wKR/jSjelDl+xTlgZGuCqmLCBW8f6JgycIspWjcYfO4WpWvkbnnI2sl3rCMPvOYc4wHe8SwzG0l4tM1PblZZDRcU7vjE15PmNf1Xfq9Vx3RpgBJv+UBNL/Vn0rKdpUCeEcfC12hxrske8DWpV6waBiDivjQJreE+YRXqa5YBhV/EdkoKYCqafnJvRASlOko9evje8F9KXTNsIGTT1HPmU9QM9WoJwLs/Xa3t09EmA2IjhcuAvvUmwCTuBBQVAlDjExiTT3Zhc9IYZDD92JgpAYLgridtzR87ElOxKhTkR4PowdI6UiLYArPjMFTjoz5Rivb9qNpbLaQC8HCYgLWxpWtUTzlW/9rM8izHpF8ySFHjO6E2aA9OJFc0tcbEGwAs2jLGD01OduU+DbBfsIkW0EgfXCPbD3FVgHsn3tkuzgO/bg20SM7uuCEYKQ= + secret_access_key: + secure: mrkOpEtqd2dEmi/qNJyX9vkME+6xgVBnXaRETKF7jT+flcQCQ0ayQkRkMV7lzGqq44XFg+n6Cpfn6oW0gH9RNdcC8YQvFP+kgzPx6nw6V/M31Vz6ySapJf59HBzVevf0NJkr0/1JoWsp1iq4IoN10WPzsCXZB55Io3Cf7DgpR+yiyBlWOctDfNdjJ97Juw3ENE80MHDf0fVqdUOIknQka1p68yAGkjar9kc2Oe7o94RzzmoqEn8tuFumiBQjIcuVRALsKqz+eIxBNgkL3BF9shVyRjOWLAeBhMPVFxZs5Dgd4ECbvU0i33gfmje3d6qqcw78N2lZaLefoVvWol3pOzVO133ewOSY9/lmpqEiRUU2ohEe8T4aSoS7posBW42itUTO4Y5w+eVOnHsm4sRQaI+/AXWTe7GPel+P8Qbe8Ya10A5gnpoag7o3raRDcHx+/qaZw1Af/u4XiAOYz3be3U90Qc+YMc/kS5i8BH0GXBbSfaWQ00CwRFlZQ3n1xUqmjC2CmjZTki3W/p7mEt0DjhcH9ZIXscK603sCC+mF6pEd9019k5fG/8fr2Y4Ptai9kd3BxZJCX9/jSoMfWOBbgkA5bRgHU0xrAj+p49qD6Ej9Xr8GE3+uebz3sEuhSFRnCKwKoOHOemfgevfO2y/jQXP677WPf3xQX7bVDfTFSHU= + acl: public_read + local-dir: $HOME/src/ljt.nightly/latest/files + upload-dir: $TRAVIS_BRANCH/$TRAVIS_OS_NAME on: branch: master - - provider: script - script: - if [ "${BUILD_OFFICIAL:-}" != "" ]; then - mv ~/src/ljt.nightly/latest/log-$TRAVIS_OS_NAME.txt ~/src/ljt.nightly/latest/files/ && - ~/src/buildscripts/uploadljt dcommander $TRAVIS_BRANCH.$TRAVIS_OS_NAME; - fi + condition: -n "$BUILD_OFFICIAL" + - provider: s3 + bucket: libjpeg-turbo-pr + access_key_id: + secure: bmFEt4H90/oR/LiN9XI+G26Pd6hiyrTw3+Vg3lS4ynwAYk33weApaVM8CyzQTgIhGSPzFStqVm9fTrb3RmrYP/PnNS+/surOeWLkH2DMRxvc0qmetBuNx1+vAN7FUkY8MO/u5uE9WXHAdp4e64pXcLXEbKmh+wgDm72b35WmMxErtHsGbpqy+j47rQkY4BJGi7XQzjjafaamfm4PzitsjkYYsgX8KLI16jyJEIirvyDHCPTn9wKR/jSjelDl+xTlgZGuCqmLCBW8f6JgycIspWjcYfO4WpWvkbnnI2sl3rCMPvOYc4wHe8SwzG0l4tM1PblZZDRcU7vjE15PmNf1Xfq9Vx3RpgBJv+UBNL/Vn0rKdpUCeEcfC12hxrske8DWpV6waBiDivjQJreE+YRXqa5YBhV/EdkoKYCqafnJvRASlOko9evje8F9KXTNsIGTT1HPmU9QM9WoJwLs/Xa3t09EmA2IjhcuAvvUmwCTuBBQVAlDjExiTT3Zhc9IYZDD92JgpAYLgridtzR87ElOxKhTkR4PowdI6UiLYArPjMFTjoz5Rivb9qNpbLaQC8HCYgLWxpWtUTzlW/9rM8izHpF8ySFHjO6E2aA9OJFc0tcbEGwAs2jLGD01OduU+DbBfsIkW0EgfXCPbD3FVgHsn3tkuzgO/bg20SM7uuCEYKQ= + secret_access_key: + secure: mrkOpEtqd2dEmi/qNJyX9vkME+6xgVBnXaRETKF7jT+flcQCQ0ayQkRkMV7lzGqq44XFg+n6Cpfn6oW0gH9RNdcC8YQvFP+kgzPx6nw6V/M31Vz6ySapJf59HBzVevf0NJkr0/1JoWsp1iq4IoN10WPzsCXZB55Io3Cf7DgpR+yiyBlWOctDfNdjJ97Juw3ENE80MHDf0fVqdUOIknQka1p68yAGkjar9kc2Oe7o94RzzmoqEn8tuFumiBQjIcuVRALsKqz+eIxBNgkL3BF9shVyRjOWLAeBhMPVFxZs5Dgd4ECbvU0i33gfmje3d6qqcw78N2lZaLefoVvWol3pOzVO133ewOSY9/lmpqEiRUU2ohEe8T4aSoS7posBW42itUTO4Y5w+eVOnHsm4sRQaI+/AXWTe7GPel+P8Qbe8Ya10A5gnpoag7o3raRDcHx+/qaZw1Af/u4XiAOYz3be3U90Qc+YMc/kS5i8BH0GXBbSfaWQ00CwRFlZQ3n1xUqmjC2CmjZTki3W/p7mEt0DjhcH9ZIXscK603sCC+mF6pEd9019k5fG/8fr2Y4Ptai9kd3BxZJCX9/jSoMfWOBbgkA5bRgHU0xrAj+p49qD6Ej9Xr8GE3+uebz3sEuhSFRnCKwKoOHOemfgevfO2y/jQXP677WPf3xQX7bVDfTFSHU= + acl: public_read + local-dir: $HOME/src/ljt.nightly/latest/files + upload-dir: $TRAVIS_BRANCH/$TRAVIS_OS_NAME on: branch: dev + condition: -n "$BUILD_OFFICIAL" diff --git a/ci/keys.enc b/ci/keys.enc index 7dbbbf46d6e978fca9c56745b3c3e8de2f4591e3..4cd333f5708397e18d4384182a4172f933e21d86 100644 GIT binary patch literal 4624 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 Gu5yFmO5$Yz literal 8720 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