Compare commits
16 Commits
v2023.8.14
...
2023.8.25-
Author | SHA1 | Date | |
---|---|---|---|
077964c7b9 | |||
3af6324121 | |||
b31900ae2f | |||
777648ff44 | |||
d9919c888f | |||
1eb3de4f16 | |||
9326bac792 | |||
3c1f5042c8 | |||
14eecbf01e | |||
c51ac0adc7 | |||
3e168dadf6 | |||
61ac5e8ae0 | |||
929394c479 | |||
a1ec5b87c8 | |||
5c36955c13 | |||
6cf01adb61 |
44
.chglog/CHANGELOG.tpl.md
Normal file
44
.chglog/CHANGELOG.tpl.md
Normal file
@ -0,0 +1,44 @@
|
||||
{{ if .Versions -}}
|
||||
{{ if .Unreleased.CommitGroups -}}
|
||||
<a name="unreleased"></a>
|
||||
## [Unreleased]
|
||||
|
||||
{{ range .Unreleased.CommitGroups -}}
|
||||
### {{ .Title }}
|
||||
{{ range .Commits -}}
|
||||
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ range .Versions }}
|
||||
<a name="{{ .Tag.Name }}"></a>
|
||||
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
|
||||
{{ range .CommitGroups -}}
|
||||
### {{ .Title }}
|
||||
{{ range .Commits -}}
|
||||
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
_Nothing functionally significant._
|
||||
{{ end -}}
|
||||
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .Versions }}
|
||||
[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
|
||||
{{ range .Versions -}}
|
||||
{{ if .Tag.Previous -}}
|
||||
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
33
.chglog/config.yml
Normal file
33
.chglog/config.yml
Normal file
@ -0,0 +1,33 @@
|
||||
style: github
|
||||
template: CHANGELOG.tpl.md
|
||||
info:
|
||||
title: CHANGELOG
|
||||
repository_url: https://forge.cadoles.com//
|
||||
options:
|
||||
commits:
|
||||
filters:
|
||||
Type:
|
||||
- feat
|
||||
- fix
|
||||
- perf
|
||||
- refactor
|
||||
- docs
|
||||
commit_groups:
|
||||
title_maps:
|
||||
feat: Features
|
||||
fix: Bug Fixes
|
||||
perf: Performance Improvements
|
||||
refactor: Code Refactoring
|
||||
docs: Documentation
|
||||
header:
|
||||
pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$"
|
||||
pattern_maps:
|
||||
- Type
|
||||
- Scope
|
||||
- Subject
|
||||
notes:
|
||||
keywords:
|
||||
- BREAKING CHANGE
|
||||
issues:
|
||||
prefix:
|
||||
- '#'
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -10,4 +10,6 @@ dist/
|
||||
/apps
|
||||
/server-key.json
|
||||
/.emissary-token
|
||||
/out
|
||||
/out
|
||||
.mktools/
|
||||
/CHANGELOG.md
|
||||
|
30
Jenkinsfile
vendored
30
Jenkinsfile
vendored
@ -19,7 +19,7 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
stage('Run unit tests') {
|
||||
steps {
|
||||
script {
|
||||
@ -58,20 +58,22 @@ pipeline {
|
||||
passwordVariable: 'GITEA_RELEASE_PASSWORD'
|
||||
])
|
||||
]) {
|
||||
sh 'make gitea-release'
|
||||
}
|
||||
def currentVersion = sh(returnStdout: true, script: 'make full-version').trim()
|
||||
if (currentVersion.endsWith('-dirty')) {
|
||||
unstable('Could not trigger emissary-firmware build, dirty version !')
|
||||
} else {
|
||||
build(
|
||||
job: "../emissary-firmware/${env.GIT_BRANCH}",
|
||||
parameters: [
|
||||
[$class: 'StringParameterValue', name: 'emissaryRelease', value: currentVersion]
|
||||
],
|
||||
wait: false
|
||||
)
|
||||
sh """
|
||||
export MKT_PROJECT_VERSION_BRANCH_NAME=${env.BRANCH_NAME}
|
||||
make mktools
|
||||
make gitea-release
|
||||
"""
|
||||
}
|
||||
|
||||
String currentVersion = sh(script: "MKT_PROJECT_VERSION_BRANCH_NAME=${env.BRANCH_NAME} make version", returnStdout: true).trim()
|
||||
|
||||
build(
|
||||
job: "../emissary-firmware/${env.GIT_BRANCH}",
|
||||
parameters: [
|
||||
[$class: 'StringParameterValue', name: 'emissaryRelease', value: currentVersion]
|
||||
],
|
||||
wait: false
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
64
Makefile
64
Makefile
@ -5,12 +5,9 @@ GITCHLOG_ARGS ?=
|
||||
SHELL := /bin/bash
|
||||
|
||||
EMISSARY_VERSION ?=
|
||||
GIT_VERSION := $(shell git describe --always)
|
||||
DATE_VERSION := $(shell date +%Y.%-m.%-d)
|
||||
FULL_VERSION := v$(DATE_VERSION)-$(GIT_VERSION)$(if $(shell git diff --stat),-dirty,)
|
||||
|
||||
DOCKER_IMAGE_NAME ?= bornholm/emissary
|
||||
DOCKER_IMAGE_TAG ?= $(FULL_VERSION)
|
||||
DOCKER_IMAGE_TAG ?= $(MKT_PROJECT_VERSION)
|
||||
|
||||
GOTEST_ARGS ?= -short
|
||||
|
||||
@ -45,7 +42,7 @@ build-emissary-%: deps ## Build executable
|
||||
-v \
|
||||
-ldflags "\
|
||||
-X 'main.GitRef=$(shell git rev-parse --short HEAD)' \
|
||||
-X 'main.ProjectVersion=$(FULL_VERSION)' \
|
||||
-X 'main.ProjectVersion=$(MKT_PROJECT_VERSION)' \
|
||||
-X 'main.BuildDate=$(shell date --utc --rfc-3339=seconds)' \
|
||||
" \
|
||||
-o ./bin/$* \
|
||||
@ -66,7 +63,7 @@ run-emissary-%: .env
|
||||
( set -o allexport && source .env && set +o allexport && bin/$* $(EMISSARY_CMD))
|
||||
|
||||
.PHONY: deps
|
||||
deps: .env
|
||||
deps: .env .mktools
|
||||
|
||||
.PHONY: dump-config
|
||||
dump-config: build-emissary
|
||||
@ -74,27 +71,8 @@ dump-config: build-emissary
|
||||
./bin/emissary config dump > tmp/config.yml
|
||||
|
||||
.PHONY: goreleaser
|
||||
goreleaser: deps
|
||||
( set -o allexport && source .env && set +o allexport && VERSION=$(GORELEASER_VERSION) curl -sfL https://goreleaser.com/static/run | GORELEASER_CURRENT_TAG="$(FULL_VERSION)" bash /dev/stdin $(GORELEASER_ARGS) )
|
||||
|
||||
.PHONY: start-release
|
||||
start-release:
|
||||
if [ -z "$(EMISSARY_VERSION)" ]; then echo "You must define environment variable FAQD_VERSION"; exit 1; fi
|
||||
|
||||
git flow release start $(EMISSARY_VERSION)
|
||||
|
||||
# Update package.json version
|
||||
jq '.version = "$(EMISSARY_VERSION)"' package.json | sponge package.json
|
||||
git add package.json
|
||||
git commit -m "chore: bump to version $(EMISSARY_VERSION)" --allow-empty
|
||||
|
||||
echo "Commit you additional modifications then execute 'make finish-release'"
|
||||
|
||||
.PHONY: finish-release
|
||||
finish-release:
|
||||
git flow release finish -m "v$(EMISSARY_VERSION)"
|
||||
git push --all
|
||||
git push --tags
|
||||
goreleaser: .mktools
|
||||
( set -o allexport && source .env && set +o allexport && VERSION=$(GORELEASER_VERSION) curl -sfL https://goreleaser.com/static/run | GORELEASER_CURRENT_TAG="$(MKT_PROJECT_VERSION)" bash /dev/stdin $(GORELEASER_ARGS) )
|
||||
|
||||
install-git-hooks:
|
||||
git config core.hooksPath .githooks
|
||||
@ -119,30 +97,26 @@ deploy-openwrt-agent:
|
||||
scp dist/emissary-agent_linux_arm_6/emissary root@$(OPENWRT_DEVICE):/usr/bin/emissary
|
||||
ssh root@$(OPENWRT_DEVICE) /etc/init.d/emissary-agent start
|
||||
|
||||
gitea-release: tools/gitea-release/bin/gitea-release.sh goreleaser
|
||||
gitea-release: .mktools tools/gitea-release/bin/gitea-release.sh goreleaser changelog
|
||||
mkdir -p .gitea-release
|
||||
rm -rf .gitea-release/*
|
||||
|
||||
cp dist/*.tar.gz .gitea-release/
|
||||
cp dist/*.apk .gitea-release/
|
||||
cp dist/*.deb .gitea-release/
|
||||
cp CHANGELOG.md .gitea-release/
|
||||
|
||||
GITEA_RELEASE_PROJECT="emissary" \
|
||||
GITEA_RELEASE_ORG="arcad" \
|
||||
GITEA_RELEASE_BASE_URL="https://forge.cadoles.com" \
|
||||
GITEA_RELEASE_VERSION="$(FULL_VERSION)" \
|
||||
GITEA_RELEASE_NAME="$(FULL_VERSION)" \
|
||||
GITEA_RELEASE_VERSION="$(MKT_PROJECT_VERSION)" \
|
||||
GITEA_RELEASE_NAME="$(MKT_PROJECT_VERSION)" \
|
||||
GITEA_RELEASE_COMMITISH_TARGET="$(GIT_VERSION)" \
|
||||
GITEA_RELEASE_IS_DRAFT="false" \
|
||||
GITEA_RELEASE_BODY="" \
|
||||
GITEA_RELEASE_ATTACHMENTS="$$(find .gitea-release/* -type f)" \
|
||||
tools/gitea-release/bin/gitea-release.sh
|
||||
|
||||
tools/gitea-release/bin/gitea-release.sh:
|
||||
mkdir -p tools/gitea-release/bin
|
||||
curl --output tools/gitea-release/bin/gitea-release.sh https://forge.cadoles.com/Cadoles/Jenkins/raw/branch/master/resources/com/cadoles/gitea/gitea-release.sh
|
||||
chmod +x tools/gitea-release/bin/gitea-release.sh
|
||||
|
||||
.emissary-token:
|
||||
$(MAKE) run-emissary-server EMISSARY_CMD="--debug --config tmp/server.yml server auth create-token --role writer > .emissary-token"
|
||||
|
||||
@ -153,8 +127,8 @@ load-sample-specs:
|
||||
cat misc/spec-samples/proxy.emissary.cadoles.com.json | ./bin/server api agent spec update -a $(AGENT_ID) --no-patch --spec-data - --spec-name proxy.emissary.cadoles.com
|
||||
cat misc/spec-samples/mdns.emissary.cadoles.com.json | ./bin/server api agent spec update -a $(AGENT_ID) --no-patch --spec-data - --spec-name mdns.emissary.cadoles.com
|
||||
|
||||
full-version:
|
||||
@echo $(FULL_VERSION)
|
||||
version: .mktools
|
||||
@echo $(MKT_PROJECT_VERSION)
|
||||
|
||||
update-edge-lib:
|
||||
git pull --rebase
|
||||
@ -163,4 +137,18 @@ update-edge-lib:
|
||||
$(MAKE) test
|
||||
git add go.mod go.sum
|
||||
git commit -m "feat: update arcad/edge dependency"
|
||||
git push
|
||||
git push
|
||||
|
||||
.PHONY: changelog
|
||||
changelog: .mktools
|
||||
$(MAKE) MKT_GIT_CHGLOG_ARGS='--next-tag $(MKT_PROJECT_VERSION) --tag-filter-pattern $(MKT_PROJECT_VERSION_CHANNEL) --output CHANGELOG.md' mkt-changelog
|
||||
|
||||
.PHONY: mktools
|
||||
mktools:
|
||||
rm -rf .mktools
|
||||
curl -q https://forge.cadoles.com/Cadoles/mktools/raw/branch/master/install.sh | $(SHELL)
|
||||
|
||||
.mktools:
|
||||
$(MAKE) mktools
|
||||
|
||||
-include .mktools/*.mk
|
@ -24,3 +24,7 @@ See:
|
||||
|
||||
- [`misc/packaging/common/config-agent.yml`](../misc/packaging/common/config-agent.yml)
|
||||
- [`misc/packaging/common/config-server.yml`](../misc/packaging/common/config-server.yml)
|
||||
|
||||
### Other projects
|
||||
|
||||
- [`emissary-firmware`](https://forge.cadoles.com/arcad/emissary-firmware) - Preconfigured OpenWRT firmwares with an agent
|
2
go.mod
2
go.mod
@ -7,6 +7,7 @@ require (
|
||||
github.com/Masterminds/sprig/v3 v3.2.3
|
||||
github.com/alecthomas/participle/v2 v2.0.0-beta.5
|
||||
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883
|
||||
github.com/antonmedv/expr v1.12.7
|
||||
github.com/brutella/dnssd v1.2.6
|
||||
github.com/btcsuite/btcd/btcutil v1.1.3
|
||||
github.com/davecgh/go-spew v1.1.1
|
||||
@ -33,7 +34,6 @@ require (
|
||||
require (
|
||||
github.com/Masterminds/goutils v1.1.1 // indirect
|
||||
github.com/Masterminds/semver/v3 v3.2.0 // indirect
|
||||
github.com/antonmedv/expr v1.12.7 // indirect
|
||||
github.com/barnybug/go-cast v0.0.0-20201201064555-a87ccbc26692 // indirect
|
||||
github.com/dop251/goja_nodejs v0.0.0-20230320130059-dcf93ba651dd // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.1 // indirect
|
||||
|
@ -1,26 +1,55 @@
|
||||
# Emissary agent configuration
|
||||
|
||||
# Logger configuration
|
||||
logger:
|
||||
# Logging verbosity
|
||||
# DEBUG: 0
|
||||
# INFO: 1
|
||||
# WARN: 2
|
||||
# ERROR: 3
|
||||
# CRITICAL: 4
|
||||
level: 1
|
||||
# Logging format
|
||||
# Possible values: human, json
|
||||
format: human
|
||||
|
||||
# Agent configuration
|
||||
agent:
|
||||
# Emissary server URL
|
||||
serverUrl: http://127.0.0.1:3000
|
||||
# Agent private key path
|
||||
privateKeyPath: /var/lib/emissary/agent-key.json
|
||||
reconciliationInterval: 5
|
||||
# Agent reconciliation interval (in seconds)
|
||||
reconciliationInterval: 30
|
||||
|
||||
# Controllers configuration
|
||||
controllers:
|
||||
# Persistence controller configuration
|
||||
persistence:
|
||||
enabled: true
|
||||
stateFile: /var/lib/emissary/state.json
|
||||
|
||||
# Spec controller configuration
|
||||
spec:
|
||||
enabled: true
|
||||
|
||||
# Proxy controller configuration
|
||||
proxy:
|
||||
enabled: true
|
||||
|
||||
# UCI controller configuration
|
||||
uci:
|
||||
enabled: true
|
||||
binPath: uci
|
||||
configBackupFile: /var/lib/emissary/uci-backup.conf
|
||||
|
||||
# App controller configuration
|
||||
app:
|
||||
enabled: true
|
||||
dataDir: /var/lib/emissary/apps/data
|
||||
downloadDir: /var/lib/emissary/apps/bundles
|
||||
|
||||
# Sysupgrade controller configuration
|
||||
sysupgrade:
|
||||
enabled: true
|
||||
sysupgradeCommand:
|
||||
@ -33,6 +62,8 @@ agent:
|
||||
- sh
|
||||
- -c
|
||||
- source /etc/openwrt_release && echo "$DISTRIB_ID-$DISTRIB_RELEASE-$DISTRIB_REVISION"
|
||||
|
||||
# Collectors configuration
|
||||
collectors:
|
||||
- name: uname
|
||||
command: uname
|
||||
|
@ -1,13 +1,38 @@
|
||||
# Emissary server configuration
|
||||
|
||||
# Logger configuration
|
||||
logger:
|
||||
# Logging verbosity
|
||||
# DEBUG: 0
|
||||
# INFO: 1
|
||||
# WARN: 2
|
||||
# ERROR: 3
|
||||
# CRITICAL: 4
|
||||
level: 1
|
||||
# Logging format
|
||||
# Possible values: human, json
|
||||
format: human
|
||||
|
||||
# Server configuration
|
||||
server:
|
||||
# HTTP server configuration
|
||||
http:
|
||||
# Listening address (0.0.0.0 to listen on all interfaces)
|
||||
host: 0.0.0.0
|
||||
# Listening port
|
||||
port: 3000
|
||||
|
||||
# Database configuration
|
||||
database:
|
||||
# Database driver
|
||||
# Possible values: sqlite
|
||||
driver: sqlite
|
||||
# Database DSN
|
||||
# sqlite: see https://github.com/mattn/go-sqlite3#connection-string
|
||||
dsn: sqlite:///var/lib/emissary/data.sqlite?_pragma=foreign_keys(1)&_pragma=busy_timeout=60000
|
||||
|
||||
# CORS configuration
|
||||
# See https://developer.mozilla.org/en/docs/Glossary/CORS
|
||||
cors:
|
||||
allowedOrigins: []
|
||||
allowCredentials: true
|
||||
@ -22,12 +47,25 @@ server:
|
||||
- Content-Type
|
||||
- Authorization
|
||||
- Sentry-Trace
|
||||
debug: false
|
||||
|
||||
# Auth configuration
|
||||
auth:
|
||||
# Local authentication configuration
|
||||
local:
|
||||
privateKeyPath: /var/lib/emissary/server-key.json
|
||||
roleExtractionRules:
|
||||
- "jwt.role != nil ? str(jwt.role) : ''"
|
||||
|
||||
# Remote authentication configuration
|
||||
# Disabled by default
|
||||
remote: ~
|
||||
# jwksUrl: https://my-server/.well-known/jwks.json
|
||||
|
||||
|
||||
# Role extraction rules
|
||||
# Permit to derivate user's role
|
||||
# from the received JWT.
|
||||
#
|
||||
# The first rule returning a non empty
|
||||
# string will define the role of the user.
|
||||
#
|
||||
# The role should be 'reader' or 'writer'.
|
||||
roleExtractionRules:
|
||||
- "jwt.role != nil ? str(jwt.role) : ''"
|
||||
|
Reference in New Issue
Block a user