From 38d3e56248adcd66bb0944d8746cde8e59a2c97b Mon Sep 17 00:00:00 2001 From: AkhileshNS Date: Sat, 26 Dec 2020 16:19:56 +0530 Subject: [PATCH] Added option to pass "team" --- README.md | 73 ++++++++++++++++++++++++++++++++++++++---------------- action.yml | 4 +++ index.js | 6 +++-- 3 files changed, 59 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 211a7ca..6a246a0 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,10 @@ This is a very simple GitHub action that allows you to deploy to Heroku. The act 5. [Environment Variables](#environment-variables) - [ENV File](#env-file) 6. [Procfile Passing](#procfile-passing) -7. [Just Login](#just-login) -8. [Important Notes](#important-notes) -9. [License](#license) +7. [Deploying to a team](#deploying-to-a-team) +8. [Just Login](#just-login) +9. [Important Notes](#important-notes) +10. [License](#license) ## Getting Started @@ -64,26 +65,27 @@ 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 | nsakhilesh02@gmail.com | -| 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 | nsakhilesh02@gmail.com | +| 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 | -| justlogin | false | Set to true if you want the action to just login to Heroku and nothing else | true or false | -| region | false | The region in which you would like to deploy a server | eu or dublin | +| 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 | +| region | false | The region in which you would like to deploy a server | eu or dublin | +| team | false | If deploying to an organization, then specify the name of the team or organization here | team-xyz | ## Examples @@ -473,6 +475,33 @@ jobs: Keep in mind this won't work if you are using Docker. +## Deploying to a team + +If you are an enterprise user and wish to deploy your app to a specific team, you can do so by just passing the **team** option to the action: + +_.github/workflows/main.yml_ + +```yaml +name: Deploy + +on: + push: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: akhileshns/heroku-deploy@v3.7.8 + with: + heroku_api_key: ${{secrets.HEROKU_API_KEY}} + heroku_app_name: "YOUR APP's NAME" + heroku_email: "YOUR EMAIL" + team: "THE TEAM's NAME" +``` + ## 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 diff --git a/action.yml b/action.yml index 2337b54..6a022ed 100644 --- a/action.yml +++ b/action.yml @@ -71,6 +71,10 @@ inputs: description: "The region in which you would like to deploy a server" required: false default: "" + team: + description: "If deploying to an organization, then specify the name of the team or organization here" + required: false + default: "" outputs: status: description: "The Success/Failure of the action" diff --git a/index.js b/index.js index cb6d7cf..8818796 100644 --- a/index.js +++ b/index.js @@ -16,7 +16,7 @@ machine git.heroku.com password ${api_key} EOF`; -const addRemote = ({ app_name, buildpack, region }) => { +const addRemote = ({ app_name, buildpack, region, team }) => { try { execSync("heroku git:remote --app " + app_name); console.log("Added git remote heroku"); @@ -25,7 +25,8 @@ const addRemote = ({ app_name, buildpack, region }) => { "heroku create " + app_name + (buildpack ? " --buildpack " + buildpack : "") + - (region ? " --region " + region : "") + (region ? " --region " + region : "") + + (team ? "--team" + team : "") ); console.log("Successfully created a new heroku app"); } @@ -131,6 +132,7 @@ let heroku = { env_file: core.getInput("env_file"), justlogin: core.getInput("justlogin") === "false" ? false : true, region: core.getInput("region"), + team: core.getInput("team"), }; // Formatting