Skip to content

Commit d53afef

Browse files
authored
Merge pull request #70 from appcircleio/release/2.7.3
Release/2.7.3
2 parents 4a1e03a + 5b92e10 commit d53afef

32 files changed

Lines changed: 8600 additions & 1675 deletions

README.md

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ Run `appcircle [commandName] --help` to view a list of commands/subcommands in
6565

6666
- [appcircle config](/docs/config/index.md)
6767
- [appcircle login](/docs/login/index.md)
68+
- [appcircle logout](/docs/logout/index.md)
6869
- [appcircle build](/docs/build/index.md)
6970
- [appcircle signing-identity](/docs/signing-identity/index.md)
7071
- [appcircle testing-distribution](/docs/testing-distribution/index.md)
@@ -105,6 +106,12 @@ Appcircle CLI incorporates a GUI that allows users to interactively access its f
105106
appcircle -i
106107
```
107108

109+
### Features
110+
- **Authentication Grouping**: Login and Logout options are grouped under "Authentication (Login/Logout)" menu
111+
- **Smart Navigation**: Use "⬅ Back" buttons to navigate between menus
112+
- **Login Protection**: Prevents multiple login attempts when already authenticated
113+
- **Intuitive UI**: Clean menu structure with proper navigation flow
114+
108115
### Demo
109116
![Demo](https://cdn.appcircle.io/docs/assets/appcircle_gui_demo.gif)
110117

@@ -144,10 +151,27 @@ CURL_LOGGING= appcircle
144151

145152
### Connecting Your Appcircle Account via CLI
146153

154+
You can authenticate with Appcircle using either Personal Access Token or API Key:
155+
156+
#### Using Personal Access Token
147157
- [Generate a personal access token from the Appcircle dashboard](https://docs.appcircle.io/appcircle-api/api-authentication#generatingmanaging-the-personal-api-tokens)
148-
- Using the Appcircle CLI, create a full access API token using the following command with the personal access token specified as "pat": `appcircle login --pat="YOUR PERSONAL ACCESS TOKEN"`.
158+
- Using the Appcircle CLI, create a full access API token using the following command: `appcircle login pat --token="YOUR PERSONAL ACCESS TOKEN"`.
159+
160+
#### Using API Key
161+
- [Create an API Key from the Appcircle dashboard](https://docs.appcircle.io/appcircle-api/api-authentication#api-keys)
162+
- Using the Appcircle CLI, authenticate with your API Key: `appcircle login api-key --name="YOUR_API_KEY_NAME" --secret="YOUR_API_KEY_SECRET"`.
163+
- For multi-organization accounts, you can specify an organization: `appcircle login api-key --name="YOUR_API_KEY_NAME" --secret="YOUR_API_KEY_SECRET" --organization-id="YOUR_ORG_ID"`.
164+
165+
#### Logout
166+
- To logout from your Appcircle account, use: `appcircle logout`
167+
- This will clear your stored authentication token locally
168+
169+
#### Authentication Behavior
170+
- If you're already logged in and try to login again, you'll see a "You are already logged in" message
171+
- You must logout first before logging in with different credentials
172+
- Your token is stored locally and will persist until you logout or manually clear it
149173

150-
> Your token will be stored internally. You should always revoke your access token if you do not plan to use it in the future.
174+
> Your token will be stored internally. You should always logout or revoke your access token if you do not plan to use it in the future.
151175
152176
### Starting a New Build via the Appcircle CLI
153177

@@ -167,7 +191,7 @@ Appcircle CLI includes the following improvements for build log downloading func
167191
- User-friendly animation is displayed: "Waiting for build logs to be prepared..."
168192
- Support for manual log download with both task ID (`--taskId`) and commit/build ID (`--commitId`/`--buildId`) parameters
169193
- Automatic fallback to alternative download methods when the primary method fails
170-
- Log files are saved with descriptive filenames: `build-task-{taskId}-log.txt`
194+
- Log files are saved with descriptive filenames that include branch name, profile name, and timestamp: `{branchName}-{profileName}-build-logs-{timestamp}.txt`
171195

172196
To download build logs:
173197
```shell

