forked from TrueCloudLab/frostfs-node
This change introduces a custom helper from our shared library [0] that defines ad-hoc container environment to execute CI steps in. Pre-commit installation will now be cached on Jenkins Agent: builds will tolerate network hiccups better and we will also save some run time (although on non-critical path of a parallel process). [0]: TrueCloudLab/jenkins#8 Change-Id: I93b01f169c457aa35f4d8bc5b90f31b31e2bd8b2 Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
83 lines
1.9 KiB
Groovy
83 lines
1.9 KiB
Groovy
def golang = ['1.23', '1.24']
|
|
def golangDefault = "golang:${golang.last()}"
|
|
|
|
async {
|
|
|
|
for (version in golang) {
|
|
def go = version
|
|
|
|
task("test/go${go}") {
|
|
container("golang:${go}") {
|
|
sh 'make test'
|
|
}
|
|
}
|
|
|
|
task("build/go${go}") {
|
|
container("golang:${go}") {
|
|
for (app in ['cli', 'node', 'ir', 'adm', 'lens']) {
|
|
sh """
|
|
make bin/frostfs-${app}
|
|
bin/frostfs-${app} --version
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task('test/race') {
|
|
container(golangDefault) {
|
|
sh 'make test GOFLAGS="-count=1 -race"'
|
|
}
|
|
}
|
|
|
|
task('lint') {
|
|
container(golangDefault) {
|
|
sh 'make lint-install lint'
|
|
}
|
|
}
|
|
|
|
task('staticcheck') {
|
|
container(golangDefault) {
|
|
sh 'make staticcheck-install staticcheck-run'
|
|
}
|
|
}
|
|
|
|
task('gopls') {
|
|
container(golangDefault) {
|
|
sh 'make gopls-install gopls-run'
|
|
}
|
|
}
|
|
|
|
task('gofumpt') {
|
|
container(golangDefault) {
|
|
sh '''
|
|
make fumpt-install
|
|
make fumpt
|
|
git diff --exit-code --quiet
|
|
'''
|
|
}
|
|
}
|
|
|
|
task('vulncheck') {
|
|
container(golangDefault) {
|
|
sh '''
|
|
go install golang.org/x/vuln/cmd/govulncheck@latest
|
|
govulncheck ./...
|
|
'''
|
|
}
|
|
}
|
|
|
|
task('pre-commit') {
|
|
dockerfile("""
|
|
FROM ${golangDefault}
|
|
RUN apt update && \
|
|
apt install -y --no-install-recommends pre-commit
|
|
""") {
|
|
withEnv(['SKIP=make-lint,go-staticcheck-repo-mod,go-unit-tests,gofumpt']) {
|
|
sh 'pre-commit run --color=always --hook-stage=manual --all-files'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// TODO: dco check
|