1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-30 04:39:00 +01:00

Allow deploying phar to any github repository

Potentially useful for fork owners to test out phar deployment without affecting
the official psalm/phar repo.

To enable phar deployments from your own fork of psalm:

- Enable builds with Travis
- Create a github repository to hold recieve the built phar packages
- Create a new dedicated github user for the deployments
- From your main github account, invite the new user to collobrate on the phar repository
- From the new user's account, accept the invitation
- From the new user's account, obtain a 'new personal access token' ( https://github.com/settings/tokens/new ) with repo scope

- In travis settings for your fork of psalm, set two environment
variables:

- PHAR_REPO_SLUG - this should be the name the phar repo you set up earlier, e.g. fred/phar
- GITHUB_TOKEN - This is the personal access token of the new user you obtained above. Anyone who knows this token
                 can push to the repository, so keep it secret. Make sure 'Display value in build log' is
                 switched off'

Now any push to branches in your fork of psalm, should automatically
result in a commit containing the phar file in your phar repository.
This commit is contained in:
Barney Laurance 2019-06-07 22:58:23 +01:00 committed by Matthew Brown
parent 42cc201e9e
commit d44be5eb9c
2 changed files with 15 additions and 4 deletions

View File

@ -81,6 +81,5 @@ jobs:
skip_cleanup: true skip_cleanup: true
on: on:
all_branches: true all_branches: true
repo: vimeo/psalm
condition: ' "$TRAVIS_PULL_REQUEST" = "false" ' condition: ' "$TRAVIS_PULL_REQUEST" = "false" '
script: bin/travis-deploy-phar.sh script: bin/travis-deploy-phar.sh

View File

@ -2,16 +2,28 @@
set -e set -e
git clone https://${GITHUB_TOKEN}@github.com/psalm/phar.git > /dev/null 2>&1
if [[ ${TRAVIS_REPO_SLUG} != 'vimeo/psalm' && -z ${PHAR_REPO_SLUG} ]]; then
echo 'Not attempting phar deployment, as this is not vimeo/psalm, and $PHAR_REPO_SLUG is unset or empty'
exit 0;
fi;
PHAR_REPO_SLUG=${PHAR_REPO_SLUG:=psalm/phar}
git clone https://${GITHUB_TOKEN}@github.com/${PHAR_REPO_SLUG}.git phar > /dev/null 2>&1
set -x # don't do set x above this point to protect the GITHUB_TOKEN
cd phar cd phar
rm -rf * rm -rf *
cp ../build/psalm.phar ../build/psalm.phar.asc ../assets/psalm-phar/* . cp ../build/psalm.phar ../assets/psalm-phar/* .
cp ../build/psalm.phar.asc || true # not all users have GPG keys
mv dot-gitignore .gitignore mv dot-gitignore .gitignore
git config user.email "travis@travis-ci.org" git config user.email "travis@travis-ci.org"
git config user.name "Travis CI" git config user.name "Travis CI"
git add --all . git add --all .
git commit -m "Updated Psalm phar to commit ${TRAVIS_COMMIT}" git commit -m "Updated Psalm phar to commit ${TRAVIS_COMMIT}"
git push --quiet origin master git push --quiet origin master > /dev/null 2>&1
if [[ "$TRAVIS_TAG" != '' ]] ; then if [[ "$TRAVIS_TAG" != '' ]] ; then
git tag "$TRAVIS_TAG" git tag "$TRAVIS_TAG"