docs/build/download-log.md

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,38 +8,44 @@ appcircle build download-log [options]
88

99
## Description
1010

11+
Download Build Logs
12+
1113
This command downloads build logs using either a Task ID (preferred) or a Commit ID and Build ID combination. When using the Task ID method, the CLI automatically waits for logs to be ready, checking at 5-second intervals for up to 2 minutes.
1214

13-
The downloaded log file will be saved as `build-task-{taskId}-log.txt` or `{buildId}-log.txt` depending on the method used.
15+
The downloaded log file will be saved with a descriptive name that includes the branch name, profile name, and timestamp: `{branchName}-{profileName}-build-logs-{timestamp}.txt`. If branch name or profile name is not available, they will be replaced with 'unknown'. All special characters in names are replaced with underscores for filesystem safety.
1416

1517
## Features
1618

1719
- User-friendly animation is displayed while build logs are being prepared
1820
- Automatically switches to alternative download methods if the primary method fails
19-
- Logs are saved with descriptive filenames: `build-task-{taskId}-log.txt` or `{buildId}-log.txt`
21+
- Logs are saved with descriptive, sanitized filenames that include branch name, profile name, and timestamp
2022
- Full file path is displayed to easily find log files
2123

2224
## Options
2325

2426
```plaintext
25-
--path <string> [OPTIONAL] Path where logs will be downloaded. Defaults to current directory or Downloads folder
26-
27-
--taskId <uuid> [METHOD 1] Task ID for the build process
28-
29-
--commitId <uuid> [METHOD 2] Commit ID
30-
31-
--buildId <uuid> [METHOD 2] Build ID
27+
--path <string> [OPTIONAL] Path where logs will be downloaded. Defaults to current directory or Downloads folder
28+
--taskId <uuid> [METHOD 1] Task ID for the build process
29+
--profileId <uuid> Build profile ID
30+
--profile <string> Build profile name (alternative to --profileId)
31+
--branchId <uuid> Branch ID
32+
--branch <string> Branch name (alternative to --branchId)
33+
--commitId <uuid> [METHOD 2] Commit ID
34+
--buildId <uuid> [METHOD 2] Build ID
3235
```
3336

3437
## Examples
3538

36-
```plaintext
39+
```bash
3740
# Download logs using Task ID (preferred method)
3841
appcircle build download-log --taskId="1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p"
3942

40-
# Download logs using Commit ID and Build ID
41-
appcircle build download-log --commitId="1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" --buildId="7q8r9s0t-1u2v-3w4x-5y6z-7a8b9c0d1e2f"
43+
# Download logs using profile and branch names
44+
appcircle build download-log --profile "Automation Variable" --branch "develop" --commitId="1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" --buildId="7q8r9s0t-1u2v-3w4x-5y6z-7a8b9c0d1e2f"
45+
46+
# Download logs using IDs
47+
appcircle build download-log --profileId 8ad65c77-9ed8-4664-a6e1-4bf7032d33cd --branchId f416f868-5d1a-4464-8ff7-70ddb789aeba --commitId="1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" --buildId="7q8r9s0t-1u2v-3w4x-5y6z-7a8b9c0d1e2f"
4248

4349
# Download to a specific directory
44-
appcircle build download-log --taskId="1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" --path="/Users/username/Downloads"
45-
```
50+
appcircle build download-log --profile "Automation Variable" --branch "develop" --commitId="1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" --buildId="7q8r9s0t-1u2v-3w4x-5y6z-7a8b9c0d1e2f" --path="/Users/username/Downloads"
51+
```

docs/build/download.md

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,48 @@
11
# `appcircle build download`
22

3+
## Description
4+
Download Artifacts
5+
36
Download your artifact to the given directory on your machine.
47

58
```plaintext
69
appcircle build download [options]
710
```
811

