Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.
Contributions to this product are released to the public under the project's open source license.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
To allow your Jira instance to communicate with your locally running instance of the server, you need to have either ngrok or localtunnel installed.
Install ngrok:
brew cask install ngrok
Or install localtunnel:
npm install -g localtunnel
A tunnel will automatically be created using one of the installed tools when you later start the server (see tunnel.js
). This tunnel will expose a URL through which internet traffic can reach your local machine. This URL will be called DOMAIN
in the rest of this document.
Create a new GitHub App, setting the following config:
- GitHub App name: Anything you want, but it must be unique across GitHub.
E.g. my-test-app
- Homepage URL:
https://github.com/apps/my-test-app
- Callback URL:
https://DOMAIN/github/callback
- Setup URL:
https://DOMAIN/github/configuration
- Webhook URL:
https://DOMAIN/github/events
- Webhook Secret:
development
Your new GitHub app will need the following repository permissions:
- Contents: Read & write
- Issues: Read & write
- Metadata: Read-only
- Pull requests: Read & write
It will also need to subscribe to the following events:
- Commit comment
- Create
- Delete
- Issue comment
- Issues
- Pull request
- Pull request review
- Push
Once you've set up your GitHub app and cloned this repo, copy the content from .env.example
and paste it to a new file called .env
, with the following configuration:
APP_ID
andGITHUB_CLIENT_ID
: Copy these values over from your new GitHub app page.APP_URL
:https://DOMAIN
GITHUB_CLIENT_SECRET
: You'll need to generate a new one on your GitHub app page by hitting theGenerate a new client secret
button. Copy and paste the generated secret.TUNNEL_SUBDOMAIN
: the subdomain you want to use to allow access from the internet to your local machine (just replace <yourname> with your name)PRIVATE_KEY_PATH
: You'll also need to generate a new private key on your GitHub app page, download it, move it to the source root of this repo, and setPRIVATE_KEY_PATH=<your-private-key-name>.pem
ATLASSIAN_URL
: The URL for the Jira instance you're testing it. If you don't have one now, please set the value of this variable after going through the step 1 of "Configuring the Jira instance" section of this document.WEBHOOK_PROXY_URL
: https://DOMAIN/github/eventsSTORAGE_SECRET
: It needs to be set to a 32 char secret (anything else fails). You can generate one by runningopenssl rand -hex 32 | pbcopy
in your terminal and paste directly to your .env file.INSTANCE_NAME
: choose a name for your instanceWEBHOOK_PROXY_URL
:https://DOMAIN/github/events
Please ensure that you have homebrew installed. Instructions for setting this application up on an OS other than OSX are currently not outlined.
This app is written in ES6 JavaScript and runs on Node.js.
Required version of Node: v12.x
Install the dependencies by running:
$ script/bootstrap
This will install all dependencies, including node
and postgres
, which are required to run the app. However, we recommend running postgres
and redis
in docker instead of doing it locally. You can do so by running: docker-compose up
.
Note: Most certainly, if you are running Postgres in docker, it won’t have any info about your local user, so the superuser will be named postgres instead of having the same name as your Mac user. You can fix this by:
- Open db/config.json
- Add "username": "postgres", inside "development" and "test".
- Be careful to not commit the changes in this file!
To set up the databases and keep their schemas up to date, run:
$ script/db_create
You can verify that your code is set up correctly by running:
$ npm test
When you are developing you will prefer to run the app and automatically restart it when you do changes to the source code. In that case you should use:
$ script/server
For production, you should just use npm run start
.
- Create a new free developer instance on Jira Cloud.
- From the header menu, select Apps -> Manage your apps.
- Verify the filter is set to
User-installed
, and select Settings beneath the User-installed apps table. - On the Settings pop-up, add Enable development mode and click Apply. Refresh the page.
- On the right side of the header, there should now appear a button Upload app. Click it and enter
https://DOMAIN/jira/atlassian-connect.json
- Click Upload.
- That's it! You're done. 🎉
- Fork and clone the repository.
- Configure and install the dependencies:
npm install
- Make sure the tests pass on your machine:
npm test
, note: these tests also apply the linter, so no need to lint seperately - Create a new branch:
git checkout -b my-branch-name
- Make your change, add tests, and make sure the tests still pass
- Push to your fork and submit a pull request
- Pat your self on the back and wait for your pull request to be reviewed and merged.
Here are a few things you can do that will increase the likelihood of your pull request being accepted:
- Follow the style guide which is using standard. Any linting errors should be shown when running
npm test
- Write and update tests.
- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
- Write a good commit message.
Work in Progress pull request are also welcome to get feedback early on, or if there is something blocking you.