Page MenuHomeDevCentral

D596.id1448.diff
No OneTemporary

D596.id1448.diff

diff --git a/src/Build/Payloads/AllBuildPayload.php b/src/Build/Payloads/AllBuildPayload.php
new file mode 100644
--- /dev/null
+++ b/src/Build/Payloads/AllBuildPayload.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Keruald\DockerHub\Build\Payloads;
+
+/**
+ * Represents a build trigger payload to build all branches/tags.
+ */
+class AllBuildPayload extends BuildPayload {
+
+ /**
+ * @var bool
+ */
+ public $build = true;
+
+}
diff --git a/src/Build/Payloads/BuildPayload.php b/src/Build/Payloads/BuildPayload.php
new file mode 100644
--- /dev/null
+++ b/src/Build/Payloads/BuildPayload.php
@@ -0,0 +1,7 @@
+<?php
+
+namespace Keruald\DockerHub\Build\Payloads;
+
+abstract class BuildPayload {
+
+}
diff --git a/src/Build/Payloads/DockerTagBuildPayload.php b/src/Build/Payloads/DockerTagBuildPayload.php
new file mode 100644
--- /dev/null
+++ b/src/Build/Payloads/DockerTagBuildPayload.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Keruald\DockerHub\Build\Payloads;
+
+/**
+ * Represents a build trigger payload to build a specific Docker tag.
+ */
+class DockerTagBuildPayload extends BuildPayload {
+
+ /**
+ * @var string
+ */
+ public $docker_tag;
+
+ /**
+ * Initializes a new instance of the DockerTagBuildPayload class.
+ *
+ * @param string $tag The name of the Docker tag to build
+ */
+ public function __construct ($tag) {
+ $this->docker_tag = $tag;
+ }
+
+}
diff --git a/src/Build/Payloads/SourceRepositoryBuildPayload.php b/src/Build/Payloads/SourceRepositoryBuildPayload.php
new file mode 100644
--- /dev/null
+++ b/src/Build/Payloads/SourceRepositoryBuildPayload.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Keruald\DockerHub\Build\Payloads;
+
+/**
+ * Represents a build trigger payload to build a specific tag or branch
+ * from the source repository.
+ */
+class SourceRepositoryBuildPayload extends BuildPayload {
+
+ /**
+ * @var string
+ */
+ public $source_type;
+
+ /**
+ * @var string
+ */
+ public $source_name;
+
+ /**
+ * Initializes a new instance of the SourceRepositoryBuildPayload class.
+ *
+ * @param string $type "Tag" or "Branch"
+ * @param string $name The name of the tag or branch in the repository
+ */
+ public function __construct ($type, $name) {
+ $this->source_type = $type;
+ $this->source_name = $name;
+ }
+
+}
diff --git a/src/Build/TriggerBuild.php b/src/Build/TriggerBuild.php
--- a/src/Build/TriggerBuild.php
+++ b/src/Build/TriggerBuild.php
@@ -4,6 +4,10 @@
use Keruald\DockerHub\DockerHubImage as Image;
+use Keruald\DockerHub\Build\Payloads\AllBuildPayload;
+use Keruald\DockerHub\Build\Payloads\DockerTagBuildPayload;
+use Keruald\DockerHub\Build\Payloads\SourceRepositoryBuildPayload;
+
/**
* this classe represents a trigger for a new build on the Docker Hub registry.
*/
@@ -56,4 +60,44 @@
. '/trigger/' . $this->token . '/';
}
+ ///
+ /// Payloads to specify what to build
+ ///
+
+ /**
+ * Gets a payload to build all branch/tag.
+ *
+ * @return Keruald\DockerHub\Build\Payloads\AllBuildPayload
+ */
+ public function getPayloadForAll () {
+ return new AllBuildPayload;
+ }
+
+ /**
+ * Gets a payload to build the specified Docker tag
+ *
+ * @return Keruald\DockerHub\Build\Payloads\DockerTagBuildPayload
+ */
+ public function getPayloadForDockerTag ($tag) {
+ return new DockerTagBuildPayload($tag);
+ }
+
+ /**
+ * Gets a payload to build the specified repository branch
+ *
+ * @return Keruald\DockerHub\Build\Payloads\SourceRepositoryBuildPayload
+ */
+ public function getPayloadForSourceRepositoryBranch ($tag) {
+ return new SourceRepositoryBuildPayload("Branch", $tag);
+ }
+
+ /**
+ * Gets a payload to build the specified repository tag
+ *
+ * @return Keruald\DockerHub\Build\Payloads\SourceRepositoryBuildPayload
+ */
+ public function getPayloadForSourceRepositoryTag ($tag) {
+ return new SourceRepositoryBuildPayload("Tag", $tag);
+ }
+
}
diff --git a/tests/Build/TriggerBuildTest.php b/tests/Build/TriggerBuildTest.php
--- a/tests/Build/TriggerBuildTest.php
+++ b/tests/Build/TriggerBuildTest.php
@@ -4,6 +4,9 @@
use Keruald\DockerHub\DockerHubImage;
use Keruald\DockerHub\Build\TriggerBuild;
+use Keruald\DockerHub\Build\Payloads\AllBuildPayload;
+use Keruald\DockerHub\Build\Payloads\DockerTagBuildPayload;
+use Keruald\DockerHub\Build\Payloads\SourceRepositoryBuildPayload;
class TriggerBuildTest extends \PHPUnit_Framework_TestCase {
@@ -24,4 +27,34 @@
);
}
+ public function testGetPayloadForAll () {
+ // {"build": true}
+ $payload = $this->trigger->getPayloadForAll();
+ $this->assertInstanceOf(AllBuildPayload::class, $payload);
+ $this->assertTrue($payload->build);
+ }
+
+ public function testGetPayloadForDockerTag () {
+ // {"docker_tag": "master"}
+ $payload = $this->trigger->getPayloadForDockerTag("master");
+ $this->assertInstanceOf(DockerTagBuildPayload::class, $payload);
+ $this->assertSame($payload->docker_tag, "master");
+ }
+
+ public function testGetPayloadForSourceRepositoryBranch () {
+ // {"source_type": "Branch", "source_name": "staging"}
+ $payload = $this->trigger->getPayloadForSourceRepositoryBranch("staging");
+ $this->assertInstanceOf(SourceRepositoryBuildPayload::class, $payload);
+ $this->assertSame($payload->source_type, "Branch");
+ $this->assertSame($payload->source_name, "staging");
+ }
+
+ public function testGetPayloadForSourceRepositoryTag () {
+ // {"source_type": "Tag", "source_name": "v1.1"}
+ $payload = $this->trigger->getPayloadForSourceRepositoryTag("v1.1");
+ $this->assertInstanceOf(SourceRepositoryBuildPayload::class, $payload);
+ $this->assertSame($payload->source_type, "Tag");
+ $this->assertSame($payload->source_name, "v1.1");
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 21, 12:26 (11 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2591474
Default Alt Text
D596.id1448.diff (5 KB)

Event Timeline