You can follow the "initial steps" below or just remix this glitch project and continue in the next section.
hello-express
app.package.json
file and add the following packages:node-cmd
body-parser
server.js
file and load the following libraries:const cmd = require('node-cmd');
const crypto = require('crypto');
const bodyParser = require('body-parser');
app.use(express.static('public'));
and add the following line below:app.use(bodyParser.json());
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);
git.sh
file adding the following lines:#/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.
.env
file and set a SECRET:SECRET=cirrus-socrates-particle-decibel-hurricane-dolphin-tulip
ssh-keygen
Just press <Enter>
to accept all the questions.
.ssh/id_rsa.pub
file with:cat .ssh/id_rsa.pub
Then copy the string to your clipboard.
README.me
file (or any other file, it's important that the project is not empty).deploy keys
section of the settings page of your GitHub project.Add deploy key
and add the SSH key you generated in the step #8; add glitch.com
in the title field.Allow write access
box too.webhooks
section and add a new webhook (replacing PROJECT_NAME
with your actual project name):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.
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.
In the Glitch console, set the remote origin to the master branch of your GitHub project:
git remote add origin [email protected]:USERNAME/PROJECT.git
git pull
git branch --set-upstream-to=origin/master master
glitch
branch with the master branch:git fetch
git merge master origin/glitch
hello.txt
) and commit it.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.
This should be the default method of updating your project. Develop in your dev machine, commit the changes and do a git push
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.
git merge glitch
git push
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.