Skip to content

Commit

Permalink
Precommit integration test gate (apache#1392)
Browse files Browse the repository at this point in the history
* Precommit integration test gate

Currently there are no integration tests in tree, so the job just
builds the docker image.

* fixup license
  • Loading branch information
ivankelly authored and merlimat committed Mar 15, 2018
1 parent 9ee682b commit fee5667
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 10 deletions.
28 changes: 18 additions & 10 deletions .test-infra/jenkins/common_job_properties.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,28 @@ class common_job_properties {
daysToKeep(14)
}

context.parameters {
// This is a recommended setup if you want to run the job manually. The
// ${gitrepo} parameter needs to be provided, and defaults to the main repo.
stringParam(
'gitrepo',
scmUrl,
'Git repository to build.')

// This is a recommended setup if you want to run the job manually. The
// ${sha1} parameter needs to be provided, and defaults to the main branch.
stringParam(
'sha1',
defaultBranch,
'Commit id or refname (eg: origin/pr/9/head) you want to build.')
}


// Source code management.
context.scm {
git {
remote {
url(scmUrl)
url('${gitrepo}')
refspec('+refs/heads/*:refs/remotes/origin/* ' +
'+refs/pull/${ghprbPullId}/*:refs/remotes/origin/pr/${ghprbPullId}/*')
}
Expand All @@ -92,15 +109,6 @@ class common_job_properties {
}
}

context.parameters {
// This is a recommended setup if you want to run the job manually. The
// ${sha1} parameter needs to be provided, and defaults to the main branch.
stringParam(
'sha1',
defaultBranch,
'Commit id or refname (eg: origin/pr/9/head) you want to build.')
}

context.wrappers {
// Abort the build if it's stuck for more minutes than specified.
timeout {
Expand Down
67 changes: 67 additions & 0 deletions .test-infra/jenkins/job_pulsar_precommit_integrationtests.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import common_job_properties

// This is the Java precommit which runs a maven install, and the current set of precommit tests.
freeStyleJob('pulsar_precommit_integrationtests') {
description('precommit integration test verification for pull requests of <a href="http://pulsar.apache.org">Apache Pulsar</a>.')

// Set common parameters.
common_job_properties.setTopLevelMainJobProperties(delegate)

// Sets that this is a PreCommit job.
common_job_properties.setPreCommit(delegate, 'Integration Tests')

steps {
shell('tests/scripts/pre-integ-tests.sh')

// Build everything
maven {
// Set Maven parameters.
common_job_properties.setMavenConfig(delegate)

goals('-B clean install -Pdocker')
properties(skipTests: true, interactiveMode: false)
}

maven {
// Set Maven parameters.
common_job_properties.setMavenConfig(delegate)
rootPOM('tests/pom.xml')
goals('-B test -DintegrationTests')
}

shell('tests/scripts/post-integ-tests.sh')
}

publishers {
archiveArtifacts {
allowEmpty(true)
pattern('**/target/container-logs/**')
// archiveJunit doesn't capture everything, so copy these files
pattern('**/surefire-reports/TEST-*.xml')
pattern('**/surefire-reports/*.txt')
// pre and post scripts should output to .debug-info files if needed
pattern('*.debug-info')
}
archiveJunit('**/surefire-reports/TEST-*.xml') {
allowEmptyResults(true)
}
}
}
22 changes: 22 additions & 0 deletions tests/scripts/post-integ-tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

set -ex
kill $(cat docker-log.pid) || true
29 changes: 29 additions & 0 deletions tests/scripts/pre-integ-tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

set -ex
id
ulimit -a
pwd
df -h
ps -eo euser,pid,ppid,pgid,start,pcpu,pmem,cmd
docker network prune -f --filter name=pulsarnet_*
docker system events > docker.debug-info & echo $! > docker-log.pid

0 comments on commit fee5667

Please sign in to comment.