mirror of
https://github.com/strongdm/comply
synced 2025-12-16 19:24:01 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ef7a4092a7 | ||
|
|
9bcc88eebc | ||
|
|
edd3c7dd44 | ||
|
|
25058359ea | ||
|
|
c4a0b7afff | ||
|
|
ef32942dad | ||
|
|
0c9dbd736b | ||
|
|
b98d179847 |
21
Dockerfile
Normal file
21
Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
FROM strongdm/pandoc:latest
|
||||||
|
|
||||||
|
# based on implementation by James Gregory <james@jagregory.com>
|
||||||
|
MAINTAINER Comply <comply@strongdm.com>
|
||||||
|
|
||||||
|
RUN apt-get update -y \
|
||||||
|
&& apt-get install -y curl
|
||||||
|
|
||||||
|
ARG COMPLY_VERSION
|
||||||
|
ENV COMPLY_VERSION ${COMPLY_VERSION:-1.4.0}
|
||||||
|
|
||||||
|
EXPOSE 4000/tcp
|
||||||
|
|
||||||
|
# install comply binary
|
||||||
|
RUN curl -J -L -o /tmp/comply.tgz https://github.com/strongdm/comply/releases/download/v${COMPLY_VERSION}/comply-v${COMPLY_VERSION}-linux-amd64.tgz \
|
||||||
|
&& tar -xzf /tmp/comply.tgz \
|
||||||
|
&& mv ./comply-v${COMPLY_VERSION}-linux-amd64 /usr/local/bin/comply
|
||||||
|
|
||||||
|
WORKDIR /source
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/bash"]
|
||||||
7
Makefile
7
Makefile
@@ -103,14 +103,17 @@ release: release-env dist release-deps
|
|||||||
@echo "version $(VERSION) sha $(SHA)"
|
@echo "version $(VERSION) sha $(SHA)"
|
||||||
cd $$COMPLY_TAPDIR && ./update.sh $(VERSION) $(SHA)
|
cd $$COMPLY_TAPDIR && ./update.sh $(VERSION) $(SHA)
|
||||||
|
|
||||||
patch-release: release-env push-assets patch release
|
patch-release: release-env patch release
|
||||||
$(eval VERSION := $(shell git describe --tags --always --dirty="-dev"))
|
$(eval VERSION := $(shell git describe --tags --always --dirty="-dev"))
|
||||||
curl -X POST --data-urlencode 'payload={"channel": "#release", "username": "release", "text": "comply $(VERSION) released", "icon_emoji": ":shipit:"}' https://hooks.slack.com/services/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
|
curl -X POST --data-urlencode 'payload={"channel": "#release", "username": "release", "text": "comply $(VERSION) released", "icon_emoji": ":shipit:"}' https://hooks.slack.com/services/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
|
||||||
|
|
||||||
minor-release: release-env push-assets minor release
|
minor-release: release-env minor release
|
||||||
$(eval VERSION := $(shell git describe --tags --always --dirty="-dev"))
|
$(eval VERSION := $(shell git describe --tags --always --dirty="-dev"))
|
||||||
curl -X POST --data-urlencode 'payload={"channel": "#release", "username": "release", "text": "comply $(VERSION) released", "icon_emoji": ":shipit:"}' https://hooks.slack.com/services/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
|
curl -X POST --data-urlencode 'payload={"channel": "#release", "username": "release", "text": "comply $(VERSION) released", "icon_emoji": ":shipit:"}' https://hooks.slack.com/services/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
|
||||||
|
|
||||||
|
docker-release:
|
||||||
|
docker build --build-arg COMPLY_VERSION=`cat VERSION` -t strongdm/comply .
|
||||||
|
|
||||||
patch: clean gitsem
|
patch: clean gitsem
|
||||||
gitsem -m "increment patch for release (via Makefile)" patch
|
gitsem -m "increment patch for release (via Makefile)" patch
|
||||||
git push
|
git push
|
||||||
|
|||||||
18
README.md
18
README.md
@@ -77,6 +77,24 @@ COMMANDS:
|
|||||||
todo list declared vs satisfied compliance controls
|
todo list declared vs satisfied compliance controls
|
||||||
help, h Shows a list of commands or help for one command
|
help, h Shows a list of commands or help for one command
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Running in Docker
|
||||||
|
|
||||||
|
Comply is currently only released for Linux and macOS, however from other operating systems it's possible to run using Docker:
|
||||||
|
|
||||||
|
```
|
||||||
|
# first build a copy of the container using the included Dockerfile in the root of this project
|
||||||
|
$ docker build -t comply .
|
||||||
|
|
||||||
|
# from an empty directory that will contain your comply project
|
||||||
|
$ docker run -it --rm -v "$PWD":/source comply
|
||||||
|
root@ec4544732298:/source# comply init
|
||||||
|
✗ Organization Name:
|
||||||
|
```
|
||||||
|
|
||||||
|
For Windows users, replace $PWD with the full path to your project directory
|
||||||
|
|
||||||
|
|
||||||
## Ticketing Integrations:
|
## Ticketing Integrations:
|
||||||
- Jira
|
- Jira
|
||||||
- Github
|
- Github
|
||||||
|
|||||||
@@ -7,8 +7,15 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var serveCommand = cli.Command{
|
var serveCommand = cli.Command{
|
||||||
Name: "serve",
|
Name: "serve",
|
||||||
Usage: "live updating version of the build command",
|
Usage: "live updating version of the build command",
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
cli.IntFlag{
|
||||||
|
Name: "port",
|
||||||
|
Value: 4000,
|
||||||
|
Destination: &render.ServePort,
|
||||||
|
},
|
||||||
|
},
|
||||||
Action: serveAction,
|
Action: serveAction,
|
||||||
Before: beforeAll(pandocMustExist, cleanContainers),
|
Before: beforeAll(pandocMustExist, cleanContainers),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,10 @@ import (
|
|||||||
|
|
||||||
const websocketReloader = `<script>
|
const websocketReloader = `<script>
|
||||||
(function(){
|
(function(){
|
||||||
var ws = new WebSocket("ws://localhost:5122/ws")
|
var ws = new WebSocket("ws://localhost:%d/ws")
|
||||||
|
if (location.host != "") {
|
||||||
|
ws = new WebSocket("ws://"+location.host+"/ws")
|
||||||
|
}
|
||||||
var connected = false
|
var connected = false
|
||||||
ws.onopen = function(e) {
|
ws.onopen = function(e) {
|
||||||
connected = true
|
connected = true
|
||||||
@@ -74,7 +77,7 @@ func html(output string, live bool, errCh chan error, wg *sync.WaitGroup) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if live {
|
if live {
|
||||||
w.Write([]byte(websocketReloader))
|
w.Write([]byte(fmt.Sprintf(websocketReloader, ServePort)))
|
||||||
}
|
}
|
||||||
w.Close()
|
w.Close()
|
||||||
}
|
}
|
||||||
@@ -82,7 +85,7 @@ func html(output string, live bool, errCh chan error, wg *sync.WaitGroup) {
|
|||||||
if live {
|
if live {
|
||||||
if !opened {
|
if !opened {
|
||||||
opened = true
|
opened = true
|
||||||
open.Run(filepath.Join(".", "output", "index.html"))
|
open.Run(fmt.Sprintf("http://127.0.0.1:%d/", ServePort))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
wg.Done()
|
wg.Done()
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package render
|
package render
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -11,6 +13,8 @@ import (
|
|||||||
"github.com/yosssi/ace"
|
"github.com/yosssi/ace"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var ServePort int
|
||||||
|
|
||||||
var upgrader = websocket.Upgrader{
|
var upgrader = websocket.Upgrader{
|
||||||
ReadBufferSize: 1024,
|
ReadBufferSize: 1024,
|
||||||
WriteBufferSize: 1024,
|
WriteBufferSize: 1024,
|
||||||
@@ -87,6 +91,16 @@ func Build(output string, live bool) error {
|
|||||||
|
|
||||||
if live {
|
if live {
|
||||||
watch(errCh)
|
watch(errCh)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
http.Handle("/", http.FileServer(http.Dir(filepath.Join(".", "output"))))
|
||||||
|
err := http.ListenAndServe(fmt.Sprintf("0.0.0.0:%d", ServePort), nil)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
fmt.Printf("Serving content of output/ at http://127.0.0.1:%d (ctrl-c to quit)\n", ServePort)
|
||||||
}
|
}
|
||||||
// PDF
|
// PDF
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ func watch(errCh chan error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
http.HandleFunc("/ws", serveWs)
|
http.HandleFunc("/ws", serveWs)
|
||||||
go http.ListenAndServe("127.0.0.1:5122", nil)
|
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user