From 6f69c1e5e0c71b3a4b0309a5e6d9b37c643ac42a Mon Sep 17 00:00:00 2001 From: Gard Rimestad Date: Wed, 27 Apr 2016 13:23:09 +0200 Subject: [PATCH] Sync repositories in travis for the spinnaker github user --- igor-web/config/igor.yml | 5 ++++- .../spinnaker/igor/travis/TravisBuildMonitor.groovy | 10 +++++++++- .../spinnaker/igor/travis/client/TravisClient.groovy | 3 +++ .../spinnaker/igor/travis/service/TravisService.groovy | 8 ++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/igor-web/config/igor.yml b/igor-web/config/igor.yml index c6ee180a6..e9ca6623c 100644 --- a/igor-web/config/igor.yml +++ b/igor-web/config/igor.yml @@ -5,11 +5,14 @@ netflix: spinnaker: build: pollInterval: 30 - + endpoints.health.sensitive: false #travis: # enabled: true +# Repository sync makes a call to travis telling travis to sync repos against github. +# This makes new repos with builds in travis the github user has access to tracked by spinnaker. +# repositorySyncEnabled: true # Travis names are prefixed with travis- inside igor. # masters: # - name: ci # This will show as travis-ci inside spinnaker. diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/TravisBuildMonitor.groovy b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/TravisBuildMonitor.groovy index 18eba2ca8..640e48a63 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/TravisBuildMonitor.groovy +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/TravisBuildMonitor.groovy @@ -80,6 +80,10 @@ class TravisBuildMonitor implements PollingMonitor{ @Value('${spinnaker.build.pollInterval:60}') int pollInterval + @SuppressWarnings('GStringExpressionWithinString') + @Value('${travis.repositorySyncEnabled:false}') + Boolean repositorySyncEnabled + @Override void onApplicationEvent(ContextRefreshedEvent event) { log.info('Started') @@ -217,8 +221,12 @@ class TravisBuildMonitor implements PollingMonitor{ }, { } as Action0 ) - log.info("Last poll took ${System.currentTimeMillis() - lastPoll}ms (master: ${master})") + if (repositorySyncEnabled) { + startTime = System.currentTimeMillis() + travisService.syncRepos() + log.info("repositorySync: Took ${System.currentTimeMillis() - startTime}ms to sync repositories for ${master}") + } results } diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/client/TravisClient.groovy b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/client/TravisClient.groovy index 2324cb8e7..01dacbb84 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/client/TravisClient.groovy +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/client/TravisClient.groovy @@ -79,6 +79,9 @@ interface TravisClient { @Headers("Travis-API-Version: 3") TriggerResponse triggerBuild(@Header("Authorization") String accessToken, @Path('repoSlug') String repoSlug, @Body RepoRequest repoRequest) + @POST('/users/sync') + Response usersSync(@Header("Authorization") String accessToken) + @GET('/jobs/{job_id}') Jobs jobs(@Header("Authorization") String accessToken , @Path('job_id') int jobId) diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/service/TravisService.groovy b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/service/TravisService.groovy index ba364bbc7..0fe1c9bb4 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/service/TravisService.groovy +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/travis/service/TravisService.groovy @@ -253,6 +253,14 @@ class TravisService implements BuildService { return true } + void syncRepos() { + try { + travisClient.usersSync(getAccessToken()) + } catch (RetrofitError e) { + log.error "synchronizing travis repositories failed with error: ${e.message}" + } + } + @Override BuildServiceProvider buildServiceProvider() { return BuildServiceProvider.TRAVIS