From 37e4747275f2afcc178490edd37b6295df4eb99c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20E=C3=9Flinger?= Date: Sun, 6 Oct 2019 18:41:46 +0800 Subject: [PATCH] feat: deploy to other repo (#36) * feat: Add EXTERNAL_REPOSITORY option * docs: Add section about EXTERNAL_REPOSITORY --- README.md | 23 +++++++++++++++++++++++ entrypoint.sh | 18 +++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7fe5201..e7e60d9 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ The above example step will deploy `./public` directory to `gh-pages` branch. - [⭐️ `GITHUB_TOKEN`](#%EF%B8%8F-github_token) - [⭐️ Suppressing empty commits](#%EF%B8%8F-suppressing-empty-commits) - [⭐️ Keeping existing files](#%EF%B8%8F-keeping-existing-files) + - [⭐️ Deploy to external repository](#%EF%B8%8F-deploy-to-external-repository) - [Tips and FAQ](#tips-and-faq) - [⭐️ Use the latest and specific release](#%EF%B8%8F-use-the-latest-and-specific-release) - [⭐️ How to add `CNAME`](#%EF%B8%8F-how-to-add-cname) @@ -242,6 +243,28 @@ For example: keepFiles: true ``` +### ⭐️ Deploy to external repository + +By default, your files are published to the repository which is running this action. +If you want to publish to another repository on GitHub, set the environment variable `EXTERNAL_REPOSITORY` to `/`. + +For example: + +```yaml +- name: Deploy + uses: peaceiris/actions-gh-pages@v2.4.0 + env: + ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }} + EXTERNAL_REPOSITORY: username/username.github.io + PUBLISH_BRANCH: master + PUBLISH_DIR: ./public +``` + +You can use `ACTIONS_DEPLOY_KEY` or `PERSONAL_TOKEN`. +When you use `ACTIONS_DEPLOY_KEY`, set your private key to the repository which includes this action and set your public key to your external repository. + +Be careful, `GITHUB_TOKEN` has no permission to access to external repositories. +
Back to TOC ☝️
diff --git a/entrypoint.sh b/entrypoint.sh index 5ab717d..482a10e 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -17,6 +17,13 @@ function skip() { } # check values +if [ -n "${EXTERNAL_REPOSITORY}" ]; then + PUBLISH_REPOSITORY=${EXTERNAL_REPOSITORY} +else + PUBLISH_REPOSITORY=${GITHUB_REPOSITORY} +fi +print_info "Deploy to ${PUBLISH_REPOSITORY}" + if [ -n "${ACTIONS_DEPLOY_KEY}" ]; then print_info "setup with ACTIONS_DEPLOY_KEY" @@ -26,20 +33,25 @@ if [ -n "${ACTIONS_DEPLOY_KEY}" ]; then echo "${ACTIONS_DEPLOY_KEY}" > /root/.ssh/id_rsa chmod 400 /root/.ssh/id_rsa - remote_repo="git@github.com:${GITHUB_REPOSITORY}.git" + remote_repo="git@github.com:${PUBLISH_REPOSITORY}.git" elif [ -n "${PERSONAL_TOKEN}" ]; then print_info "setup with PERSONAL_TOKEN" - remote_repo="https://x-access-token:${PERSONAL_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" + remote_repo="https://x-access-token:${PERSONAL_TOKEN}@github.com/${PUBLISH_REPOSITORY}.git" elif [ -n "${GITHUB_TOKEN}" ]; then print_info "setup with GITHUB_TOKEN" print_error "Do not use GITHUB_TOKEN, See #9" - remote_repo="https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" + if [ -n "${EXTERNAL_REPOSITORY}" ]; then + print_error "can not use GITHUB_TOKEN to deploy to a external repository" + exit 1 + fi + + remote_repo="https://x-access-token:${GITHUB_TOKEN}@github.com/${PUBLISH_REPOSITORY}.git" else print_error "not found ACTIONS_DEPLOY_KEY, PERSONAL_TOKEN, or GITHUB_TOKEN"