Chore tool help to send request with templates and customizable flow diagram.
Template playground go to repeatit.io
If you need any feature, find a bug or fixing something send pull request or open issue we will handle it.
docker run -d --name postgres -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:14.5-alpine
docker run -it --rm --name chore -p 8080:8080 -e STORE_HOST=172.17.0.1 -e STORE_SCHEMA=public ghcr.io/worldline-go/chore:latestOpen browser and go to http://localhost:8080
Login with admin:admin and after that create your flow, template and run it.
Chore uses PostgreSQL database.
First initialization user and password is admin:admin, changable with configuration
Camel or snake-case usable for keys.
secret: thisisfordevelopmenttestsecret
user:
name: admin
password: admin
store:
type: postgres
schema: chore
host: "127.0.0.1"
port: "5432"
user: postgres
# password: test
dbName: postgres
timeZone: UTC
# also you can set with DSN name, if DSN name exists other values not using
# dbDataSource: "postgres://postgres@127.0.0.1:5432/postgres?application_name=testdb"
# default database connection values
connMaxIdleTime: 0
connMaxLifetime: "15m"
maxIdleConns: 5
maxOpenConns: 7
# migrate same as store and copy undefined part in store value
migrate:
password: formigration
user: migration
# base_path: /chore # to set mywebsite.com/chore/
# host: 0.0.0.0 # default
# port: 8080 # default
# log_level: info # defaultSecret is important for tokens, to generate own token, use one of this commands:
With openssl
openssl rand -base64 32 | tr -- '+/' '-_'With linux shell
dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64 | tr -d -- '\n' | tr -- '+/' '-_'; echoWARN when secret changed, all previous tokens not usable after that.
Set config file path to CONFIG_FILE environment variable.
Chore can get your configurations from vault, consul, file or with environments values.
To work with vault and consul set PREFIX_VAULT and PREFIX_CONSUL to show the path of the config file and APP_NAME default is chore. Details check igconfig library to see how it works.
And run chore on container or binary.
Connect to the chore UI with browser and add template, authentication and design own control flow.
Template, Auth, Control information
Template is a text file format. Go template and sprig functions supported.
For example using some functions and flow inside of template.
ID: {{uuidv4}}
Name: {{.name | b64enc}}
{{if eq .name "golang" }}
Link: DeepCore
{{end}}
{{- range .specs}}
{{.name}} {{repeat .point "⭐"}}
{{- end}}
In here name is a key of a map or struct and it print value.
For testing in a playground try repeatit.io, this webapp developed by us.
This give us information about secret headers after that use with request flow node.
With basic-auth(username and password) use this header Authorization: Basic <base64 username:password> but in 2FA status this cannot work so use Bearer Token(personal access token PAT) most of cases or ask IT to get new user which can work with api.
With Personal access token, generate token in the profile page and use with Authorization: Bearer <TOKEN>.
Flow diagram to create your algorithm in UI.
To start flow send request /send endpoint as POST request.
Server will check endpoint and control values with your JSON/YAML payload.
Example: (generate token in token section of chore)
curl -X POST -H "Authorization: Bearer ${TOKEN}" -d 'name: deepcore' "http://localhost:8080/api/v1/send?control=try&endpoint=test"Or you can send as json value -d '{"name":"deepcore"}'
Or send file directly, (when sending yaml format always use binary format due to yaml has new line and ascii format not hold that values)
curl -X POST -H "Authorization: Bearer ${TOKEN}" --data-binary @values.yml "http://localhost:8080/api/v1/send?control=try&endpoint=test"Build and run
Required services (PostgreSQL) before to run.
make env
# for drop
# make env-downRun project
make runFrontend
make run-frontAfter this step just go to the localhost:3000 address.
NOTE frontend(localhost:3000) has proxy and /api path request goes to the server.
Generate swagger (don't need if you didn't change related codes)
make docsBuild project to generate binary
make buildDummy-Whoami Server for Test
docker run --rm -it --name="whoami" -p 9090:80 traefik/whoamiFill tables
Use chore's record script to download/opload operation
Before to run script export TOKEN variable with own chore token.
Change -h (help) parameter to any arguments of the shell script.
export TOKEN=""
curl -fksSL https://raw.githubusercontent.com/worldline-go/chore/main/data/record.sh | bash -s -- -hOr first download it and after run.
curl -O -fksSL https://raw.githubusercontent.com/worldline-go/chore/main/data/record.sh && chmod +x record.shExample arguments
# download just one item
--url http://localhost:8080 --mode download --auth jira
# update all auths, controls and templates files
--url http://localhost:8080 --mode download --auths --controls --templates
# upload all auths folder
--url http://localhost:8080 --mode upload --auths
# upload just one item
--url http://localhost:8080 --mode upload --template confluence/terGet temporary(1 hour) token with username and password
export TOKEN="$(curl -fksSL -u admin:admin http://localhost:8080/api/v1/login?raw=true)"- Activate group information
- Support custom method entries
