ci: Run in kubernetes
dustin/basementhud/pipeline/head This commit looks good Details

pull/2/head
Dustin 2022-11-25 16:24:30 -06:00
parent 03da29b5a6
commit 19cb4256f3
3 changed files with 50 additions and 28 deletions

11
.editorconfig Normal file
View File

@ -0,0 +1,11 @@
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[Jenkinsfile]
indent_style = space
indent_size = 4

36
ci/Jenkinsfile vendored
View File

@ -1,11 +1,9 @@
DOCKER_BUILD_ARGS = '''\
--build-arg UID=$(id -u) \
--build-arg GID=$(id -g) \
'''
pipeline { pipeline {
agent { agent {
label 'docker && aarch64' kubernetes {
yamlFile 'ci/podTemplate.yaml'
defaultContainer 'build'
}
} }
options { options {
@ -13,10 +11,6 @@ pipeline {
disableConcurrentBuilds() disableConcurrentBuilds()
} }
triggers {
pollSCM ''
}
parameters { parameters {
booleanParam \ booleanParam \
name: 'Clean', name: 'Clean',
@ -25,14 +19,6 @@ pipeline {
stages { stages {
stage('Build') { stage('Build') {
agent {
dockerfile {
reuseNode true
dir 'ci'
args '--privileged -u 0:0'
additionalBuildArgs DOCKER_BUILD_ARGS
}
}
steps { steps {
script { script {
if (params.Clean) { if (params.Clean) {
@ -54,17 +40,11 @@ pipeline {
changeRequest() changeRequest()
} }
} }
agent {
dockerfile {
reuseNode true
dir 'ci'
args '-v /etc/ssh/ssh_known_hosts:/etc/ssh/ssh_known_hosts'
additionalBuildArgs DOCKER_BUILD_ARGS
}
}
steps { steps {
sshagent(['jenkins-pxe']) { container('publish') {
sh 'make publish' sshagent(['jenkins-pxe']) {
sh 'make publish'
}
} }
} }
} }

31
ci/podTemplate.yaml Normal file
View File

@ -0,0 +1,31 @@
spec:
nodeSelector:
kubernetes.io/arch: arm64
terminationGracePeriodSeconds: 0
containers:
- name: build
image: git.pyrocufflink.net/containerimages/build/basementhud
command:
- sleep
- infinity
securityContext:
readOnlyRootFilesystem: true
privileged: true
volumeMounts:
- name: tmp
mountPath: /tmp
- name: publish
image: git.pyrocufflink.net/containerimages/build/basementhud
command:
- sleep
- infinity
securityContext:
readOnlyRootFilesystem: true
runAsUser: 1000
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir:
medium: Memory