diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/.DS_Store differ diff --git a/README.md b/README.md index 6d3e0008..bf0cd95f 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,6 @@ action "Deploy to GitHub Pages" { BUILD_SCRIPT = "npm install && npm run-script build" BRANCH = "gh-pages" FOLDER = "build" - COMMIT_EMAIL = "github-pages-deployer@jives.dev" - COMMIT_NAME = "GitHub Pages Deployer" } secrets = ["ACCESS_TOKEN"] } @@ -34,17 +32,18 @@ action "Deploy to GitHub Pages" { ## Configuration 📁 -The `env` portion of the workflow **must** be configured before the action will work. Below you'll find a description of what each one does. +The `secrets` and `env` portion of the workflow **must** be configured before the action will work. Below you'll find a description of what each one does. -| Key | Value Information | Required | -| ------------- | ------------- | ------------- | -| `BUILD_SCRIPT` | If you require a build script to compile your code prior to pushing it you can add the script here. The Docker container which powers the action runs Node which means `npm` commands are valid. If you're using a static site generator such as Jekyll I'd suggest compiling the code prior to pushing it to your base branch. | **No** | -| `BRANCH` | This is the branch you wish to deploy to, for example `gh-pages` or `docs`. | **Yes** | -| `BASE_BRANCH` | The base branch of your repository which you'd like to checkout prior to deploying. This defaults to `master`. | **No** | -| `FOLDER` | The folder in your repository that you want to deploy. If your build script compiles into a directory named `build` you'd put it here. | **Yes** | -| `COMMIT_NAME` | Used to sign the commit, this should be your name. Defaults to `gh-pages-deploy@jives.dev` | **No** | -| `COMMIT_EMAIL` | Used to sign the commit, this should be your email. Defaults to `GitHub Pages Deployer` | **No** | +| Key | Value Information | Type | Required | +| ------------- | ------------- | ------------- | ------------- | +| `ACCESS_TOKEN` | In order for GitHub to trigger the rebuild of your page you must provide the action with a GitHub personal access token. You can [learn more about how to generate one here](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line). This **should be stored as a secret.** | `secrets` | **Yes** | +| `BRANCH` | This is the branch you wish to deploy to, for example `gh-pages` or `docs`. | `env` | **Yes** | +| `FOLDER` | The folder in your repository that you want to deploy. If your build script compiles into a directory named `build` you'd put it here. | `env` | **Yes** | +| `BASE_BRANCH` | The base branch of your repository which you'd like to checkout prior to deploying. This defaults to `master`. | `env` | **No** | +| `BUILD_SCRIPT` | If you require a build script to compile your code prior to pushing it you can add the script here. The Docker container which powers the action runs Node which means `npm` commands are valid. If you're using a static site generator such as Jekyll I'd suggest compiling the code prior to pushing it to your base branch. | `env` | **No** | +| `COMMIT_NAME` | Used to sign the commit, this should be your name. If not provided it will default to `username@users.noreply.github.com` | `env` | **No** | +| `COMMIT_EMAIL` | Used to sign the commit, this should be your email. If not provided it will default to your username. | `env` | **No** | -With the action correctly configured you should see something similar to this in your GitHub action workflow editor. +With the action correctly configured you should see something similar to this in your GitHub actions workflow editor. ![Example](screenshot.png) diff --git a/entrypoint.sh b/entrypoint.sh index f8fdc521..877d996b 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,4 +1,11 @@ #!/bin/sh -l + +if [ -z "$ACCESS_TOKEN" ] +then + echo "You must provide the action with a GitHub Personal Access Token secret in order to deploy." + exit 1 +fi + if [ -z "$BRANCH" ] then echo "You must provide the action with a branch name it should deploy to, for example gh-pages or docs." @@ -11,28 +18,39 @@ then exit 1 fi -## Initializes Variables +if [ -z "$COMMIT_EMAIL" ] +then + COMMIT_EMAIL="${GITHUB_ACTOR}@users.noreply.github.com" +fi + +if [ -z "$COMMIT_NAME" ] +then + COMMIT_NAME="${GITHUB_ACTOR}" +fi + +## Initializes the repository path using the access token. REPOSITORY_PATH="https://${ACCESS_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" && \ # Installs Git. apt-get update && \ apt-get install -y git && \ -# Re-directs to the the Github workspace. +# Directs the action to the the Github workspace. cd $GITHUB_WORKSPACE && \ # Configures Git and checks out the base branch. git init && \ -git config --global user.email "${COMMIT_EMAIL:-gh-pages-deploy@jives.dev}" && \ -git config --global user.name "${COMMIT_NAME:-Github Pages Deployer}" && \ +git config --global user.email "${COMMIT_EMAIL}" && \ +git config --global user.name "${COMMIT_NAME}" && \ git checkout "${BASE_BRANCH:-master}" && \ -# Builds the project if applicable. +# Builds the project if a build script is provided. echo "Running build scripts... $BUILD_SCRIPT" eval "$BUILD_SCRIPT" # Commits the data to Github. +echo "Deploying to GitHub..." && \ git add -f $FOLDER && \ -git commit -m "Deploying $(date +"%T")" && \ -git push --force $REPOSITORY_PATH `git subtree split --prefix $FOLDER master`:$BRANCH - +git commit -m "Deploying to ${BRANCH} - $(date +"%T")" && \ +git push $REPOSITORY_PATH `git subtree split --prefix $FOLDER master`:$BRANCH --force && \ +echo "Deployment Succesful!" \ No newline at end of file