9-
## Options
12+
## Artifact Filename
1013

11-
```plaintext
12-
--path <string> [OPTIONAL] The path for artifacts to be downloaded. Defaults to the current directory
14+
By default, the downloaded artifact will be saved as `artifacts-{timestamp}.zip`, where `{timestamp}` is the current date and time in `YYYYMMDD-HHMMSS` format. This ensures each download has a unique filename.
1315

14-
--commitId <uuid> Commit ID of your build
16+
## Download Path
17+
18+
If the `--path` option is not specified, the artifact will be downloaded to your system's `~/Downloads` directory by default.
19+
20+
## Options
1521

16-
--buildId <uuid> Build ID
22+
```plaintext
23+
--path <string> [OPTIONAL] The path for artifacts to be downloaded. Defaults to ~/Downloads if not specified.
24+
--profileId <uuid> Build profile ID
25+
--profile <string> Build profile name (alternative to --profileId)
26+
--branchId <uuid> Branch ID
27+
--branch <string> Branch name (alternative to --branchId)
28+
--commitId <uuid> Commit ID of your build
29+
--buildId <uuid> Build ID
1730
```
1831
## Options inherited from parent commands
1932

2033
```plaintext
2134
--help Show help for command
2235
```
36+
37+
## Examples
38+
39+
```bash
40+
# Using IDs
41+
appcircle build download --profileId 8ad65c77-9ed8-4664-a6e1-4bf7032d33cd --branchId f416f868-5d1a-4464-8ff7-70ddb789aeba --commitId b96329d3-fd56-4030-8073-c13c61d288c4 --buildId 6528b1b9-359c-4589-b29d-c249a2f690ee
42+
43+
# Using names instead of IDs
44+
appcircle build download --profile "Automation Variable" --branch "develop" --commitId b96329d3-fd56-4030-8073-c13c61d288c4 --buildId 6528b1b9-359c-4589-b29d-c249a2f690ee
45+
46+
# Mixed usage with custom path
47+
appcircle build download --profile "Automation Variable" --branchId f416f868-5d1a-4464-8ff7-70ddb789aeba --commitId b96329d3-fd56-4030-8073-c13c61d288c4 --buildId 6528b1b9-359c-4589-b29d-c249a2f690ee --path ./artifacts
48+
```

docs/build/list.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,27 @@ appcircle build list [options]
99
## Options
1010

1111
```plaintext
12-
--commitId <uuid> Commit ID
12+
--profileId <uuid> Build profile ID
13+
--profile <string> Build profile name (alternative to --profileId)
14+
--branchId <uuid> Branch ID
15+
--branch <string> Branch name (alternative to --branchId)
16+
--commitId <uuid> Commit ID
1317
```
1418
## Options inherited from parent commands
1519

1620
```plaintext
1721
--help Show help for command
1822
```
23+
24+
## Examples
25+
26+
```bash
27+
# Using IDs
28+
appcircle build list --profileId 8ad65c77-9ed8-4664-a6e1-4bf7032d33cd --branchId f416f868-5d1a-4464-8ff7-70ddb789aeba --commitId b96329d3-fd56-4030-8073-c13c61d288c4
29+
30+
# Using names instead of IDs
31+
appcircle build list --profile "Automation Variable" --branch "develop" --commitId b96329d3-fd56-4030-8073-c13c61d288c4
32+
33+
# Mixed usage (IDs and names)
34+
appcircle build list --profile "Automation Variable" --branchId f416f868-5d1a-4464-8ff7-70ddb789aeba --commitId b96329d3-fd56-4030-8073-c13c61d288c4
35+
```

docs/build/start.md

Lines changed: 145 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,157 @@ appcircle build start [options]
88

99
## Options
1010

11+
### Required Parameters
1112
```plaintext
1213
--profileId <uuid> Build profile ID
13-
--branchId <uuid> Branch ID
14-
--commitId <uuid> Commit ID [Optional]
15-
--configurationId <uuid> Configuration ID [Optional]
14+
--profile <string> Build profile name (alternative to --profileId)
1615
--workflowId <uuid> Workflow ID
17-
--branch <string> Branch Name instead of 'branch ID'
18-
--workflow <string> Workflow Name instead of 'workflow ID'
19-
--commitHash <string> Commit Hash instead of 'Commit ID' [Optional]
16+
--workflow <string> Workflow name (alternative to --workflowId)
2017
```
18+
19+
### Conditional Parameters
20+
```plaintext
21+
--branchId <uuid> Appcircle branch ID,. Required when --commitId is not provided
22+
--branch <string> Git branch name (alternative to --branchId). Required when --commitId is not provided
23+
--commitId <uuid> Appcircle commit ID . Required when --branchId is not provided
24+
--commitHash <string> Git commit hash (alternative to --commitId). Required when --branchId is not provided
25+
```
26+
27+
### Optional Parameters
28+
```plaintext
29+
--configurationId <uuid> Configuration ID
30+
--configuration <string> Configuration name (alternative to --configurationId)
31+
--no-wait Don't wait for build completion, return immediately with task info
32+
--download-logs Automatically download build logs after completion
33+
--download-artifacts Automatically download build artifacts after completion
34+
--path <string> Download path for logs and artifacts (default: ~/Downloads)
35+
```
36+
2137
## Options inherited from parent commands
2238

2339
```plaintext
2440
--help Show help for command
2541
```
42+
43+
## Parameter Logic
44+
45+
### Profile Selection
46+
- **Required**: Either `--profileId` or `--profile` must be provided
47+
- **Example**: `--profileId 550e8400-e29b-41d4-a716-446655440000` or `--profile "My iOS Project"`
48+
49+
### Workflow Selection
50+
- **Required**: Either `--workflowId` or `--workflow` must be provided
51+
- **Example**: `--workflowId 6ba7b811-9dad-11d1-80b4-00c04fd430c8` or `--workflow "Default Push Workflow"`
52+
53+
### Commit vs Branch Selection
54+
You must provide either commit information OR branch information:
55+
56+
#### Option 1: Specify Commit (Branch becomes optional)
57+
```bash
58+
# Using commit ID
59+
appcircle build start --profileId <uuid> --commitId <uuid> --workflowId <uuid>
60+
61+
# Using commit hash
62+
appcircle build start --profileId <uuid> --commitHash <hash> --workflowId <uuid>
63+
```
64+
65+
#### Option 2: Specify Branch (uses latest commit from branch)
66+
```bash
67+
# Using branch ID
68+
appcircle build start --profileId <uuid> --branchId <uuid> --workflowId <uuid>
69+
70+
# Using branch name
71+
appcircle build start --profileId <uuid> --branch "main" --workflowId <uuid>
72+
```
73+
74+
### Configuration Selection
75+
- **Optional**: If not provided, uses the first available configuration for the profile
76+
- **Example**: `--configurationId <uuid>` or `--configuration "Debug Configuration"`
77+
78+
## Usage Examples
79+
80+
### Basic Usage
81+
82+
#### 1. Build with Specific Commit
83+
```bash
84+
appcircle build start --profileId 550e8400-e29b-41d4-a716-446655440000 --commitId 6ba7b812-9dad-11d1-80b4-00c04fd430c8 --workflowId 6ba7b811-9dad-11d1-80b4-00c04fd430c8
85+
```
86+
87+
#### 2. Build with Branch (uses latest commit)
88+
```bash
89+
appcircle build start --profileId 550e8400-e29b-41d4-a716-446655440000 --branchId 6ba7b810-9dad-11d1-80b4-00c04fd430c8 --workflowId 6ba7b811-9dad-11d1-80b4-00c04fd430c8
90+
```
91+
92+
#### 3. Build with Names Instead of IDs
93+
```bash
94+
appcircle build start --profile "My iOS Project" --branch "main" --workflow "Default Push Workflow"
95+
```
96+
97+
### Advanced Usage
98+
99+
#### 4. Build with Configuration
100+
```bash
101+
appcircle build start --profileId <uuid> --commitId <uuid> --configurationId <uuid> --workflowId <uuid>
102+
```
103+
104+
#### 5. Automation (No Wait)
105+
```bash
106+
appcircle build start --profileId <uuid> --commitId <uuid> --workflowId <uuid> --no-wait
107+
```
108+
109+
#### 6. Build with Auto-Download
110+
```bash
111+
appcircle build start --profileId <uuid> --commitId <uuid> --workflowId <uuid> --download-logs --download-artifacts
112+
```
113+
114+
#### 7. Build with Custom Download Path
115+
```bash
116+
appcircle build start --profileId <uuid> --commitId <uuid> --workflowId <uuid> --download-artifacts --path "/custom/path"
117+
```
118+
119+
#### 8. Mixed Usage (IDs and Names)
120+
```bash
121+
appcircle build start --profile "My Android App" --branchId 6ba7b810-9dad-11d1-80b4-00c04fd430c8 --workflow "Default Push Workflow"
122+
```
123+
124+
## Common Scenarios
125+
126+
### Scenario 1: Build Latest Commit from Branch
127+
```bash
128+
# When you want to build the latest commit from a specific branch
129+
appcircle build start --profileId <uuid> --branchId <uuid> --workflowId <uuid>
130+
```
131+
132+
### Scenario 2: Build Specific Commit
133+
```bash
134+
# When you want to build a specific commit (branch info not needed)
135+
appcircle build start --profileId <uuid> --commitId <uuid> --workflowId <uuid>
136+
```
137+
138+
### Scenario 3: Automation Pipeline
139+
```bash
140+
# For CI/CD pipelines where you don't want to wait for completion
141+
appcircle build start --profileId <uuid> --commitId <uuid> --workflowId <uuid> --no-wait
142+
```
143+
144+
### Scenario 4: Build with Artifacts
145+
```bash
146+
# When you need logs and artifacts after build completion
147+
appcircle build start --profileId <uuid> --commitId <uuid> --workflowId <uuid> --download-logs --download-artifacts
148+
```
149+
150+
## Notes
151+
152+
- **Commit vs Branch**: When you provide `--commitId`, the system doesn't need branch information since the commit is already specified. When you provide `--branchId`, the system automatically uses the latest commit from that branch.
153+
154+
- **Configuration**: If `--configurationId` is not provided, the system uses the first available configuration for the profile.
155+
156+
- **No Wait**: The `--no-wait` parameter is useful for automation scenarios where you don't want to wait for build completion. The command returns immediately with task information.
157+
158+
- **Auto Download**: The `--download-logs` and `--download-artifacts` parameters automatically download files after build completion. Use `--path` to specify a custom download location.
159+
160+
## Learn More
161+
162+
- Use `appcircle build profile list` to get available profiles with their UUIDs and names
163+
- Use `appcircle build profile branch list --profileId <uuid>` to get available branches
164+
- Use `appcircle build profile workflows --profileId <uuid>` to get available workflows
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# `appcircle build variable group download`
2+
3+
Download Build environment variables as a JSON file
4+
5+
```plaintext
6+
appcircle build variable group download [options]
7+
```
8+
9+
## Examples
10+
11+
```plaintext
12+
$ appcircle build variable group download --variableGroupId "Variable Group ID"
13+
14+
$ appcircle build variable group download --variableGroupId "Variable Group ID" --path "/path/to/save"
15+
```
16+
17+
## Options
18+
19+
```plaintext
20+
--variableGroupId <uuid> Variable Group ID
21+
--path <string> [OPTIONAL] The path for JSON file to be downloaded (Defaults to the current directory)
22+
```
23+
24+
## Options inherited from parent commands
25+
26+
```plaintext
27+
--help Show help for command
28+
```

0 commit comments

Comments
 (0)