Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/main/resources/update/gitbucket-ci_1.7.0.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<changeSet>
<addColumn tableName="CI_CONFIG">
<column name="PAGES_DIR" type="varchar(200)" nullable="true"/>
</addColumn>
</changeSet>
4 changes: 3 additions & 1 deletion src/main/scala/Plugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,9 @@ class Plugin extends gitbucket.core.plugin.Plugin with CIService with AccountSer
new Version("1.4.0",
new LiquibaseMigration("update/gitbucket-ci_1.4.0.xml")),
new Version("1.5.0",
new LiquibaseMigration("update/gitbucket-ci_1.5.0.xml"))
new LiquibaseMigration("update/gitbucket-ci_1.5.0.xml")),
new Version("1.6.0"),
new Version("1.7.0", new LiquibaseMigration("update/gitbucket-ci_1.7.0.xml"))
)

override val assetsMappings = Seq("/ci" -> "/gitbucket/ci/assets")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.gitbucket.ci.controller

import java.io.FileInputStream
import java.io.{File, FileInputStream}

import gitbucket.core.controller.ControllerBase
import gitbucket.core.service.RepositoryService.RepositoryInfo
Expand Down Expand Up @@ -48,7 +48,8 @@ object CIController {
buildFile: Option[String],
notification: Boolean,
skipWords: Option[String],
runWords: Option[String]
runWords: Option[String],
pagesDir: Option[String]
)

case class CISystemConfigForm(
Expand All @@ -70,7 +71,8 @@ class CIController extends ControllerBase
"buildFile" -> trim(label("Build file", optionalRequired(_("buildType") == Seq("file"), text()))),
"notification" -> trim(label("Notification", boolean())),
"skipWords" -> trim(label("Skip words", optional(text()))),
"runWords" -> trim(label("Run words", optional(text())))
"runWords" -> trim(label("Run words", optional(text()))),
"pagesDir" -> trim(label("Pages Directory", optional(text())))
)(BuildConfigForm.apply)

val ciSystemConfigForm = mapping(
Expand Down Expand Up @@ -215,6 +217,20 @@ class CIController extends ControllerBase
workspace(repository, buildNumber, path)
})

get("/:owner/:repository/ci-pages/*")(referrersOnly{ repository =>
val path = multiParams("splat").head
(for( config <- loadCIConfig(repository.owner, repository.name);
buildNumber <- getLatestBuildNumberForDefaultBranch(repository);
pagesDir <- config.pagesDir
) yield {
val buildDir = CIUtils.getBuildDir(repository.owner, repository.name, buildNumber)
val workspaceDir = new File(buildDir, "workspace")
new File(new File(workspaceDir, pagesDir), path)
}).getOrElse{
NotFound()
}
})

private def workspace(repository: RepositoryInfo, buildNumber: Int, path: String) = {
val buildNumber = params("buildNumber").toInt
val path = multiParams("splat").headOption.getOrElse("")
Expand Down Expand Up @@ -324,7 +340,8 @@ class CIController extends ControllerBase
}),
form.notification,
form.skipWords,
form.runWords
form.runWords,
form.pagesDir
)
))
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import gitbucket.core.service.SystemSettingsService.SystemSettings
import gitbucket.core.service.{AccountService, CommitStatusService, RepositoryService, SystemSettingsService}
import gitbucket.core.servlet.Database
import gitbucket.core.util.Directory.getRepositoryDir
import gitbucket.core.util.Mailer
import gitbucket.core.util.{Directory, Mailer}
import gitbucket.core.util.SyntaxSugars.using
import io.github.gitbucket.ci.model.CIResult
import io.github.gitbucket.ci.service._
Expand Down
6 changes: 4 additions & 2 deletions src/main/scala/io/github/gitbucket/ci/model/CIConfig.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ trait CIConfigComponent { self: gitbucket.core.model.Profile =>
val notification = column[Boolean]("NOTIFICATION")
val skipWords = column[String]("SKIP_WORDS")
val runWords = column[String]("RUN_WORDS")
def * = (userName, repositoryName, buildType, buildScript, notification, skipWords.?, runWords.?) <> (CIConfig.tupled, CIConfig.unapply)
val pagesDir = column[String]("PAGES_DIR")
def * = (userName, repositoryName, buildType, buildScript, notification, skipWords.?, runWords.?, pagesDir.?) <> (CIConfig.tupled, CIConfig.unapply)
}
}

Expand All @@ -25,7 +26,8 @@ case class CIConfig(
buildScript: String,
notification: Boolean,
skipWords: Option[String],
runWords: Option[String]
runWords: Option[String],
pagesDir: Option[String]
){
lazy val skipWordsSeq: Seq[String] = skipWords.map(_.split(",").map(_.trim).toSeq).getOrElse(Nil)
lazy val runWordsSeq: Seq[String] = runWords.map(_.split(",").map(_.trim).toSeq).getOrElse(Nil)
Expand Down
8 changes: 8 additions & 0 deletions src/main/scala/io/github/gitbucket/ci/service/CIService.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ import io.github.gitbucket.ci.manager.BuildManager
import io.github.gitbucket.ci.model._
import io.github.gitbucket.ci.model.Profile._
import gitbucket.core.model.Profile.profile.blockingApi._
import gitbucket.core.service.RepositoryService.RepositoryInfo
import gitbucket.core.service.{AccountService, RepositoryService}
import io.github.gitbucket.ci.util.CIUtils
import org.apache.commons.io.FileUtils

import scala.collection.JavaConverters._

case class BuildJob(
Expand Down Expand Up @@ -103,6 +105,12 @@ trait CIService { self: AccountService with RepositoryService =>
}
}

def getLatestBuildNumberForDefaultBranch(repository: RepositoryInfo)(implicit s: Session): Option[Int] = {
CIResults.filter { t =>
(t.userName === repository.owner.bind) && (t.repositoryName === repository.name.bind) && (t.buildBranch === repository.repository.defaultBranch.bind)
}.sortBy(_.buildNumber.desc).map(_.buildNumber).firstOption
}

def runBuild(userName: String, repositoryName: String, buildUserName: String, buildRepositoryName: String,
buildBranch: String, sha: String, commitMessage: String, commitUserName: String, commitMailAddress: String,
pullRequestId: Option[Int], buildAuthor: Account, config: CIConfig)(implicit s: Session): Unit = {
Expand Down
4 changes: 4 additions & 0 deletions src/main/twirl/gitbucket/ci/config.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@
<label for="runWords">Run words</label> (comma-separated words)
<input type="text" name="runWords" id="runWords" class="form-control" value="@config.map(_.runWords).getOrElse("ok to test, test this please")">
</fieldset>
<fieldset class="form-group">
<label for="pagesDir">Pages directory</label>
<input type="text" name="pagesDir" id="pagesDir" class="form-control" value="@config.map(_.pagesDir).getOrElse("")">
</fieldset>
</div>
</div>
</div>
Expand Down