Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deployment branch policies #1108

Merged
merged 7 commits into from
Mar 10, 2023
Merged
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
7 changes: 4 additions & 3 deletions doc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,10 @@ v3 APIs:
* [Check Suites](repo/check_suites.md)
* [Contents](repo/contents.md)
* [Deployments](repo/deployments.md)
* [Secrets](environment/secrets.md)
* [Variables](environment/variables.md)
* [Environments](repo/environments.md)
* [Policies](repo/deployments/policies.md)
* [Environments](repo/deployments/environments.md)
* [Secrets](repo/deployments/environment/secrets.md)
* [Variables](repo/deployments/environment/variables.md)
* [Labels](repo/labels.md)
* [Protection](repo/protection.md)
* [Releases](repo/releases.md)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## Environment / Secrets API
[Back to the "Environments API"](../repo/environments.md) | [Back to the navigation](../README.md)
[Back to the "Environments API"](../environments.md) | [Back to the navigation](../README.md)

### List environment secrets

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## Environment / Variables API
[Back to the "Environments API"](../repo/environments.md) | [Back to the navigation](../README.md)
[Back to the "Environments API"](../environments.md) | [Back to the navigation](../README.md)

### List environment variables

Expand Down
32 changes: 32 additions & 0 deletions doc/repo/deployments/environments.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
## Deployment / Environments API
[Back to the "Deployment API"](../deployments.md) | [Back to the navigation](../index.md)

