Compare commits

...

12 Commits

Author SHA1 Message Date
b31900ae2f ci: use jenkins environment to define current branch name for version generation
Some checks failed
arcad/emissary/pipeline/head There was a failure building this commit
2023-08-25 10:36:18 -06:00
777648ff44 chore: remove changelog from repository
Some checks reported errors
arcad/emissary/pipeline/head Something is wrong with the build of this commit
2023-08-25 10:33:11 -06:00
d9919c888f feat(changelog): filter tags used to generate changelog 2023-08-25 10:32:31 -06:00
1eb3de4f16 feat: add changelog to released files
Some checks failed
arcad/emissary/pipeline/head There was a failure building this commit
2023-08-25 10:20:42 -06:00
9326bac792 Merge pull request 'feat: use new versioning schema with changelog generation' (#3) from new-versioning into master
Some checks reported errors
arcad/emissary/pipeline/head Something is wrong with the build of this commit
Reviewed-on: #3
2023-08-25 18:17:57 +02:00
3c1f5042c8 feat: use new versioning schema with changelog generation
All checks were successful
arcad/emissary/pipeline/head This commit looks good
arcad/emissary/pipeline/pr-master This commit looks good
2023-08-25 09:57:13 -06:00
14eecbf01e feat: comment packaged agent and server configurations (#1)
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-08-25 09:32:08 -06:00
c51ac0adc7 docs: add reference to emissary-firmware project
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-08-25 09:09:09 -06:00
3e168dadf6 Revert "doc: add one file to stack all documentation source for install emissary (local, package, ansible)"
Some checks reported errors
arcad/emissary/pipeline/head Something is wrong with the build of this commit
This reverts commit 5c36955c13.
2023-08-25 09:07:01 -06:00
61ac5e8ae0 chore: move casts to misc directory
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-08-25 09:00:55 -06:00
929394c479 Revert "doc: proposed structure for documentation => one place to see them all. Add in doc/readme.md all the source for documentation include emissary-agent"
All checks were successful
arcad/emissary/pipeline/head This commit looks good
This reverts commit a1ec5b87c8.
2023-08-25 08:57:16 -06:00
a1ec5b87c8 doc: proposed structure for documentation => one place to see them all. Add in doc/readme.md all the source for documentation include emissary-agent
All checks were successful
arcad/emissary/pipeline/head This commit looks good
2023-08-25 13:29:29 +02:00
10 changed files with 198 additions and 79 deletions

44
.chglog/CHANGELOG.tpl.md Normal file
View 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
View 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
View File

@ -10,4 +10,6 @@ dist/
/apps /apps
/server-key.json /server-key.json
/.emissary-token /.emissary-token
/out /out
.mktools/
/CHANGELOG.md

28
Jenkinsfile vendored
View File

@ -19,7 +19,7 @@ pipeline {
} }
} }
} }
stage('Run unit tests') { stage('Run unit tests') {
steps { steps {
script { script {
@ -58,20 +58,20 @@ pipeline {
passwordVariable: 'GITEA_RELEASE_PASSWORD' passwordVariable: 'GITEA_RELEASE_PASSWORD'
]) ])
]) { ]) {
sh 'make gitea-release' sh """
} export MKT_PROJECT_VERSION_BRANCH_NAME=${env.BRANCH_NAME}
def currentVersion = sh(returnStdout: true, script: 'make full-version').trim() make mktools
if (currentVersion.endsWith('-dirty')) { make gitea-release
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
)
} }
build(
job: "../emissary-firmware/${env.GIT_BRANCH}",
parameters: [
[$class: 'StringParameterValue', name: 'emissaryRelease', value: currentVersion]
],
wait: false
)
} }
} }
} }

View File

@ -5,12 +5,9 @@ GITCHLOG_ARGS ?=
SHELL := /bin/bash SHELL := /bin/bash
EMISSARY_VERSION ?= 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_NAME ?= bornholm/emissary
DOCKER_IMAGE_TAG ?= $(FULL_VERSION) DOCKER_IMAGE_TAG ?= $(MKT_PROJECT_VERSION)
GOTEST_ARGS ?= -short GOTEST_ARGS ?= -short
@ -45,7 +42,7 @@ build-emissary-%: deps ## Build executable
-v \ -v \
-ldflags "\ -ldflags "\
-X 'main.GitRef=$(shell git rev-parse --short HEAD)' \ -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)' \ -X 'main.BuildDate=$(shell date --utc --rfc-3339=seconds)' \
" \ " \
-o ./bin/$* \ -o ./bin/$* \
@ -66,7 +63,7 @@ run-emissary-%: .env
( set -o allexport && source .env && set +o allexport && bin/$* $(EMISSARY_CMD)) ( set -o allexport && source .env && set +o allexport && bin/$* $(EMISSARY_CMD))
.PHONY: deps .PHONY: deps
deps: .env deps: .env .mktools
.PHONY: dump-config .PHONY: dump-config
dump-config: build-emissary dump-config: build-emissary
@ -74,27 +71,8 @@ dump-config: build-emissary
./bin/emissary config dump > tmp/config.yml ./bin/emissary config dump > tmp/config.yml
.PHONY: goreleaser .PHONY: goreleaser
goreleaser: deps goreleaser: .mktools
( 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) ) ( 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) )
.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
install-git-hooks: install-git-hooks:
git config core.hooksPath .githooks 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 scp dist/emissary-agent_linux_arm_6/emissary root@$(OPENWRT_DEVICE):/usr/bin/emissary
ssh root@$(OPENWRT_DEVICE) /etc/init.d/emissary-agent start 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 mkdir -p .gitea-release
rm -rf .gitea-release/* rm -rf .gitea-release/*
cp dist/*.tar.gz .gitea-release/ cp dist/*.tar.gz .gitea-release/
cp dist/*.apk .gitea-release/ cp dist/*.apk .gitea-release/
cp dist/*.deb .gitea-release/ cp dist/*.deb .gitea-release/
cp CHANGELOG.md .gitea-release/
GITEA_RELEASE_PROJECT="emissary" \ GITEA_RELEASE_PROJECT="emissary" \
GITEA_RELEASE_ORG="arcad" \ GITEA_RELEASE_ORG="arcad" \
GITEA_RELEASE_BASE_URL="https://forge.cadoles.com" \ GITEA_RELEASE_BASE_URL="https://forge.cadoles.com" \
GITEA_RELEASE_VERSION="$(FULL_VERSION)" \ GITEA_RELEASE_VERSION="$(MKT_PROJECT_VERSION)" \
GITEA_RELEASE_NAME="$(FULL_VERSION)" \ GITEA_RELEASE_NAME="$(MKT_PROJECT_VERSION)" \
GITEA_RELEASE_COMMITISH_TARGET="$(GIT_VERSION)" \ GITEA_RELEASE_COMMITISH_TARGET="$(GIT_VERSION)" \
GITEA_RELEASE_IS_DRAFT="false" \ GITEA_RELEASE_IS_DRAFT="false" \
GITEA_RELEASE_BODY="" \ GITEA_RELEASE_BODY="" \
GITEA_RELEASE_ATTACHMENTS="$$(find .gitea-release/* -type f)" \ GITEA_RELEASE_ATTACHMENTS="$$(find .gitea-release/* -type f)" \
tools/gitea-release/bin/gitea-release.sh 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: .emissary-token:
$(MAKE) run-emissary-server EMISSARY_CMD="--debug --config tmp/server.yml server auth create-token --role writer > .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/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 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: version: .mktools
@echo $(FULL_VERSION) @echo $(MKT_PROJECT_VERSION)
update-edge-lib: update-edge-lib:
git pull --rebase git pull --rebase
@ -163,4 +137,18 @@ update-edge-lib:
$(MAKE) test $(MAKE) test
git add go.mod go.sum git add go.mod go.sum
git commit -m "feat: update arcad/edge dependency" git commit -m "feat: update arcad/edge dependency"
git push git push
.PHONY: changelog
changelog: .mktools
$(MAKE) MKT_GIT_CHGLOG_ARGS='--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

View File

@ -8,10 +8,6 @@
- (FR) - [Déployer un serveur mandataire inverse sur un agent](./tutorials/fr/deploy-reverse-proxy.md) - (FR) - [Déployer un serveur mandataire inverse sur un agent](./tutorials/fr/deploy-reverse-proxy.md)
- (FR) - [Déployer une configuration UCI personnalisée sur un agent](./tutorials/fr/deploy-uci-configuration.md) - (FR) - [Déployer une configuration UCI personnalisée sur un agent](./tutorials/fr/deploy-uci-configuration.md)
Emplacement des différentes documentation pour installation emissary.
- (FR) -[Différentes méthodes pour installer emissary](./tutorials/fr/install-emmissary-only.md)
## References ## References
### Specifications ### Specifications
@ -28,3 +24,7 @@ See:
- [`misc/packaging/common/config-agent.yml`](../misc/packaging/common/config-agent.yml) - [`misc/packaging/common/config-agent.yml`](../misc/packaging/common/config-agent.yml)
- [`misc/packaging/common/config-server.yml`](../misc/packaging/common/config-server.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

View File

@ -1,17 +0,0 @@
# installation
processus d'installation
Il y a à ce jours trois méthode différente d'installation !
1. via le paquet.deb disponible sur la forge (pour installation sur un serveur)
cf : [doc-emissary](./first-steps.md) (chapitre : Installer le serveur Emissary)
2. via l'archive disponible sur la forge (pour installation sur une machine locale a des fin de test ou autre)
cf : [doc-emissary-firmware](https://forge.cadoles.com/arcad/emissary-firmware/src/branch/master/doc/tutorials/first-steps.md) (chapitre : Récupérer et lancer un serveur Emissary sur sa machine)
3. via ansible (uniquement alpine pour le moment) (cf: [arcad-ansible](https://forge.cadoles.com/arcad/ansible))
cf : [doc-arcad-ansible](https://forge.cadoles.com/arcad/ansible/src/branch/master/doc/deploy-new-env.md) (Chapitre : Préparation de l'environnement)

View File

@ -1,26 +1,55 @@
# Emissary agent configuration
# Logger configuration
logger: logger:
# Logging verbosity
# DEBUG: 0
# INFO: 1
# WARN: 2
# ERROR: 3
# CRITICAL: 4
level: 1 level: 1
# Logging format
# Possible values: human, json
format: human format: human
# Agent configuration
agent: agent:
# Emissary server URL
serverUrl: http://127.0.0.1:3000 serverUrl: http://127.0.0.1:3000
# Agent private key path
privateKeyPath: /var/lib/emissary/agent-key.json privateKeyPath: /var/lib/emissary/agent-key.json
reconciliationInterval: 5 # Agent reconciliation interval (in seconds)
reconciliationInterval: 30
# Controllers configuration
controllers: controllers:
# Persistence controller configuration
persistence: persistence:
enabled: true enabled: true
stateFile: /var/lib/emissary/state.json stateFile: /var/lib/emissary/state.json
# Spec controller configuration
spec: spec:
enabled: true enabled: true
# Proxy controller configuration
proxy: proxy:
enabled: true enabled: true
# UCI controller configuration
uci: uci:
enabled: true enabled: true
binPath: uci binPath: uci
configBackupFile: /var/lib/emissary/uci-backup.conf configBackupFile: /var/lib/emissary/uci-backup.conf
# App controller configuration
app: app:
enabled: true enabled: true
dataDir: /var/lib/emissary/apps/data dataDir: /var/lib/emissary/apps/data
downloadDir: /var/lib/emissary/apps/bundles downloadDir: /var/lib/emissary/apps/bundles
# Sysupgrade controller configuration
sysupgrade: sysupgrade:
enabled: true enabled: true
sysupgradeCommand: sysupgradeCommand:
@ -33,6 +62,8 @@ agent:
- sh - sh
- -c - -c
- source /etc/openwrt_release && echo "$DISTRIB_ID-$DISTRIB_RELEASE-$DISTRIB_REVISION" - source /etc/openwrt_release && echo "$DISTRIB_ID-$DISTRIB_RELEASE-$DISTRIB_REVISION"
# Collectors configuration
collectors: collectors:
- name: uname - name: uname
command: uname command: uname

View File

@ -1,13 +1,38 @@
# Emissary server configuration
# Logger configuration
logger: logger:
# Logging verbosity
# DEBUG: 0
# INFO: 1
# WARN: 2
# ERROR: 3
# CRITICAL: 4
level: 1 level: 1
# Logging format
# Possible values: human, json
format: human format: human
# Server configuration
server: server:
# HTTP server configuration
http: http:
# Listening address (0.0.0.0 to listen on all interfaces)
host: 0.0.0.0 host: 0.0.0.0
# Listening port
port: 3000 port: 3000
# Database configuration
database: database:
# Database driver
# Possible values: sqlite
driver: 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 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: cors:
allowedOrigins: [] allowedOrigins: []
allowCredentials: true allowCredentials: true
@ -22,12 +47,25 @@ server:
- Content-Type - Content-Type
- Authorization - Authorization
- Sentry-Trace - Sentry-Trace
debug: false
# Auth configuration
auth: auth:
# Local authentication configuration
local: local:
privateKeyPath: /var/lib/emissary/server-key.json privateKeyPath: /var/lib/emissary/server-key.json
roleExtractionRules:
- "jwt.role != nil ? str(jwt.role) : ''" # Remote authentication configuration
# Disabled by default
remote: ~ remote: ~
# jwksUrl: https://my-server/.well-known/jwks.json # 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) : ''"