Skip to content

Commit

Permalink
Updated README and Added a feature to make it login only
Browse files Browse the repository at this point in the history
  • Loading branch information
AkhileshNS committed Oct 20, 2020
1 parent f5c1f3b commit cdd8fc6
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 35 deletions.
98 changes: 66 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,15 @@ This is a very simple GitHub action that allows you to deploy to Heroku. The act
- [Deploy Subdirectory](#deploy-subdirectory)
- [Deploy Custom Branch](#deploy-custom-branch)
4. [Health Check](#health-check)
- [Advanced Usage](#advanced-usage)
- [Adding Delay](#adding-delay)
- [Rollback on healthcheck failure](#rollback-on-healthcheck-failure)
5. [Environment Variables](#environment-variables)
- [ENV File](#env-file)
6. [Procfile Passing](#procfile-passing)
7. [Important Notes](#important-notes)
8. [License](#license)
7. [Just Login](#just-login)
8. [Important Notes](#important-notes)
9. [License](#license)

## Getting Started

Expand All @@ -40,7 +45,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand All @@ -59,24 +64,25 @@ You learn more about GitHub Secrets [here](https://docs.github.com/en/actions/co
The action comes with additional options that you can use to configure your project's behavior on Heroku. You can setup these options under the "with" object as presented above:
| Name | Required | Description | Example |
| --------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| heroku_api_key | true | This will be used for authentication. You can find it in your heroku homepage account settings | \*\*\* |
| heroku_email | true | Email that you use with heroku | [email protected] |
| heroku_app_name | true | The appname to use for deploying/updating | demo-rest-api |
| buildpack | false | An optional buildpack to use when creating the heroku application | https://github.com/heroku/heroku-buildpack-static.git |
| branch | false | The branch that you would like to deploy to Heroku. Defaults to "HEAD" | master, dev, test |
| dontuseforce | false | Set this to true if you don't want to use --force when switching branches | true or false |
| usedocker | false | Will deploy using Dockerfile in project root | true or false |
| Name | Required | Description | Example |
| --------------------------- | -------- | ------------------------------------------------------------ | ----------------------------------------------------- |
| heroku_api_key | true | This will be used for authentication. You can find it in your heroku homepage account settings | \*\*\* |
| heroku_email | true | Email that you use with heroku | [email protected] |
| heroku_app_name | true | The appname to use for deploying/updating | demo-rest-api |
| buildpack | false | An optional buildpack to use when creating the heroku application | https://github.com/heroku/heroku-buildpack-static.git |
| branch | false | The branch that you would like to deploy to Heroku. Defaults to "HEAD" | master, dev, test |
| dontuseforce | false | Set this to true if you don't want to use --force when switching branches | true or false |
| usedocker | false | Will deploy using Dockerfile in project root | true or false |
| docker_heroku_process_type | false | Type of heroku process (web, worker, etc). This option only makes sense when usedocker enabled. Defaults to "web" (Thanks to [singleton11](https://github.com/singleton11) for adding this feature) | web, worker |
| docker_build_args | false | A list of args to pass into the Docker build. This option only makes sense when usedocker enabled. | NODE_ENV |
| appdir | false | Set if your app is located in a subdirectory | api, apis/python |
| healthcheck | false | A URL to which a healthcheck is performed (checks for 200 request) | https://demo-rest-api.herokuapp.com |
| checkstring | false | Value to check for when conducting healthcheck requests | ok |
| delay | false | Time (in seconds) to wait before performing healthcheck. Defaults to 0 seconds | 5 |
| procfile | false | Contents of the Procfile to save and deploy | web: npm start |
| rollbackonhealthcheckfailed | false | When set to true this will attempt to rollback to the previous release if the healthcheck fails | true or false |
| env_file | false | path to an env file (with respect to appdir) | /.env |
| docker_build_args | false | A list of args to pass into the Docker build. This option only makes sense when usedocker enabled. | NODE_ENV |
| appdir | false | Set if your app is located in a subdirectory | api, apis/python |
| healthcheck | false | A URL to which a healthcheck is performed (checks for 200 request) | https://demo-rest-api.herokuapp.com |
| checkstring | false | Value to check for when conducting healthcheck requests | ok |
| delay | false | Time (in seconds) to wait before performing healthcheck. Defaults to 0 seconds | 5 |
| procfile | false | Contents of the Procfile to save and deploy | web: npm start |
| rollbackonhealthcheckfailed | false | When set to true this will attempt to rollback to the previous release if the healthcheck fails | true or false |
| env_file | false | path to an env file (with respect to appdir) | /.env |
| justlogin | false | Set to true if you want the action to just login to Heroku and nothing else | true or false |
## Examples
Expand All @@ -99,7 +105,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand All @@ -126,7 +132,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand Down Expand Up @@ -165,7 +171,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand All @@ -192,7 +198,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand Down Expand Up @@ -221,7 +227,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand Down Expand Up @@ -250,7 +256,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand Down Expand Up @@ -281,7 +287,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand Down Expand Up @@ -311,7 +317,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand Down Expand Up @@ -341,7 +347,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand Down Expand Up @@ -374,7 +380,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand Down Expand Up @@ -409,7 +415,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand Down Expand Up @@ -456,7 +462,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/heroku-deploy@v3.5.7 # This is the action
- uses: akhileshns/heroku-deploy@v3.6.8 # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "YOUR APP's NAME" #Must be unique in Heroku
Expand All @@ -466,6 +472,34 @@ jobs:

Keep in mind this won't work if you are using Docker.

## Just Login

GitHub Actions does come with the heroku cli pre-installed (this is what is used by the Action to deploy applications). So if you wish to use the heroku cli and just need to login, you can use the **justlogin** option of the Heroku Deploy Action

_.github/workflows/main.yml_

```yaml
name: Deploy

on:
push:
branches:
- master # Changing the branch here would also work

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: akhileshns/[email protected] # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: ""
heroku_email: "YOUR EMAIL"
justlogin: true
- run: heroku auth:whoami
```
## Important Notes
- You can check this repo's [_.github/workflows/main.yml_](https://github.com/AkhileshNS/heroku-deploy/blob/master/.github/workflows/main.yml) for example use cases of the action in use. Additionally the APIs for these use cases can be found in the [_tests_](https://github.com/AkhileshNS/heroku-deploy/tree/master/tests) folder of the repo
Expand Down
4 changes: 4 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ inputs:
description: "Path to an localized env file"
required: false
default: ""
justlogin:
description: "Set to true if you want the action to just login to Heroku and nothing else"
required: false
default: "false"
outputs:
status:
description: "The Success/Failure of the action"
Expand Down
15 changes: 12 additions & 3 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ let heroku = {
app_name: core.getInput("heroku_app_name"),
buildpack: core.getInput("buildpack"),
branch: core.getInput("branch"),
dontuseforce: core.getInput("dontuseforce") === "true" ? true : false,
usedocker: core.getInput("usedocker") === "true" ? true : false,
dontuseforce: core.getInput("dontuseforce") === "false" ? false : true,
usedocker: core.getInput("usedocker") === "false" ? false : true,
dockerHerokuProcessType: core.getInput("docker_heroku_process_type"),
dockerBuildArgs: core.getInput("docker_build_args"),
appdir: core.getInput("appdir"),
Expand All @@ -126,8 +126,9 @@ let heroku = {
delay: parseInt(core.getInput("delay")),
procfile: core.getInput("procfile"),
rollbackonhealthcheckfailed:
core.getInput("rollbackonhealthcheckfailed") === "true" ? true : false,
core.getInput("rollbackonhealthcheckfailed") === "false" ? false : true,
env_file: core.getInput("env_file"),
justlogin: core.getInput("justlogin") === "false" ? false : true,
};

// Formatting
Expand All @@ -154,6 +155,14 @@ if (heroku.dockerBuildArgs) {
(async () => {
// Program logic
try {
// Just Login
if (heroku.justlogin) {
execSync(createCatFile(heroku));
console.log("Created and wrote to ~/.netrc");
execSync("heroku login");
return;
}

execSync(`git config user.name "Heroku-Deploy"`);
execSync(`git config user.email "${heroku.email}"`);
const status = execSync("git status --porcelain").toString().trim();
Expand Down

0 comments on commit cdd8fc6

Please sign in to comment.