listens for git webhooks and runs bash scripts when they arrive
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
AJ ONeal cad179977c add exec script 4 years ago
assets git-deploy static server with basic options 4 years ago
html work 4 years ago
internal add exec script 4 years ago
public git-deploy static server with basic options 4 years ago
tools git-deploy static server with basic options 4 years ago
vendor vendor deps 4 years ago
.gitignore handle .env files 4 years ago
.gitmodules work 4 years ago
.prettierignore work 4 years ago
.prettierrc git-deploy static server with basic options 4 years ago
AUTHORS add exec script 4 years ago
LICENSE add exec script 4 years ago
README.md add exec script 4 years ago
example.sh add exec script 4 years ago
github.go refactor webhooks 4 years ago
go.mod handle github and github-like hooks 4 years ago
go.sum handle github and github-like hooks 4 years ago
main.go add exec script 4 years ago

README.md

git-deploy

git-deploy is an app for handling continuous deployment of static websites.

Usage

echo 'GITHUB_SECRET=xxxxxxx' >> .env
./git-deploy init
./git-deploy run --listen :3000 --serve-path ./overrides --exec ./path/to/script.sh

To manage git credentials see The Vanilla DevOps Git Credentials Cheatsheet

Git Info

The exec script will receive the parent environment as well as

GIT_DEPLOY_JOB_ID=xxxxxx
GIT_REF_NAME=master
GIT_REF_TYPE=branch
GIT_REPO_OWNER=example
GIT_REPO_NAME=example
GIT_CLONE_URL=https://github.com/example/example

Build

pushd html/
npm install
./scripts/development
popd
go mod tidy
go mod vendor
go generate -mod=vendor ./...
go build -mod=vendor .

Add Webhooks

To add a webhook you'll first need a secret

with node.js:

crypto.randomBytes(16).toString("hex");

Then you'll need to set up the webhook in your platform of choice.

Github

New Webhook: https://github.com/YOUR_ORG/YOUR_REPO/settings/hooks/new

Payload URL: https://YOUR_DOMAIN/api/webhooks/github
Content-Type: application/json
Secret: YOUR_SECRET
Which events would you like to trigger this webhook?
Just the `push` event.
Active: ✅

TODO

git-deploy is intended for use with static websites that are generated after changes are pushed to a Git repository. This works with sites that are being edited in code and tracked in Git. Sites that have their content managed with a headless CMS that pushes to Git are also very well-suited.

git-deploy supports verified webhooks from Github, Bitbucket, and Gitea.

git-deploy is written in Go. This means that it's a standalone binary available on all major operating systems and architectures. It provides an API with endpoints that handle webhooks, allow for initiation of builds, and getting the status of builds and build jobs.

git-deploy comes with a simple interface. The interface be disabled if you don't want to use it.

git-deploy also comes with basic authentication via integration with Pocket ID. Authentication can also be disabled if you don't want to use it. The built-in interface requires the built-in authentication.

How to Generate a Base64 Secret

in your browser:

(async function () {
  var rnd = new Uint8Array(16);
  await crypto.getRandomValues(rnd);
  var b64 = [].slice
    .apply(rnd)
    .map(function (ch) {
      return String.fromCharCode(ch);
    })
    .join("");
  var secret = btoa(b64)
    .replace(/\//g, "_")
    .replace(/\+/g, "-")
    .replace(/=/g, "");
  console.info(secret);
})();

with node.js:

crypto
  .randomBytes(16)
  .toString("base64")
  .replace(/\+/g, "-")
  .replace(/\//g, "_")
  .replace(/=/g, "");

License

Copyright 2020 The git-deploy Authors

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/.