diff --git a/src/main/resources/update/gitbucket-ci_1.7.0.xml b/src/main/resources/update/gitbucket-ci_1.7.0.xml
new file mode 100644
index 0000000..fc752c7
--- /dev/null
+++ b/src/main/resources/update/gitbucket-ci_1.7.0.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/scala/Plugin.scala b/src/main/scala/Plugin.scala
index 927afac..8e37bf7 100644
--- a/src/main/scala/Plugin.scala
+++ b/src/main/scala/Plugin.scala
@@ -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")
diff --git a/src/main/scala/io/github/gitbucket/ci/controller/CIController.scala b/src/main/scala/io/github/gitbucket/ci/controller/CIController.scala
index 92c1a12..bf3cd63 100644
--- a/src/main/scala/io/github/gitbucket/ci/controller/CIController.scala
+++ b/src/main/scala/io/github/gitbucket/ci/controller/CIController.scala
@@ -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
@@ -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(
@@ -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(
@@ -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("")
@@ -324,7 +340,8 @@ class CIController extends ControllerBase
}),
form.notification,
form.skipWords,
- form.runWords
+ form.runWords,
+ form.pagesDir
)
))
} else {
diff --git a/src/main/scala/io/github/gitbucket/ci/manager/BuildJobThread.scala b/src/main/scala/io/github/gitbucket/ci/manager/BuildJobThread.scala
index 8541161..4b92960 100644
--- a/src/main/scala/io/github/gitbucket/ci/manager/BuildJobThread.scala
+++ b/src/main/scala/io/github/gitbucket/ci/manager/BuildJobThread.scala
@@ -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._
diff --git a/src/main/scala/io/github/gitbucket/ci/model/CIConfig.scala b/src/main/scala/io/github/gitbucket/ci/model/CIConfig.scala
index d18a05b..18255e3 100644
--- a/src/main/scala/io/github/gitbucket/ci/model/CIConfig.scala
+++ b/src/main/scala/io/github/gitbucket/ci/model/CIConfig.scala
@@ -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)
}
}
@@ -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)
diff --git a/src/main/scala/io/github/gitbucket/ci/service/CIService.scala b/src/main/scala/io/github/gitbucket/ci/service/CIService.scala
index 89c26e1..514536d 100644
--- a/src/main/scala/io/github/gitbucket/ci/service/CIService.scala
+++ b/src/main/scala/io/github/gitbucket/ci/service/CIService.scala
@@ -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(
@@ -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 = {
diff --git a/src/main/twirl/gitbucket/ci/config.scala.html b/src/main/twirl/gitbucket/ci/config.scala.html
index 9343be2..f612ac5 100644
--- a/src/main/twirl/gitbucket/ci/config.scala.html
+++ b/src/main/twirl/gitbucket/ci/config.scala.html
@@ -53,6 +53,10 @@
(comma-separated words)
+