mirror of https://github.com/status-im/go-waku.git
chore: setup linux ci for .deb
This commit is contained in:
parent
98c14b5f68
commit
62e1f59d4f
|
@ -0,0 +1,99 @@
|
||||||
|
library 'status-jenkins-lib@v1.4.3'
|
||||||
|
|
||||||
|
pipeline {
|
||||||
|
agent { label 'linux' }
|
||||||
|
|
||||||
|
options {
|
||||||
|
timestamps()
|
||||||
|
disableConcurrentBuilds()
|
||||||
|
/* Prevent Jenkins jobs from running forever */
|
||||||
|
timeout(time: 40, unit: 'MINUTES')
|
||||||
|
/* Limit builds retained */
|
||||||
|
buildDiscarder(logRotator(
|
||||||
|
numToKeepStr: '10',
|
||||||
|
daysToKeepStr: '30',
|
||||||
|
artifactNumToKeepStr: '10',
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
/* WARNING: Defining parameters here with the ?: trick causes them to remember last value. */
|
||||||
|
parameters {
|
||||||
|
booleanParam(
|
||||||
|
name: 'PUBLISH',
|
||||||
|
description: 'Trigger publishing of build results for nightly or release.',
|
||||||
|
defaultValue: getPublishDefault(params.PUBLISH),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Build') {
|
||||||
|
parallel {
|
||||||
|
stage('iOS') { steps { script {
|
||||||
|
ios = jenkins.Build('go-waku/platforms/ios')
|
||||||
|
} } }
|
||||||
|
stage('Android') { steps { script {
|
||||||
|
android = jenkins.Build('go-waku/platforms/android')
|
||||||
|
} } }
|
||||||
|
stage('Linux') { steps { script {
|
||||||
|
linux = jenkins.Build('go-waku/platforms/linux')
|
||||||
|
} } }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Archive') {
|
||||||
|
steps { script {
|
||||||
|
sh('rm -f pkg/*')
|
||||||
|
jenkins.copyArts(ios)
|
||||||
|
jenkins.copyArts(android)
|
||||||
|
jenkins.copyArts(linux)
|
||||||
|
sha = "pkg/${utils.pkgFilename(ext: 'sha256')}"
|
||||||
|
dir('pkg') {
|
||||||
|
/* generate sha256 checksums for upload */
|
||||||
|
sh "sha256sum * | tee ../${sha}"
|
||||||
|
archiveArtifacts('*')
|
||||||
|
}
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
stage('Upload') {
|
||||||
|
steps { script {
|
||||||
|
/* object for easier URLs handling */
|
||||||
|
urls = [
|
||||||
|
/* mobile */
|
||||||
|
Android: utils.pkgUrl(android),
|
||||||
|
iOS: utils.pkgUrl(ios),
|
||||||
|
Linux: utils.pkgUrl(linux),
|
||||||
|
/* upload the sha256 checksums file too */
|
||||||
|
SHA: s3.uploadArtifact(sha),
|
||||||
|
]
|
||||||
|
/* add URLs to the build description */
|
||||||
|
jenkins.setBuildDesc(urls)
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
stage('Publish') {
|
||||||
|
when { expression { params.PUBLISH } }
|
||||||
|
steps { script {
|
||||||
|
github.publishReleaseFiles(repo: 'status-desktop');
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Helper that generates list of available choices for a parameter
|
||||||
|
* but re-orders them based on the currently set value. First is default. */
|
||||||
|
def List genChoices(String previousChoice, List defaultChoices) {
|
||||||
|
if (previousChoice == null) {
|
||||||
|
return defaultChoices
|
||||||
|
}
|
||||||
|
choices = defaultChoices.minus(previousChoice)
|
||||||
|
choices.add(0, previousChoice)
|
||||||
|
return choices
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Helper that makes PUBLISH default to 'false' unless:
|
||||||
|
* - The build is for a release branch
|
||||||
|
* - A user explicitly specified a value
|
||||||
|
* Since release builds create and re-create GitHub drafts every time. */
|
||||||
|
def Boolean getPublishDefault(Boolean previousValue) {
|
||||||
|
if (env.JOB_NAME.startsWith('go-waku/release')) { return true }
|
||||||
|
if (previousValue != null) { return previousValue }
|
||||||
|
return false
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
library 'status-jenkins-lib@v1.3.3'
|
||||||
|
|
||||||
|
pipeline {
|
||||||
|
agent {
|
||||||
|
dockerfile {
|
||||||
|
label 'linux'
|
||||||
|
dir 'src/github.com/waku-org/go-waku/scripts/linux'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
options {
|
||||||
|
timestamps()
|
||||||
|
disableConcurrentBuilds()
|
||||||
|
/* Prevent Jenkins jobs from running forever */
|
||||||
|
timeout(time: 30, unit: 'MINUTES')
|
||||||
|
/* Go requires a certain directory structure */
|
||||||
|
checkoutToSubdirectory('src/github.com/waku-org/go-waku')
|
||||||
|
/* Limit builds retained */
|
||||||
|
buildDiscarder(logRotator(
|
||||||
|
numToKeepStr: '10',
|
||||||
|
daysToKeepStr: '20',
|
||||||
|
artifactNumToKeepStr: '10',
|
||||||
|
))
|
||||||
|
/* Allows combined build to copy */
|
||||||
|
copyArtifactPermission('/go-waku/*')
|
||||||
|
}
|
||||||
|
|
||||||
|
environment {
|
||||||
|
BUILD_PLATFORM = 'linux'
|
||||||
|
/* Other stuff */
|
||||||
|
TARGET = 'linux'
|
||||||
|
REPO = "${env.WORKSPACE}/src/github.com/waku-org/go-waku"
|
||||||
|
GOPATH = "${env.WORKSPACE}"
|
||||||
|
PATH = "/usr/local/go/bin:${env.PATH}:${env.GOPATH}/bin"
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
|
||||||
|
stage('Prep') { steps { dir(env.REPO) { script {
|
||||||
|
env.DEB_ARTIFACT = "${env.REPO}/pkg/" + utils.pkgFilename(
|
||||||
|
name: "go-waku",
|
||||||
|
type: "x86_64",
|
||||||
|
ext: "deb"
|
||||||
|
)
|
||||||
|
} } } }
|
||||||
|
|
||||||
|
stage('Build') { steps { dir(env.REPO) {
|
||||||
|
sh "make"
|
||||||
|
dir('./scripts/linux') {
|
||||||
|
sh "./fpm-build.sh"
|
||||||
|
}
|
||||||
|
dir('build') {
|
||||||
|
sh "cp gowaku*.deb ${env.DEB_ARTIFACT}"
|
||||||
|
}
|
||||||
|
} } }
|
||||||
|
|
||||||
|
stage('Parallel Upload') {
|
||||||
|
parallel {
|
||||||
|
stage('Archive') {
|
||||||
|
steps { script {
|
||||||
|
archiveArtifacts(env.DEB_ARTIFACT.minus("${env.WORKSPACE}/"))
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
stage('Upload') {
|
||||||
|
steps { script {
|
||||||
|
env.PKG_URL = s3.uploadArtifact(env.DEB_ARTIFACT)
|
||||||
|
jenkins.setBuildDesc(x86_64_deb: env.PKG_URL)
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
post {
|
||||||
|
success { script { github.notifyPR(true) } }
|
||||||
|
failure { script { github.notifyPR(false) } }
|
||||||
|
always { cleanWs() }
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,7 +10,7 @@ LABEL description="go-waku: deb/rpm builder"
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive \
|
RUN export DEBIAN_FRONTEND=noninteractive \
|
||||||
&& apt update -yq \
|
&& apt update -yq \
|
||||||
&& apt install -yq ruby wget git rpm build-essential
|
&& apt install -yq ruby wget git rpm build-essential s3cmd curl
|
||||||
|
|
||||||
# Installing Golang
|
# Installing Golang
|
||||||
RUN GOLANG_SHA256="74b9640724fd4e6bb0ed2a1bc44ae813a03f1e72a4c76253e2d5c015494430ba" \
|
RUN GOLANG_SHA256="74b9640724fd4e6bb0ed2a1bc44ae813a03f1e72a4c76253e2d5c015494430ba" \
|
||||||
|
|
|
@ -5,48 +5,4 @@ make
|
||||||
|
|
||||||
cd /go-waku/scripts/linux
|
cd /go-waku/scripts/linux
|
||||||
|
|
||||||
parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )/../../
|
./fpm-build.sh
|
||||||
|
|
||||||
VERSION=`cat ${parent_path}/VERSION`
|
|
||||||
|
|
||||||
if [ ! -f ${parent_path}/build/waku ]
|
|
||||||
then
|
|
||||||
echo "waku binary does not exist. Execute make first"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
tmpdir=`mktemp -d`
|
|
||||||
|
|
||||||
chmod 777 ${tmpdir}
|
|
||||||
|
|
||||||
cp ${parent_path}/build/waku ${tmpdir}
|
|
||||||
|
|
||||||
strip --strip-unneeded ${tmpdir}/waku
|
|
||||||
|
|
||||||
pushd ${tmpdir}
|
|
||||||
|
|
||||||
fpm_build () {
|
|
||||||
fpm \
|
|
||||||
-s dir -t $1 \
|
|
||||||
-p gowaku-${VERSION}-x86_64.$1 \
|
|
||||||
--name go-waku \
|
|
||||||
--license "MIT, Apache 2.0" \
|
|
||||||
--version ${VERSION} \
|
|
||||||
--architecture x86_64 \
|
|
||||||
--depends libc6 \
|
|
||||||
--description "Go implementation of Waku v2 protocol" \
|
|
||||||
--url "https://github.com/waku-org/go-waku" \
|
|
||||||
--maintainer "Richard Ramos <richard@status.im>" \
|
|
||||||
waku=/usr/bin/waku
|
|
||||||
}
|
|
||||||
|
|
||||||
fpm_build "deb"
|
|
||||||
fpm_build "rpm"
|
|
||||||
|
|
||||||
echo "./././.asasdasd"
|
|
||||||
|
|
||||||
ls
|
|
||||||
|
|
||||||
mv *.deb *.rpm ${parent_path}/build/.
|
|
||||||
|
|
||||||
popd
|
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )/../../
|
||||||
|
|
||||||
|
VERSION=`cat ${parent_path}/VERSION`
|
||||||
|
|
||||||
|
if [ ! -f ${parent_path}/build/waku ]
|
||||||
|
then
|
||||||
|
echo "waku binary does not exist. Execute make first"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
tmpdir=`mktemp -d`
|
||||||
|
|
||||||
|
chmod 777 ${tmpdir}
|
||||||
|
|
||||||
|
cp ${parent_path}/build/waku ${tmpdir}
|
||||||
|
|
||||||
|
strip --strip-unneeded ${tmpdir}/waku
|
||||||
|
|
||||||
|
pushd ${tmpdir}
|
||||||
|
|
||||||
|
fpm_build () {
|
||||||
|
fpm \
|
||||||
|
-s dir -t $1 \
|
||||||
|
-p gowaku-${VERSION}-x86_64.$1 \
|
||||||
|
--name go-waku \
|
||||||
|
--license "MIT, Apache 2.0" \
|
||||||
|
--version ${VERSION} \
|
||||||
|
--architecture x86_64 \
|
||||||
|
--depends libc6 \
|
||||||
|
--description "Go implementation of Waku v2 protocol" \
|
||||||
|
--url "https://github.com/waku-org/go-waku" \
|
||||||
|
--maintainer "Richard Ramos <richard@status.im>" \
|
||||||
|
waku=/usr/bin/waku
|
||||||
|
}
|
||||||
|
|
||||||
|
fpm_build "deb"
|
||||||
|
fpm_build "rpm"
|
||||||
|
|
||||||
|
ls
|
||||||
|
|
||||||
|
mv *.deb *.rpm ${parent_path}/build/.
|
||||||
|
|
||||||
|
popd
|
Loading…
Reference in New Issue