Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/javierarce/glitchub
A step by step guide on how to keep a Glitch project in sync with a GitHub repo
https://github.com/javierarce/glitchub
deploy github glitch tutorial webhooks
Last synced: 3 months ago
JSON representation
A step by step guide on how to keep a Glitch project in sync with a GitHub repo
- Host: GitHub
- URL: https://github.com/javierarce/glitchub
- Owner: javierarce
- License: mit
- Created: 2019-03-18T10:07:47.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-12-25T15:50:01.000Z (about 5 years ago)
- Last Synced: 2024-10-03T12:33:21.922Z (4 months ago)
- Topics: deploy, github, glitch, tutorial, webhooks
- Homepage:
- Size: 5.6 MB
- Stars: 43
- Watchers: 1
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# How to keep a Glitch project in sync with a GitHub repo
You can follow the "initial steps" below or just [remix this glitch project](https://glitch.com/~glitchub) and continue in the next section.
Click here to reveal the initial steps
1. Go to [glitch.com](http://glitch.com) and create a new `hello-express` app.
2. Open the `package.json` file and add the following packages:- `node-cmd`
- `body-parser`3. Open the `server.js` file and load the following libraries:
```js
const cmd = require('node-cmd');
const crypto = require('crypto');
const bodyParser = require('body-parser');
```4. Look for `app.use(express.static('public'));` and add the following line below:
`app.use(bodyParser.json());`
5. Create a post endpoint to receive the GitHub webhook:
```js
const onWebhook = (req, res) => {
let hmac = crypto.createHmac('sha1', process.env.SECRET);
let sig = `sha1=${hmac.update(JSON.stringify(req.body)).digest('hex')}`;if (req.headers['x-github-event'] === 'push' && sig === req.headers['x-hub-signature']) {
cmd.run('chmod 777 ./git.sh');
cmd.get('./git.sh', (err, data) => {
if (data) {
console.log(data);
}
if (err) {
console.log(err);
}
})cmd.run('refresh');
}return res.sendStatus(200);
}app.post('/git', onWebhook);
```6. Create a `git.sh` file adding the following lines:
```bash
#/bin/sh# Fetch the newest code
git fetch origin master# Hard reset
git reset --hard origin/master# Force pull
git pull origin master --force
```*This file will be in charge of pulling the changes from your Github repo.*
1. Open the `.env` file and set a SECRET:
```bash
SECRET=cirrus-socrates-particle-decibel-hurricane-dolphin-tulip
```2. Open the glitch console for your project and generate a new SSH key with:
```bash
ssh-keygen
```*Just press `` to accept all the questions.*
3. Read the content of the `.ssh/id_rsa.pub` file with:
```bash
cat .ssh/id_rsa.pub
```*Then copy the string to your clipboard.*
4. Create a new GitHub repo with a `README.me` file (or any other file, it's important that the project is not empty).
5. Go to the `deploy keys` section of the settings page of your GitHub project.
6. Click on `Add deploy key` and add the SSH key you generated in the step #8; add `glitch.com` in the title field.
7. Check the `Allow write access` box too.
8. Now open the `webhooks` section and add a new webhook (replacing `PROJECT_NAME` with your actual project name):```html
Payload URL: https://PROJECT_NAME.glitch.me/git
Content type: application/json
Secret: use the SECRET you set up in your glitch project
```
*The rest of the defaults are OK.*9. Go back to your Glitch project and export your project to GitHub (that will create a new `glitch` branch in your GitHub repo): Tools > Git, Import, and Export > Export to GitHub.
10. In the Glitch console, set the remote origin to the master branch of your GitHub project:
```bash
git remote add origin [email protected]:USERNAME/PROJECT.git
git pull
git branch --set-upstream-to=origin/master master
```11. Clone your repo in your dev machine and merge the newly created `glitch` branch with the master branch:
```bash
git fetch
git merge master origin/glitch
```
# Testing1. In your dev machine, create a dummy test file (like `hello.txt`) and commit it.
2. Push the changes with `git push`.If everything is OK, your Glitch project should be updated, and a `hello.txt` file should appear in the list of files.
If you don't see it, have a look to the log of your Glitch project.# Updating your project from GitHub → Glitch
This should be the default method of updating your project. Develop in your dev machine, commit the changes and do a `git push`
# Updating your project from Glitch → GitHub
If you change something in Glitch, first you'll need to export your project to GitHub and then merge the `glitch` branch with your master branch.
```bash
git merge glitch
git push
```# Credits
While I've detailed all the steps and added information on how to add a deploy key, the overall solution (including the `git.sh` and webhook sync code) comes from [this post by @jarvis394 on the glitch forum](https://support.glitch.com/t/tutorial-how-to-auto-update-your-project-with-github/8124).