chore: add jenkins pipeline
arcad/emissary-firmware/pipeline/head Something is wrong with the build of this commit
Details
arcad/emissary-firmware/pipeline/head Something is wrong with the build of this commit
Details
This commit is contained in:
parent
aa22f3c55b
commit
2c701ffc16
|
@ -0,0 +1,102 @@
|
||||||
|
pipeline {
|
||||||
|
agent {
|
||||||
|
dockerfile {
|
||||||
|
filename 'Dockerfile'
|
||||||
|
dir 'misc/jenkins'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
parameters {
|
||||||
|
persistentText(name: 'emissaryRelease', defaultValue: 'latest', description: 'Numéro de release Emissary', successfulOnly: false)
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Cancel older jobs') {
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
def buildNumber = env.BUILD_NUMBER as int
|
||||||
|
if (buildNumber > 1) milestone(buildNumber - 1)
|
||||||
|
milestone(buildNumber)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Update emissary release') {
|
||||||
|
when {
|
||||||
|
expression {
|
||||||
|
return params.emissaryRelease != 'latest'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
currentEmissaryRelease = readFile('emissary_release.txt').trim()
|
||||||
|
|
||||||
|
if (currentEmissaryRelease == params.emissaryRelease) {
|
||||||
|
currentBuild.result = 'SUCCESS'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
withCredentials([
|
||||||
|
usernamePassword([
|
||||||
|
credentialsId: 'forge-jenkins',
|
||||||
|
usernameVariable: 'GIT_USERNAME',
|
||||||
|
passwordVariable: 'GIT_PASSWORD'
|
||||||
|
])
|
||||||
|
]) {
|
||||||
|
sh """
|
||||||
|
git config user.email "jenkins@cadoles.com"
|
||||||
|
git config user.name "Jenkins"
|
||||||
|
git config credential.https://forge.cadoles.com.username "\$GIT_USERNAME"
|
||||||
|
git config credential.https://forge.cadoles.com.helper '!f() { test "\$1" = get && echo "password=\$GIT_PASSWORD"; }; f'
|
||||||
|
|
||||||
|
echo '${params.emissaryRelease}' > emissary_release.txt
|
||||||
|
git add emissary_release.txt
|
||||||
|
git commit -m "feat: use emissary ${params.emissaryRelease}"
|
||||||
|
git pull --rebase
|
||||||
|
git push origin \$(git rev-parse HEAD):${env.GIT_BRANCH}
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Build and release') {
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
withCredentials([
|
||||||
|
usernamePassword([
|
||||||
|
credentialsId: 'forge-jenkins',
|
||||||
|
usernameVariable: 'GITEA_DOWNLOAD_USERNAME',
|
||||||
|
passwordVariable: 'GITEA_DOWNLOAD_PASSWORD'
|
||||||
|
])
|
||||||
|
]) {
|
||||||
|
sh '''
|
||||||
|
make download-emissary-release
|
||||||
|
make all
|
||||||
|
'''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Release') {
|
||||||
|
steps {
|
||||||
|
withCredentials([
|
||||||
|
usernamePassword([
|
||||||
|
credentialsId: 'forge-jenkins',
|
||||||
|
usernameVariable: 'GITEA_RELEASE_USERNAME',
|
||||||
|
passwordVariable: 'GITEA_RELEASE_PASSWORD'
|
||||||
|
])
|
||||||
|
]) {
|
||||||
|
sh 'make gitea-release'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
always {
|
||||||
|
cleanWs()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
8
Makefile
8
Makefile
|
@ -22,7 +22,7 @@ IMAGEBUILDER_CUSTOM_FILES_DIR_PATH := $(IMAGEBUILDER_DIR_PATH)/files
|
||||||
|
|
||||||
BIN_DIR := "$(shell readlink -f bin)/$(OPENWRT_VERSION)/$(OPENWRT_TARGET)/$(OPENWRT_PROFILE)$(BIN_DIR_NAME_SUFFIX)"
|
BIN_DIR := "$(shell readlink -f bin)/$(OPENWRT_VERSION)/$(OPENWRT_TARGET)/$(OPENWRT_PROFILE)$(BIN_DIR_NAME_SUFFIX)"
|
||||||
|
|
||||||
GITEA_DOWNLOAD_RELEASE_NAME ?= v2023.3.29-e5b6c5e
|
GITEA_DOWNLOAD_RELEASE_NAME ?= $(shell cat emissary_release.txt)
|
||||||
EMISSARY_ARCH ?= armv6
|
EMISSARY_ARCH ?= armv6
|
||||||
|
|
||||||
EMISSARY_RECONCILIATION_INTERVAL ?=
|
EMISSARY_RECONCILIATION_INTERVAL ?=
|
||||||
|
@ -110,7 +110,7 @@ gitea-release: tools/gitea-release/bin/gitea-release.sh
|
||||||
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="$(shell 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
|
||||||
|
|
||||||
.PHONY: download-emissary-release
|
.PHONY: download-emissary-release
|
||||||
|
@ -143,5 +143,5 @@ UPX_VERSION := 4.0.2
|
||||||
tools/upx/bin/upx:
|
tools/upx/bin/upx:
|
||||||
mkdir -p tools/upx/bin
|
mkdir -p tools/upx/bin
|
||||||
curl -L --output tools/upx/upx-$(UPX_VERSION)-amd64_linux.tar.xz https://github.com/upx/upx/releases/download/v$(UPX_VERSION)/upx-$(UPX_VERSION)-amd64_linux.tar.xz
|
curl -L --output tools/upx/upx-$(UPX_VERSION)-amd64_linux.tar.xz https://github.com/upx/upx/releases/download/v$(UPX_VERSION)/upx-$(UPX_VERSION)-amd64_linux.tar.xz
|
||||||
cd tools/upx && tar -xJf upx-$(UPX_VERSION)-amd64_linux.tar.xz
|
cd tools/upx && tar -xJf upx-$(UPX_VERSION)-amd64_linux.tar.xz && wait $$!
|
||||||
ln -s $(shell readlink -f tools/upx/upx-$(UPX_VERSION)-amd64_linux/upx) tools/upx/bin/upx
|
$(SHELL) -c 'ln -s $$(readlink -f tools/upx/upx-$(UPX_VERSION)-amd64_linux/upx) tools/upx/bin/upx'
|
|
@ -0,0 +1 @@
|
||||||
|
v2023.3.29-e5b6c5e
|
|
@ -0,0 +1,14 @@
|
||||||
|
FROM reg.cadoles.com/proxy_cache/library/ubuntu:22.04
|
||||||
|
|
||||||
|
ARG HTTP_PROXY=
|
||||||
|
ARG HTTPS_PROXY=
|
||||||
|
ARG http_proxy=
|
||||||
|
ARG https_proxy=
|
||||||
|
|
||||||
|
# Install dev environment dependencies
|
||||||
|
RUN export DEBIAN_FRONTEND=noninteractive &&\
|
||||||
|
apt-get update -y &&\
|
||||||
|
apt-get install -y --no-install-recommends curl ca-certificates build-essential wget unzip tar git jq gawk python3 rsync file
|
||||||
|
|
||||||
|
# Add LetsEncrypt certificates
|
||||||
|
RUN curl -k https://forge.cadoles.com/Cadoles/Jenkins/raw/branch/master/resources/com/cadoles/common/add-letsencrypt-ca.sh | bash
|
Loading…
Reference in New Issue