diff --git a/.gitignore b/.gitignore index 7447f89..f31afa8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/bin \ No newline at end of file +/bin +/dist \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..c05efba --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,50 @@ +@Library('cadoles') _ + +pipeline { + agent { + dockerfile { + label 'docker' + filename 'Dockerfile' + dir 'misc/ci' + } + } + + stages { + stage('Build and publish packages') { + when { + anyOf { + branch 'master' + branch 'develop' + } + } + steps { + script { + List packagers = ['deb', 'rpm'] + packagers.each { pkgr -> + sh "make NFPM_PACKAGER='${pkgr}' build package" + } + + List attachments = sh(returnStdout: true, script: "find dist -type f -name '*.deb' -or -name '*.rpm' -or -name '*.ipk'").split(' ') + String releaseVersion = sh(returnStdout: true, script: "git describe --always | rev | cut -d '/' -f 1 | rev").trim() + + String releaseBody = """ + _Publication automatisée réalisée par Jenkins._ [Voir le job](${env.RUN_DISPLAY_URL}) + """ + + gitea.release('forge-jenkins', 'Cadoles', 'hydra-werther', [ + 'attachments': attachments, + 'body': releaseBody, + 'releaseName': "${releaseVersion}", + 'releaseVersion': "${releaseVersion}" + ]) + } + } + } + } + + post { + always { + cleanWs() + } + } +} \ No newline at end of file diff --git a/Makefile b/Makefile index a4f6536..8344dde 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,6 @@ +PACKAGE_VERSION ?= $(shell git describe --always | rev | cut -d '/' -f 1 | rev) +NFPM_PACKAGER ?= deb + build: clean generate CGO_ENABLED=0 misc/script/build @@ -7,4 +10,14 @@ generate: clean: rm -rf bin +package: dist + PACKAGE_VERSION=$(PACKAGE_VERSION) \ + nfpm package \ + --config misc/packaging/nfpm.yml \ + --target ./dist \ + --packager $(NFPM_PACKAGER) + +dist: + mkdir -p dist + .PHONY: build \ No newline at end of file diff --git a/misc/ci/Dockerfile b/misc/ci/Dockerfile new file mode 100644 index 0000000..c51c3be --- /dev/null +++ b/misc/ci/Dockerfile @@ -0,0 +1,9 @@ +FROM alpine:3.16 + +RUN apk add --no-cache make git curl jq bash openssl go zip + +RUN curl -k https://forge.cadoles.com/Cadoles/Jenkins/raw/branch/master/resources/com/cadoles/common/add-letsencrypt-ca.sh | bash + +RUN wget https://github.com/goreleaser/nfpm/releases/download/v2.20.0/nfpm_2.20.0_Linux_x86_64.tar.gz \ + && tar -xzf nfpm_2.20.0_Linux_x86_64.tar.gz -C /usr/local/bin \ + && chmod +x /usr/local/bin/nfpm \ No newline at end of file diff --git a/misc/packaging/nfpm.yml b/misc/packaging/nfpm.yml new file mode 100644 index 0000000..04fa73b --- /dev/null +++ b/misc/packaging/nfpm.yml @@ -0,0 +1,21 @@ +name: "hydra-werther" +arch: "amd64" +platform: "linux" +version: "${PACKAGE_VERSION}" +section: "default" +priority: "extra" +maintainer: "Cadoles " +description: | + PostgreSQL automated backup scripts +vendor: "Cadoles" +homepage: "https://forge.cadoles.com/Cadoles/postgres-backup" +license: "AGPL-3.0" +contents: + - src: bin/werther_linux_amd64 + dst: /usr/bin/hydra-werther + - src: conf/hydra-werther.conf + dst: /etc/hydra-werther + - src: misc/packaging/systemd/hydra-werther.service + dst: /usr/lib/systemd/system/hydra-werther.service + + \ No newline at end of file diff --git a/misc/packaging/systemd/hydra-werther.service b/misc/packaging/systemd/hydra-werther.service new file mode 100644 index 0000000..586427b --- /dev/null +++ b/misc/packaging/systemd/hydra-werther.service @@ -0,0 +1,12 @@ +[Unit] +Description=Run Hydra Werther login/consent/logout app +After=network-online.target + +[Service] +Type=simple +EnvironmentFile=/etc/hydra-werther/hydra-werther.conf +ExecStart=/usr/bin/hydra-werther +Restart=on-failure + +[Install] +WantedBy=multi-user.target \ No newline at end of file