gitdeploy/README.md

134 рядки
3.1 KiB
Markdown

2020-09-26 15:56:23 +00:00
# [git-deploy](https://git.ryanburnette.com/ryanburnette/git-deploy)
2020-09-09 04:30:07 +00:00
2020-09-26 15:56:23 +00:00
**git-deploy** is an app for handling continuous deployment of static websites.
2020-09-17 18:50:23 +00:00
2020-09-29 03:15:30 +00:00
## Usage
```bash
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][1]
[1]: https://coolaj86.com/articles/vanilla-devops-git-credentials-cheatsheet/
## Git Info
The exec script will receive the parent environment as well as
```bash
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
```bash
pushd html/
npm install
./scripts/development
popd
```
```bash
go mod tidy
go mod vendor
go generate -mod=vendor ./...
go build -mod=vendor .
```
2020-09-28 23:39:05 +00:00
## Add Webhooks
To add a webhook you'll first need a secret
**with node.js**:
```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`
```txt
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
2020-09-26 15:56:23 +00:00
**git-deploy** is intended for use with static websites that are generated after
2020-09-17 18:50:23 +00:00
changes are pushed to a Git repository. This works with sites that are being
2020-09-26 15:56:23 +00:00
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.
2020-09-17 18:50:23 +00:00
2020-09-26 15:57:29 +00:00
**git-deploy** supports verified webhooks from Github, Bitbucket, and Gitea.
2020-09-17 18:50:23 +00:00
2020-09-26 15:56:23 +00:00
**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.
2020-09-17 18:50:23 +00:00
2020-09-26 15:56:23 +00:00
**git-deploy** comes with a simple interface. The interface be disabled if you
don't want to use it.
2020-09-17 18:50:23 +00:00
2020-09-26 15:56:23 +00:00
**git-deploy** also comes with basic authentication via integration with
[Pocket ID](https://pocketid.app). Authentication can also be disabled if you
don't want to use it. The built-in interface requires the built-in
authentication.
2020-09-29 03:17:10 +00:00
2020-09-28 23:39:05 +00:00
## How to Generate a Base64 Secret
**in your browser**:
```js
(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**:
```js
crypto
.randomBytes(16)
.toString("base64")
.replace(/\+/g, "-")
.replace(/\//g, "_")
.replace(/=/g, "");
```
2020-09-29 03:17:10 +00:00
## License
2020-09-29 03:15:30 +00:00
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/.