fastlane-plugin-appcircle_publish 0.1.0 → 0.1.1.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a3f114d0832bc1c06e81b9c9d90ad21df3607bcdc132dfed6bd7870c699feda5
4
- data.tar.gz: 6827848ea2f43d695ed9d633d966add042e3c324d83fa84bc99b97b0e2fd712f
3
+ metadata.gz: c2a5d288b4c40f88a903783e30501cb42a56daa662807bc42a051351ca6109e5
4
+ data.tar.gz: a0a8aeae89201b0f75fbf52cd82017236a0344d59deabc29d823c2b3134d7b0c
5
5
  SHA512:
6
- metadata.gz: e05873439032fc2b7ee31fc10c6450f007be4da66b81065af18e1e827000eabb0c81169e4429badd1ab31627afe636b482d74c246c9a736e64def2830cbf737a
7
- data.tar.gz: c3cdbbb4839192a90d991b5511436412ca14ce7da8baaa20b79f247f33f466279938c58b62e6496582fd0133e63aceea4d50c04c9344858ff2dc650735f1bd79
6
+ metadata.gz: 71cc90ffd9286737700edfc6b2391e2b2a2f123cbc55612d784a990a575b0f2d791542e8e2b8b62052c2f6cd84caae4502e23c4398bfd95506e49baf95a6163d
7
+ data.tar.gz: 32ddb720ab6ade16c11901bf25f4a7c59544f359224a322de6690015b86c055181f0d16bb403ff2e7a99421d9239e97cdbe818cc72897a47f61fbb969475c8e8
data/README.md CHANGED
@@ -3,9 +3,17 @@
3
3
  [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-appcircle_publish)
4
4
 
5
5
  Upload an application binary to an Appcircle **Publish** profile and/or trigger
6
- its publish flow (app store publishing) directly from your Fastlane pipeline.
6
+ its publish flow (app store publishing) directly from your Fastlane lane.
7
7
 
