azure-pipelines-agent-macos.../README.md

157 строки
4.4 KiB
Markdown

Azure DevOps Build and Release Agent Cookbook for macOS
=======================================================
[![Build status](https://dev.azure.com/office/APEX/_apis/build/status/Apple%20Lab/cookbooks/azure_pipelines_agent_macos)](https://dev.azure.com/office/APEX/_build/latest?definitionId=2373)
[Visual Studio Team Services is now Azure DevOps Services](https://docs.microsoft.com/en-us/azure/devops/user-guide/what-happened-vsts)
We're working on the best way to rename the cookbook and recipes while maintaining backwards compatibility.
Recipes
-------
### Bootstrap
Usage: `azure_pipelines_agent_macos::bootstrap`
Add the node to the agent pool or deployment group.
### Teardown
Usage: `azure_pipelines_agent_macos::teardown`
Remove an existing agent from the build pool or deployment group.
Attributes
----------
### Agent Name
The name of the agent.
**Default value:** `node['hostname']`
```ruby
default['azure_pipelines_agent']['agent_name']
```
### Agent Version
The version of the agent to install.
**Default value:** `'2.150.3'`
```ruby
default['azure_pipelines_agent']['version']
```
### Agent Pool
The name of the agent pool you wish to add the agent to.
**Default value:** `American Hanko's Agents`
```ruby
default['azure_pipelines_agent']['agent_pool']
```
### Organization Name
The name of your Azure DevOps organization. (e.g. 'americanhanko' in `https://dev.azure.com/americanhanko`)
**Default value:** `americanhanko`
```ruby
default['azure_pipelines_agent']['account']
```
### Admin User
The username of an adminstrator on the macOS system.
**Default value:** `'vagrant'`
```ruby
default['azure_pipelines_agent']['admin_user']
```
### Agent Home Directory
The location that contains all builds, source, release, etc.
**Default value:** `'/Users/#{node['azure_pipelines_agent']['admin_user']}/azure-pipelines-agent'`
```ruby
default['azure_pipelines_agent']['agent_home']
```
### Additional Environment Variables
An optional hash may be set to pass environment variables to the agent. The agent
will then be configured with these environment variables which it will then
report back to the servers.
**Default value:** `{}`
```ruby
default['azure_pipelines_agent']['additional_environment']
```
Deployment Group
----------------
This cookbook supports adding agents to Azure DevOps deployment groups. To use this feature, simply
set the `default['azure_pipelines_agent']['deployment_group']` attribute. In addition, make sure you have
the appropriate values set for the following attributes shown below. By default, we assume that
if the `default['azure_pipelines_agent']['deployment_group']` attribute is `nil`, we are bootstrapping
a build agent and _not_ a deployment agent. This means if you set this attribute, it will
override the default functionality. You may optionally specifiy deployment group tags using
`default['azure_pipelines_agent']['deployment_group_tags']`.
```ruby
default['azure_pipelines_agent']['deployment_group'] = nil
default['azure_pipelines_agent']['project'] = nil
default['azure_pipelines_agent']['work'] = nil
default['azure_pipelines_agent']['deployment_group_tags'] = nil
```
Authentication
--------------
This cookbook uses a [personal access token](https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate)
to authenticate to your organization on the Azure DevOps servers. The cookbook allows access to the token via either an attribute, within a data bag or using a chef vault item.
### Plaintext Attribute
Example:
```ruby
default['azure_pipelines_agent']['pat'] = '0fbdebc988934add98179ddaae019a01711'
```
### Data Bag or Chef Vault Item
Name your vault or bag and corresponding item whatever you like and
make sure to set the corresponding attributes to reference it
accordingly:
Example:
```ruby
default['azure_pipelines_agent']['data_bag'] = 'tea_bag'
default['azure_pipelines_agent']['data_bag_item'] = 'green_tea'
```
However, it **must** contain a `personal_access_token` key with
the token itself as the value. The token must have rights to read and modify
build agents. The permissions are selected at the time of the PAT creation, which
you can read more about [here](https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate).
Example:
```json
{
"id": "azure_pipelines_build_agent",
"personal_access_token": "iu8tfaxxrhce7yeu434yo9zfjtxif3jygzk24wegi855er2moobs"
}
```