| /* | |
| * Copyright 2014 Berke Viktor. | |
| * | |
| * Licensed 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 com.gitblit.GitBlit | |
| import com.gitblit.Keys | |
| import com.gitblit.models.RepositoryModel | |
| import com.gitblit.models.UserModel | |
| import com.gitblit.utils.JGitUtils | |
| import org.eclipse.jgit.lib.Repository | |
| import org.slf4j.Logger | |
| /* | |
| * This script triggers automatic repo fetches in Redmine upon pushes. | |
| * It won't work out-of-box, you need to configure a few things. | |
| * | |
| * Redmine | |
| * - Go to Administration / Settings / Repositories, and make sure that the | |
| * "Enable WS for repository management" option is checked. Also generate an | |
| * API key and take note of it. | |
| * - Open a project page, go to Settings / Repositories and add a repo. Take | |
| * note of the Identifier. | |
| * | |
| * Gitblit | |
| * - Set the redmineProject custom field in gitblit.properties, e.g. | |
| * groovy.customFields = "redmineProject=Redmine Project Identifier" | |
| * - Edit the repo you added to Redmine, go to hook scripts and add this script | |
| * to the post-receive hooks. Also specify the Redmine project's identifier | |
| * under custom fields. | |
| * | |
| * Troubleshooting | |
| * - run Gitblit interactively and check its console output | |
| * - on the Redmine server, tail -f log/access.log | |
| * | |
| * If you want your repos to work with multiple Redmine projects, you don't need | |
| * to add the repos to all of them. Instead, add the repo to a single project, | |
| * then go to Administration / Settings / Repositories and enable the "Allow | |
| * issues of all the other projects to be referenced and fixed" option. | |
| */ | |
| /* specify the URL of your Redmine instance here */ | |
| def redmineURL = "http://redmine.foo.bar/" | |
| /* specify the API key you generated in Redmine Administration here */ | |
| def apiKey = "FIXME" | |
| /* | |
| * construct the URL from global and repo properties, for more info refer to | |
| * http://www.redmine.org/projects/redmine/wiki/RedmineSettings#Fetch-commits-automatically | |
| */ | |
| def triggerURL = redmineURL + "sys/fetch_changesets?id=" + repository.customFields.redmineProject + "&key=" + apiKey | |
| /* log the action */ | |
| logger.info("Redmine Fetch hook triggered by ${user.username} for ${repository.name}: GET ${triggerURL}") | |
| /* send the HTTP GET query */ | |
| new URL(triggerURL).getContent() |