Integrating Yandex Tracker with Cloud Functions
Learn how to integrate Yandex Tracker automation tools with Cloud Functions. The example shows how to calculate the total time spent on a parent issue from all its sub-issues.
To configure the total time spent value of a parent issue to automatically update whenever this value changes in any of its child sub-issues:
- Register the application.
- Get an application access token.
- Get an organization ID to access the API.
- Create a Cloud Functions function.
- Set up a trigger.
- Test out automatic data updates.
Getting started
To run the scenario, you will need:
- Yandex Cloud billing account.
- A Yandex Tracker account belonging to an organization connected to Yandex Cloud with a role no lower than
organization-manager.admin.
Sign up for Yandex Cloud and create a billing account:
- Go to the management console and log in to Yandex Cloud or create an account if you do not have one yet.
- On the Billing page, make sure you have a billing account activated and its status is
ACTIVEorTRIAL_ACTIVE. If you do not have a billing account, create one.
If you have an active billing account, you can create or select a folder on the cloud page to host your infrastructure.
Learn more about clouds and folders.
Required paid resources
The cost of infrastructure support includes a fee for function invocations (see Cloud Functions pricing).
If you no longer need the resources you created, delete them.
Register the application
- Open
https://oauth.yandex.ru/client/newin your browser and log in with your Yandex Tracker account. - In the Create app form:
- In the Service name field, enter a name, e.g.,
TimeUpdater. - Under Platforms, enable Web services, and enter
https://oauth.yandex.ru/verification_codein the Redirect URI field. - Under Data access, in the input field, start typing
tracker. Then, from the drop-down list, select:Read from TrackerWrite in Tracker
- In the Service name field, enter a name, e.g.,
- Click Create app.
- Wait for the page with the application details to load and copy your application ID from the ClientID field.
Get an application access token
- In the browser, go to:
Where the
https://oauth.yandex.ru/authorize?response_type=token&client_id=<app_ID>client_idparameter value is the application ID from the ClientID field on the application details page from the previous step. - Wait for the page to load and copy the token.
- Save the token. You will need it to create a function.
Get an organization ID to access the API
- Go to Tracker. Click Log in to Tracker.
- In the right-hand panel, click Administration.
- Under Access and payment, click Organizations.
- Under Yandex 360 for businesses, copy and save your organization ID. You'll need it to create a function.
Create a Cloud Functions function
- Go to the management console.
- In the top-left corner, click
All services. - Select Serverless computing → Cloud Functions.
- Click Create function.
- Enter a function name, e.g.,
timeupdater. - Click Create.
- In the Editor window that opens, select
Python / 3.9runtime environment. - Click Next.
- In the Method field, click ZIP archive.
- Attach a test archive.
- In the Entry point field, specify
index.handler. - Go to Parameters and in the Environment variables field, add:
ORG: Yandex 360 for Business organization IDTOKEN: Application access token
- Click Save changes.
- Wait for the page to load. Next, in the Link to invoke field, copy and save the function invocation link.
Here is an example of such a link:https://functions.yandexcloud.net/d4e94uav3108******** - Enable the Public function option.
Set up a trigger
Create a queue
-
On the left panel, click Queues → Create queue.
- Select a queue template, e.g., Basic development model.
- Enter a name, e.g.,
Function Test. - Click Create.
Create a trigger
- In the top-right corner of the queue page, click Queue settings.
- On the left-hand panel, select Automation → Triggers and click Create trigger.
- In the Name field, enter a trigger name, e.g.,
timeupdater. - Under Conditions, select Time Tracking → Time Spent.
- Under Trigger actions, select HTTP request.
- In the form that opens, in the Address field, enter:
Where
https://functions.yandexcloud.net/<function_ID>?id={{issue.key}}https://functions.yandexcloud.net/<function_ID>is the function invocation link you saved when creating the function.
Example:https://functions.yandexcloud.net/d4e94uav3108********?id={{issue.key}} - Click Create.
Test out automatic data updates
Create issues
- Create a parent issue whose total time spent across all sub-issues will be calculated:
- On the
Function Testqueue page, click Create issue. - In the form that opens, in the Issue name field, enter an issue name, e.g.,
Parent Task. - Click Create.
- On the
- Create sub-issues:
- In the top right corner of the
Parent Taskissue page, select Add sub-issue in the Actions menu. - In the form that opens, in the Issue name field, enter a sub-issue name, e.g.,
Subtask-1. - In the same way, create another sub-issue or multiple sub-issues named
Subtask-2,Subtask-3, and so on.
- In the top right corner of the
Enter time spent values for the sub-issues
- Go to the
Subtask-1sub-issue page and select Add time spent from the Actions menu in the top right corner. - In the window that opens, specify any time value in the Time Spent field. For example, you can enter
1h25m. - In the same way, add time spent values for the other sub-issues.
Check if the function works correctly
- Go to the
Parent Taskissue page. - In the issue properties, make sure that the Time Spent field under Time Tracking includes the time you specified in the sub-issue.
How to delete the resources you created
To stop paying for the resources you created, delete the Cloud Functions function.