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;