Provides information about environments for a repository. Wraps [GitHub Environments API](https://docs.github.com/en/rest/deployments/environments?apiVersion=2022-11-28).

Additional APIs:
* [Secrets API](environment/secrets.md)
* [Variables API](environment/variables.md)

#### List all environments.

```php
$environments = $client->deployment()->environment()->all('KnpLabs', 'php-github-api');
```

### Get one environment.

```php
$environment = $client->deployment()->environment()->show('KnpLabs', 'php-github-api', $name);
```

#### Create or update environment.

```php
$data = $client->deployment()->environment()->createOrUpdate('KnpLabs', 'php-github-api', $name);
```

#### Delete a existing environment.

```php
$environment = $client->deployment()->environment()->remove('KnpLabs', 'php-github-api', $name);
```
38 changes: 38 additions & 0 deletions doc/repo/deployments/policies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
## Deployment / Branch policies API
[Back to the "Deployment API"](../deployments.md) | [Back to the navigation](../index.md)

Provides information about deployment branch policies. Wraps [GitHub Deployment branch policies API](https://docs.github.com/en/rest/deployments/branch-policies?apiVersion=2022-11-28#about-deployment-branch-policies).

#### List deployment branch policies.

```php
$policies = $client->deployment()->policies()->all('KnpLabs', 'php-github-api', 'production');
```

### Get one environment.

```php
$policy = $client->deployment()->policies()->show('KnpLabs', 'php-github-api', 'production', $branchPolicyId);
```

#### Create policy.

```php
$data = $client->deployment()->policies()->create('KnpLabs', 'php-github-api', 'production', [
'name' => 'name'
]);
```

#### Update policy.

```php
$data = $client->deployment()->policies()->update('KnpLabs', 'php-github-api', 'production', $branchPolicyId, [
'name' => 'name'
]);
```

#### Delete a existing policy.

```php
$policy = $client->deployment()->policies()->remove('KnpLabs', 'php-github-api', 'production', $branchPolicyId);
```
32 changes: 0 additions & 32 deletions doc/repo/environments.md

This file was deleted.

18 changes: 18 additions & 0 deletions lib/Github/Api/Deployment.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

namespace Github\Api;

use Github\Api\Deployment\Environments;
use Github\Api\Deployment\Policies;
use Github\Exception\MissingArgumentException;

/**
Expand Down Expand Up @@ -130,4 +132,20 @@ public function getStatuses($username, $repository, $id)
{
return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/deployments/'.$id.'/statuses');
}

/**
* @return Environments
*/
public function environments()
{
return new Environments($this->getClient());
}

/**
* @return Policies
*/
public function policies()
{
return new Policies($this->getClient());
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<?php

namespace Github\Api;
namespace Github\Api\Deployment;

use Github\Api\AbstractApi;
use Github\Api\Environment\Secrets;
use Github\Api\Environment\Variables;

Expand All @@ -10,7 +11,7 @@
*
* @link https://docs.github.com/en/rest/deployments/environments?apiVersion=2022-11-28#
*/
class Environment extends AbstractApi
class Environments extends AbstractApi
SergkeiM marked this conversation as resolved.
Show resolved Hide resolved
{
/**
* List environments for a particular repository.
Expand Down
97 changes: 97 additions & 0 deletions lib/Github/Api/Deployment/Policies.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<?php

namespace Github\Api\Deployment;

use Github\Api\AbstractApi;

/**
* Listing, creating and updating deployments.
*
* @link https://docs.github.com/en/rest/deployments/branch-policies?apiVersion=2022-11-28#list-deployment-branch-policies
*/
class Policies extends AbstractApi
{
/**
* List deployment branch policies.
*
* @link https://docs.github.com/en/rest/deployments/branch-policies?apiVersion=2022-11-28#list-deployment-branch-policies
*
* @param string $username the username of the user who owns the repository
* @param string $repository the name of the repository
* @param string $environment the name of the environment.
* @param array $params query parameters to filter deployments by (see link)
*
* @return array the branch policies requested
*/
public function all(string $username, string $repository, string $environment, array $params = [])
{
return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/environments/'.rawurlencode($environment).'/deployment-branch-policies', $params);
}

/**
* Get a deployment branch policy.
*
* @link https://docs.github.com/en/rest/deployments/branch-policies?apiVersion=2022-11-28#get-a-deployment-branch-policy
*
* @param string $username the username of the user who owns the repository
* @param string $repository the name of the repository
* @param string $environment the name of the environment.
* @param int $id the unique identifier of the branch policy.
*
* @return array
*/
public function show(string $username, string $repository, string $environment, int $id)
{
return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/environments/'.rawurlencode($environment).'/deployment-branch-policies/'.$id);
}

/**
* Creates a deployment branch policy for an environment.
*
* @link https://docs.github.com/en/rest/deployments/branch-policies?apiVersion=2022-11-28#create-a-deployment-branch-policy
*
* @param string $username the username of the user who owns the repository
* @param string $repository the name of the repository
* @param string $environment the name of the environment.
*
* @return array information about the deployment branch policy
*/
public function create(string $username, string $repository, string $environment, array $params)
{
return $this->post('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/environments/'.rawurlencode($environment).'/deployment-branch-policies', $params);
}

/**
* Updates a deployment branch policy for an environment.
*
* @link https://docs.github.com/en/rest/deployments/branch-policies?apiVersion=2022-11-28#update-a-deployment-branch-policy
*
* @param string $username the username of the user who owns the repository
* @param string $repository the name of the repository
* @param string $environment the name of the environment.
* @param int $id the unique identifier of the branch policy.
*
* @return array information about the deployment branch policy
*/
public function update(string $username, string $repository, string $environment, int $id, array $params)
{
return $this->put('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/environments/'.rawurlencode($environment).'/deployment-branch-policies/'.$id, $params);
}

/**
* Delete a deployment branch policy.
*
* @link https://docs.github.com/en/rest/deployments/branch-policies?apiVersion=2022-11-28#delete-a-deployment-branch-policy
*
* @param string $username the username of the user who owns the repository
* @param string $repository the name of the repository
* @param string $environment the name of the environment.
* @param int $id the unique identifier of the branch policy.
*
* @return mixed null on success, array on error with 'message'
*/
public function remove(string $username, string $repository, string $environment, int $id)
{
return $this->delete('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/environments/'.rawurlencode($environment).'/deployment-branch-policies/'.$id);
}
}
5 changes: 0 additions & 5 deletions lib/Github/Client.php
Original file line number Diff line number Diff line change