8
- Learn more about [Appcircle Publish](https://appcircle.io/publish-to-stores?utm_source=fastlane&utm_medium=plugin&utm_campaign=publish).
8
+ Appcircle's **Publish to Stores** module gives you:
9
+
10
+ - **Centralized Store Publishing:** Manage App Store, Google Play, Huawei AppGallery, and Microsoft Intune releases from a single hub instead of navigating each platform separately.
11
+ - **Custom Publish Flows:** Automate your release cycle with repeatable publish flows and ready-to-use integrations tailored to your organization's needs.
12
+ - **Approval Gates:** Add manual approval steps to your publish flow to keep every release under control before it goes live.
13
+ - **Auto Re-sign:** Automatically apply updated signing credentials and versioning to uploaded binaries, keeping releases properly signed without a new build.
14
+ - **Audit and Reporting:** Track every publishing step with audit trails and publish reports for full transparency and compliance.
15
+
16
+ Learn more about [Appcircle Publish to Stores](https://appcircle.io/publish-to-stores?utm_source=fastlane&utm_medium=plugin&utm_campaign=publish).
9
17
 
10
18
  ## System Requirements
11
19
 
@@ -24,15 +32,15 @@ Note: Both **Appcircle Cloud** and **self-hosted** Appcircle installations are s
24
32
 
25
33
  To generate a Personal API Token:
26
34
 
27
- 1. Go to the My Organization screen (second option at the bottom left).
28
- 2. Find the Personal API Token section in the top right corner.
29
- 3. Press the "Generate Token" button to generate your first token.
35
+ 1. Open the **My Organization** screen from your profile avatar at the bottom left.
36
+ 2. Go to the **Security** section and find the **Personal Access Key** card.
37
+ 3. Press **Generate Key** to generate your token.
30
38
 
31
- ![Token Generation](<https://cdn.appcircle.io/docs/assets/image%20(164).png>)
39
+ ![Token Generation](https://raw.githubusercontent.com/appcircleio/fastlane-plugin-appcircle_publish/main/images/PAT.png)
32
40
 
33
41
  ## What the action does
34
42
 
35
- The action has two independent switches `upload` and `publish` both default
43
+ The action has two independent switches, `upload` and `publish`, both default
36
44
  to `false`. **You must enable at least one.** Create the Publish profile in
37
45
  Appcircle first; the action targets it by name (profile names are unique per
38
46
  platform).
@@ -42,7 +50,7 @@ platform).
42
50
  | `true` | `false` | Upload `appPath` as a new app version on the profile. |
43
51
  | `false` | `true` | Trigger the publish flow for the profile's **current release candidate**. |
44
52
  | `true` | `true` | Upload `appPath`, **mark the new version as release candidate**, then trigger the publish flow for it. |
45
- | `false` | `false` | Error nothing to do. |
53
+ | `false` | `false` | Error: nothing to do. |
46
54
 
47
55
  **Rules:**
48
56
 
@@ -102,8 +110,8 @@ fastlane add_plugin appcircle_publish
102
110
  end
103
111
  ```
104
112
 
105
- - `personalAPIToken` / `personalAccessKey`: Provide exactly one to authenticate Appcircle services.
106
- - `platform`: Target platform of the Publish profile `ios` or `android`.
113
+ - `personalAPIToken` / `personalAccessKey`: Provide exactly one to authenticate with Appcircle services. Providing both, or neither, fails with a descriptive error.
114
+ - `platform`: Target platform of the Publish profile: `ios` or `android`.
107
115
  - `publishProfile`: Name of the Publish profile to target.
108
116
  - `upload` (default `false`): Upload `appPath` as a new app version.
109
117
  - `publish` (default `false`): Trigger the profile's publish flow.
@@ -127,7 +135,7 @@ If you run a self-hosted Appcircle installation, point the action to your own en
127
135
  )
128
136
  ```
129
137
 
130
- > **Self-signed or private CA certificates:** If your self-hosted Appcircle server uses a self-signed certificate (or one issued by a private/internal CA), requests will fail certificate validation. The plugin does not disable TLS verification. Trust the server's CA on the machine running Fastlane add it to the system certificate store, or point the `SSL_CERT_FILE` environment variable at a PEM bundle that includes it.
138
+ > **Self-signed or private CA certificates:** If your self-hosted Appcircle server uses a self-signed certificate (or one issued by a private/internal CA), requests will fail certificate validation. The plugin does not disable TLS verification. Trust the server's CA on the machine running Fastlane: add it to the system certificate store, or point the `SSL_CERT_FILE` environment variable at a PEM bundle that includes it.
131
139
 
132
140
  ### Leveraging Environment Variables
133
141
 
@@ -145,4 +153,4 @@ If you have trouble using plugins, check out the [Plugins Troubleshooting](https
145
153
 
146
154
  ### Reference
147
155
 
148
- For more detailed instructions and support, visit the [Appcircle Publish documentation](https://docs.appcircle.io/publish-to-stores-module).
156
+ For more detailed instructions and support, visit the [Appcircle Publish to Stores documentation](https://docs.appcircle.io/marketplace/fastlane/publish-to-stores).
@@ -71,11 +71,11 @@ module Fastlane
71
71
  self.ac_login_with_pat(personalAPIToken)
72
72
  end
73
73
 
74
- profileId = UploadService.get_publish_profile_id(auth_token: @@apiToken, platform: platform, profile_name: publishProfile, api_endpoint: @@apiEndpoint)
74
+ profileId = PublishUploadService.get_publish_profile_id(auth_token: @@apiToken, platform: platform, profile_name: publishProfile, api_endpoint: @@apiEndpoint)
75
75
 
76
76
  # Guard: never start a new publish if one is already running for the profile.
77
77
  if publish
78
- active = UploadService.get_active_publish_count_for_profile(auth_token: @@apiToken, publish_profile_id: profileId, api_endpoint: @@apiEndpoint)
78
+ active = PublishUploadService.get_active_publish_count_for_profile(auth_token: @@apiToken, publish_profile_id: profileId, api_endpoint: @@apiEndpoint)
79
79
  if active > 0
80
80
  UI.user_error!("A publish is already in progress for profile '#{publishProfile}'. Not starting a new one.")
81
81
  end
@@ -85,23 +85,23 @@ module Fastlane
85
85
 
86
86
  # --- Upload ---
87
87
  if upload
88
- response = UploadService.upload_artifact(token: @@apiToken, app: appPath, platform: platform, publish_profile_id: profileId, api_endpoint: @@apiEndpoint)
88
+ response = PublishUploadService.upload_artifact(token: @@apiToken, app: appPath, platform: platform, publish_profile_id: profileId, api_endpoint: @@apiEndpoint)
89
89
  self.checkTaskStatus(response["taskId"])
90
- appVersionId = UploadService.get_latest_app_version_id(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, api_endpoint: @@apiEndpoint)
90
+ appVersionId = PublishUploadService.get_latest_app_version_id(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, api_endpoint: @@apiEndpoint)
91
91
  UI.success("#{appPath} uploaded to the Appcircle Publish profile '#{publishProfile}' successfully")
92
92
  end
93
93
 
94
94
  # --- Publish ---
95
95
  if publish
96
96
  if upload && appVersionId
97
- UploadService.mark_release_candidate(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, app_version_id: appVersionId, api_endpoint: @@apiEndpoint)
97
+ PublishUploadService.mark_release_candidate(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, app_version_id: appVersionId, api_endpoint: @@apiEndpoint)
98
98
  UI.message("Marked the uploaded version as release candidate.")
99
99
  else
100
- appVersionId = UploadService.get_release_candidate_version_id(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, api_endpoint: @@apiEndpoint)
100
+ appVersionId = PublishUploadService.get_release_candidate_version_id(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, api_endpoint: @@apiEndpoint)
101
101
  end
102
102
 
103
- publishId = UploadService.get_publish_id(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, app_version_id: appVersionId, api_endpoint: @@apiEndpoint)
104
- UploadService.start_publish(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, publish_id: publishId, api_endpoint: @@apiEndpoint)
103
+ publishId = PublishUploadService.get_publish_id(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, app_version_id: appVersionId, api_endpoint: @@apiEndpoint)
104
+ PublishUploadService.start_publish(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, publish_id: publishId, api_endpoint: @@apiEndpoint)
105
105
  UI.success("Publish flow started for profile '#{publishProfile}'.")
106
106
  success = self.poll_publish_status(platform, profileId, appVersionId)
107
107
  UI.user_error!("Publish flow failed.") unless success
@@ -153,7 +153,7 @@ module Fastlane
153
153
  def self.poll_publish_status(platform, profileId, appVersionId, interval: 5, max_attempts: 240)
154
154
  step_state = {}
155
155
  max_attempts.times do
156
- data = UploadService.get_publish_object(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, app_version_id: appVersionId, api_endpoint: @@apiEndpoint)
156
+ data = PublishUploadService.get_publish_object(auth_token: @@apiToken, platform: platform, publish_profile_id: profileId, app_version_id: appVersionId, api_endpoint: @@apiEndpoint)
157
157
  (data['steps'] || []).each do |step|
158
158
  id = step['id'] || step['name']
159
159
  next if id.nil?
@@ -3,9 +3,9 @@ require 'uri'
3
3
  require 'json'
4
4
  require 'rest-client'
5
5
 
6
- BASE_URL = "https://api.appcircle.io"
6
+ module PublishUploadService
7
+ BASE_URL = "https://api.appcircle.io"
7
8
 
8
- module UploadService
9
9
  def self.put_with_retry(url, body, headers, max_retries: 5)
10
10
  attempt = 0
11
11
  delay = 1.0
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module AppcirclePublish
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1.beta.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-appcircle_publish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - appcircleio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-08 00:00:00.000000000 Z
11
+ date: 2026-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -54,12 +54,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
54
54
  version: '2.6'
55
55
  required_rubygems_version: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - ">="
57
+ - - ">"
58
58
  - !ruby/object:Gem::Version
59
- version: '0'
59
+ version: 1.3.1
60
60
  requirements: []
61
61
  rubygems_version: 3.3.27
62
62
  signing_key:
63
63
  specification_version: 4
64
- summary: Upload an application binary to an Appcircle Publish profile
64
+ summary: Upload an application binary to an Appcircle Publish profile and/or trigger
65
+ its publish flow (app store publishing).
65
66
  test_files: []