From a7824cd3a238190cbeedbec978800df3d94256ac Mon Sep 17 00:00:00 2001 From: Pascal Zimmermann Date: Fri, 18 Feb 2022 10:26:44 +0100 Subject: [PATCH] Add GitHub Enterprise support (#106) * Add GitHub url and GitHub Enterprise support * Add review improvements * Modify the default value to github.server_url --- README.md | 2 ++ action.yml | 4 ++++ start.js | 5 ++++- start.sh | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7eefeb9..99db162 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ With ease: - update new code placed in the repository, e.g. by running a linter on it, - track changes in script results using Git as archive, - publish page using GitHub-Pages, +- push changes to a hosted GitHub Enterprise Server instance, - mirror changes to a separate repository. ## Usage @@ -44,6 +45,7 @@ jobs: | name | value | default | description | | ---- | ----- | ------- | ----------- | | github_token | string | `${{ github.token }}` | [GITHUB_TOKEN](https://docs.github.com/en/free-pro-team@latest/actions/reference/authentication-in-a-workflow#using-the-github_token-in-a-workflow)
or a repo scoped
[Personal Access Token](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token). | +| github_url | string | `${{ github.server_url }}` | Specify the GitHub Enterprise or GitHub url| | branch | string | (default) | Destination branch to push changes.
Can be passed in using `${{ github.ref }}`. | | force | boolean | false | Determines if force push is used. | | tags | boolean | false | Determines if `--tags` is used. | diff --git a/action.yml b/action.yml index 7470474..d382fad 100644 --- a/action.yml +++ b/action.yml @@ -9,6 +9,10 @@ inputs: description: 'GitHub token or PAT token' required: true default: ${{ github.token }} + github_url: + description: 'GitHub url or GitHub Enterprise url' + required: true + default: ${{ github.server_url }} repository: description: 'Repository name to push. Default or empty value represents current github repository (${GITHUB_REPOSITORY})' default: '' diff --git a/start.js b/start.js index f47677c..dc7f9d4 100644 --- a/start.js +++ b/start.js @@ -42,12 +42,14 @@ const trim = (value, charlist) => trimLeft(trimRight(value, charlist)); const main = async () => { let branch = process.env.INPUT_BRANCH; const repository = trim(process.env.INPUT_REPOSITORY || process.env.GITHUB_REPOSITORY); + const github_url = trim(process.env.INPUT_GITHUB_URL) if (!branch) { const headers = { 'User-Agent': 'github.com/ad-m/github-push-action' }; if (process.env.INPUT_GITHUB_TOKEN) headers.Authorization = `token ${process.env.INPUT_GITHUB_TOKEN}`; - const body = JSON.parse(await get(`https://api.github.com/repos/${repository}`, { headers })) + const api_url = github_url === 'github.com' ? 'api.github.com' : github_url + '/api/v3'; + const body = JSON.parse(await get(`https://${api_url}/repos/${repository}`, { headers })) branch = body.default_branch; } await exec('bash', [path.join(__dirname, './start.sh')], { @@ -55,6 +57,7 @@ const main = async () => { ...process.env, INPUT_BRANCH: branch, INPUT_REPOSITORY: repository, + INPUT_GITHUB_URL: github_url, } }); }; diff --git a/start.sh b/start.sh index 21c3cbe..da88652 100755 --- a/start.sh +++ b/start.sh @@ -23,6 +23,6 @@ fi cd ${INPUT_DIRECTORY} -remote_repo="https://${GITHUB_ACTOR}:${INPUT_GITHUB_TOKEN}@github.com/${REPOSITORY}.git" +remote_repo="https://${GITHUB_ACTOR}:${INPUT_GITHUB_TOKEN}@${GITHUB_URL}/${REPOSITORY}.git" git push "${remote_repo}" HEAD:${INPUT_BRANCH} --follow-tags $_FORCE_OPTION $_TAGS;