diff --git a/jobs/swh-docker-dev.yaml b/jobs/swh-docker-dev.yaml --- a/jobs/swh-docker-dev.yaml +++ b/jobs/swh-docker-dev.yaml @@ -1,6 +1,14 @@ -- job: +- project: name: swh-docker-dev - description: Build the swh/stack:latest image + jobs: + - swh-docker-dev + + +- job-template: + name: swh-docker-dev + description: "Build the swh/stack:latest image" + project-type: pipeline + docker_image: tox node: built-in scm: @@ -10,22 +18,6 @@ - "*/master" triggers: - - timed: "@midnight" - - wrappers: - - timeout: - timeout: 30 - abort: true - - timestamps - - builders: - - shell: | - #!/bin/bash - cd docker - docker build --pull --no-cache -t swh/stack . - tox + - timed: "@midnight" - publishers: - - archive: - artifacts: 'docker/**/*.logs' - allow-empty: true + dsl: !include-jinja2: templates/swh-docker-dev.groovy.j2 diff --git a/jobs/templates/swh-docker-dev.groovy.j2 b/jobs/templates/swh-docker-dev.groovy.j2 new file mode 100644 --- /dev/null +++ b/jobs/templates/swh-docker-dev.groovy.j2 @@ -0,0 +1,57 @@ +pipeline { + agent none + + options { + timeout(time: 30, unit: 'MINUTES') + timestamps() + } + + stages { + stage('Checkout') { + agent { + label "built-in" + } + + steps { + git url: "https://forge.softwareheritage.org/source/swh-environment.git" + } + } + + stage('Build Docker images') { + agent { + label "built-in" + } + + steps { + dir('docker') { + sh 'docker build --pull --no-cache -t swh/stack .' + } + } + } + + stage('Run tests') { + {% filter indent(width=6) %} + {%- include 'templates/includes/agent-docker.groovy.j2' -%} + {% endfilter %} + + steps { + lock('docker-agent-host-port-5080') { + dir('docker') { + sh 'python3 -m tox -- -v' + } + } + } + } + } + + post { + always { + node('built-in') { + archiveArtifacts( + allowEmptyArchive: true, + artifacts: 'docker/**/*.logs', + ) + } + } + } +} diff --git a/jobs/templates/swh-mirror-run-tests.groovy.j2 b/jobs/templates/swh-mirror-run-tests.groovy.j2 --- a/jobs/templates/swh-mirror-run-tests.groovy.j2 +++ b/jobs/templates/swh-mirror-run-tests.groovy.j2 @@ -51,17 +51,19 @@ steps { unstash 'image-tag-env' - withCredentials([ - usernamePassword(credentialsId: 'swh-mirror-test-kafka', - usernameVariable: 'SWH_MIRROR_TEST_KAFKA_USERNAME', - passwordVariable: 'SWH_MIRROR_TEST_KAFKA_PASSWORD'), - usernameColonPassword(credentialsId: 'swh-mirror-test-objstorage', - variable: 'SWH_MIRROR_TEST_OBJSTORAGE_CREDENTIALS')]) { - sh ''' - python3 -m pip install -rrequirements-test.txt - SWH_MIRROR_TEST_OBJSTORAGE_URL="https://$SWH_MIRROR_TEST_OBJSTORAGE_CREDENTIALS@$SWH_MIRROR_TEST_OBJSTORAGE_HOST/" \ - python3 -m pytest -v --envfile=image-tag.env --timeout=3600 - ''' + lock('docker-agent-host-port-5080') { + withCredentials([ + usernamePassword(credentialsId: 'swh-mirror-test-kafka', + usernameVariable: 'SWH_MIRROR_TEST_KAFKA_USERNAME', + passwordVariable: 'SWH_MIRROR_TEST_KAFKA_PASSWORD'), + usernameColonPassword(credentialsId: 'swh-mirror-test-objstorage', + variable: 'SWH_MIRROR_TEST_OBJSTORAGE_CREDENTIALS')]) { + sh ''' + python3 -m pip install -rrequirements-test.txt + SWH_MIRROR_TEST_OBJSTORAGE_URL="https://$SWH_MIRROR_TEST_OBJSTORAGE_CREDENTIALS@$SWH_MIRROR_TEST_OBJSTORAGE_HOST/" \ + python3 -m pytest -v --envfile=image-tag.env --timeout=3600 + ''' + } } } }