Skip to content

Commit

Permalink
feature #1104 Added environment variables & secrets (Froxz)
Browse files Browse the repository at this point in the history
This PR was squashed before being merged into the 3.10.x-dev branch.

Discussion
----------

Added environment:

[Secrets](https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28#list-environment-secrets)
[Variables](https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#list-environment-variables)

Commits
-------

7de0912 Added environment variables & secrets
d08d18d fixes for styleCI
3f4fff0 removed rawurlencode for repo id
289c0ab added link to secrets and varaibles
cbf08fc Removed validation of parameters
  • Loading branch information
SergkeiM authored Mar 10, 2023
1 parent 8168261 commit acc0453
Show file tree
Hide file tree
Showing 9 changed files with 515 additions and 0 deletions.
2 changes: 2 additions & 0 deletions doc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ 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)
* [Labels](repo/labels.md)
* [Protection](repo/protection.md)
Expand Down
46 changes: 46 additions & 0 deletions doc/environment/secrets.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
## Environment / Secrets API
[Back to the "Environments API"](../repo/environments.md) | [Back to the navigation](../README.md)

### List environment secrets

https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28

```php
$secrets = $client->environment()->secrets()->all($repoId, $envName);
```

### Get an environment secret

https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28#get-an-environment-secret

```php
$secret = $client->environment()->secrets()->show($repoId, $envName, $secretName);
```

### Create or Update an environment secret

https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28#create-or-update-an-environment-secret

```php
$client->environment()->secrets()->createOrUpdate($repoId, $envName, $secretName, [
'encrypted_value' => $encryptedValue,
'key_id' => $key_id
]);
```

### Delete an environment secret

https://docs.github.com/en/rest/reference/actions#delete-an-organization-secret

```php
$client->environment()->secrets()->remove($repoId, $envName, $secretName);
```

### Get an environment public key

https://docs.github.com/en/rest/reference/actions#get-an-organization-public-key

```php
$client->environment()->secrets()->publicKey($repoId, $envName);
```

49 changes: 49 additions & 0 deletions doc/environment/variables.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
## Environment / Variables API
[Back to the "Environments API"](../repo/environments.md) | [Back to the navigation](../README.md)

### List environment variables

https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#list-environment-variables

```php
$variables = $client->environment()->variables()->all($repoId, $envName);
```

### Get an environment variable

https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#get-an-environment-variable

```php
$variable = $client->environment()->variables()->show($repoId, $envName, $variableName);
```

### Create environment variable

https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#create-an-environment-variable

```php
$client->environment()->variables()->create($repoId, $envName, [
'name' => $name,
'value' => $value
]);
```

### Update environment variable

https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#update-an-environment-variable

```php
$client->environment()->variables()->update($repoId, $envName, $variableName, [
'name' => $name,
'value' => $value
]);
```

### Delete an environment variable

https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#delete-an-environment-variable

```php
$client->environment()->variables()->remove($repoId, $envName, $variableName);
```

4 changes: 4 additions & 0 deletions doc/repo/environments.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@

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
Expand Down
19 changes: 19 additions & 0 deletions lib/Github/Api/Environment.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

namespace Github\Api;

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

/**
* Listing, creating and updating environments.
*
Expand Down Expand Up @@ -67,4 +70,20 @@ public function remove(string $username, string $repository, string $name)
{
return $this->delete('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/environments/'.rawurlencode($name));
}

/**
* @link https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28#about-secrets-in-github-actions
*/
public function secrets(): Secrets
{
return new Secrets($this->getClient());
}

/**
* @link https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#about-variables-in-github-actions
*/
public function variables(): Variables
{
return new Variables($this->getClient());
}
}
80 changes: 80 additions & 0 deletions lib/Github/Api/Environment/Secrets.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<?php

namespace Github\Api\Environment;

use Github\Api\AbstractApi;

/**
* @link https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28
*/
class Secrets extends AbstractApi
{
/**
* @link https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28#list-environment-secrets
*
* @param int $id
* @param string $name
*
* @return array|string
*/
public function all(int $id, string $name)
{
return $this->get('/repositories/'.$id.'/environments/'.rawurlencode($name).'/secrets');
}

/**
* @link https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28#get-an-environment-secret
*
* @param int $id
* @param string $name
* @param string $secretName
*
* @return array|string
*/
public function show(int $id, string $name, string $secretName)
{
return $this->get('/repositories/'.$id.'/environments/'.rawurlencode($name).'/secrets/'.rawurlencode($secretName));
}

/**
* @link https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28#create-or-update-an-environment-secret
*
* @param int $id
* @param string $name
* @param string $secretName
* @param array $parameters
*
* @return array|string
*/
public function createOrUpdate(int $id, string $name, string $secretName, array $parameters = [])
{
return $this->put('/repositories/'.$id.'/environments/'.rawurlencode($name).'/secrets/'.rawurlencode($secretName), $parameters);
}

/**
* @link https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28#delete-an-environment-secret
*
* @param int $id
* @param string $name
* @param string $secretName
*
* @return array|string
*/
public function remove(int $id, string $name, string $secretName)
{
return $this->delete('/repositories/'.$id.'/environments/'.rawurlencode($name).'/secrets/'.rawurlencode($secretName));
}

/**
* @link https://docs.github.com/en/rest/actions/secrets?apiVersion=2022-11-28#get-an-environment-public-key
*
* @param int $id
* @param string $name
*
* @return array|string
*/
public function publicKey(int $id, string $name)
{
return $this->get('/repositories/'.$id.'/environments/'.rawurlencode($name).'/secrets/public-key');
}
}
81 changes: 81 additions & 0 deletions lib/Github/Api/Environment/Variables.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?php

namespace Github\Api\Environment;

use Github\Api\AbstractApi;

/**
* @link https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28
*/
class Variables extends AbstractApi
{
/**
* @link https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#list-environment-variables
*
* @param int $id
* @param string $name
*
* @return array|string
*/
public function all(int $id, string $name)
{
return $this->get('/repositories/'.$id.'/environments/'.rawurlencode($name).'/variables');
}

/**
* @link https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#get-an-environment-variable
*
* @param int $id
* @param string $name
* @param string $variableName
*
* @return array|string
*/
public function show(int $id, string $name, string $variableName)
{
return $this->get('/repositories/'.$id.'/environments/'.rawurlencode($name).'/variables/'.rawurlencode($variableName));
}

/**
* @link https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#create-an-environment-variable
*
* @param int $id
* @param string $name
* @param array $parameters
*
* @return array|string
*/
public function create(int $id, string $name, array $parameters)
{
return $this->post('/repositories/'.$id.'/environments/'.rawurlencode($name).'/variables', $parameters);
}

/**
* @link https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#update-an-environment-variable
*
* @param int $id
* @param string $name
* @param string $variableName
* @param array $parameters
*
* @return array|string
*/
public function update(int $id, string $name, string $variableName, array $parameters)
{
return $this->patch('/repositories/'.$id.'/environments/'.rawurlencode($name).'/variables/'.rawurlencode($variableName), $parameters);
}

/**
* @link https://docs.github.com/en/rest/actions/variables?apiVersion=2022-11-28#delete-an-environment-variable
*
* @param int $id
* @param string $name
* @param string $variableName
*
* @return array|string
*/
public function remove(int $id, string $name, string $variableName)
{
return $this->delete('/repositories/'.$id.'/environments/'.rawurlencode($name).'/variables/'.rawurlencode($variableName));
}
}
Loading

0 comments on commit acc0453

Please sign in to comment.