SourceCraft is a platform you can use to develop source code, perform version management, test, assemble, deploy, and maintain software products. It is a code repository management system for git with error tracking and a CI/CD pipeline.
For information on how you can use SourceCraft for open source projects, see this page.
SourceCraft provides secure Yandex Cloud API authentication within CI/CD workflows using service connections.
Organizations
An organization is a user space in SourceCraft.
When a user signs up in SourceCraft, this automatically creates a personal organization and cloud in Yandex Cloud. A personal organization can be distinguished by Personal Organization (SourceCraft) in its name and Created by SourceCraft in its description.
Organizations do not interact with each other. Resources belonging to an organization cannot access another organization’s resources.
Organizations differ in privacy settings:
Private: Only invited users will have access to view and edit the repository. You cannot create public repositories in such organizations.
Public: All internet users will be able to view the organization's public repositories without authentication. Only invited users will be able to modify the repositories.
By default, a new organization member has no access to the organization repositories. Access permissions must be granted explicitly by assigning a role for an individual repository or the entire organization.
Tip
To manage user roles in teams across your organization, use these commands.
Each organization in SourceCraft has a corresponding organization in Yandex Identity Hub.
SourceCraft gets the author name and email for each commit from git. If the email in the git settings matches the SourceCraft user email, the commit is automatically associated with that user in the repository, with their SourceCraft username, avatar, and profile link displayed in the commit history.
You can have several email addresses associated with your profile, in which case commits containing these addresses will be attached to your account.
Tags (markers for key points in the project’s history).
Releases, i.e., fixed versions of the project that include a specific set of changes, a tag, a description, and additional resources, such as binaries or archives, intended for users or other developers.
You can use a repository to track the progress of your project, manage different development branches, and roll back to previous code versions.
SourceCraft uses branch policies for change management and code review, enforcement of proper naming conventions and branch and tag conditions, and protection of branches from accidental commits or direct pushes.
Public: All internet users will be able to view the repository without authentication. Only invited users will be able to modify the repository.
Internal: Only users from the organization housing the repository will have access to view and edit the repository.
Private: Only invited users will have access to view and edit the repository.
You can change repository access type at any time.
SourceCraft repositories support Git Large File Storage (LFS) for storing large files. We recommend using LFS for storing objects larger than 100 MB in the repository.
You can also use a repository for static website hosting with SourceCraft Sites.
Email notifications about activities in the repository are supported.
Importing and mirroring a repository from another system
You can import or mirror into SourceCraft your source code repository hosted in another IT project management system for Git.
Mirroring allows you to automatically synchronize particular branches between the source repository and the SourceCraft repository.
Simple code import (commit history, all existing branches and tags) is supported for any public repositories from any Git hosting services.
When migrating a repository from GitHub, you can optionally import the following:
Pull requests
Issues
Comments
Warning
Pull requests, issues and comments are transferred only during the initial synchronization and do not get updated afterwards. Mirroring is limited to particular branches of the source repository.
The mirrored SourceCraft repository branches are subject to branch policy protection rules. You cannot change them in SourceCraft; they get updated only when syncing with the source repository.
If the branch policy is disabled or overridden by a user with the Repository adminrole, the SourceCraft commit history will be overwritten (force push) during the next repository sync.
Forks allow you to create a personal isolated copy of another repository. A fork contains all code, commit history, and the main branch or all branches and tags of the original repository.
Forks simplify the process of making changes in someone else's projects, including open source ones. You are free to experiment, add new features, or fix bugs, and then propose your edits to the main project as pull requests.
A fork only contains objects created when working with that fork, such as commits and LFS objects, and the original repository data is connected dynamically.
When the original repository is deleted, the fork that was created first becomes the new original. All data is transferred to that fork.
SourceCraft supports fork sequences up to ten levels deep.
Note
To create a fork, you need the permissions to read the original repository. To create a fork from an existing one, you need permissions to read all the repositories in the chain. For more information, see Access management in SourceCraft.
Pull request CI/CD processes from the fork repository branch to the original repository branch can only be started by users with the Repository developerrole or Repository maintainerrole in the original repository. In such pull requests, automatic start of CI/CD processes is disabled.
A pull request is a request to merge changes from one branch into another, usually the project’s main branch. A pull request contains a description of changes, comparison of branches, a discussion for review, and may be integrated with CI/CD processes. This makes it easier for teams to collaborate and allows you to review and approve updates based on the defined rules before they are added to the main project.
To work with pull requests in SourceCraft, including for approvals, you do not need to switch to an IDE on your local computer: you can do all the steps in the SourceCraft interface. You can navigate and search through the project code and edit the code.
Issues is a tool for tracking bugs, improvements, and new feature requests within a project. In an issue, you can start a discussion in comments, set the job status, priority, and responsible employee.
You can use issues to maintain user activity in a project. Users may vote for an issue, discuss problems or ideas in comments, share their suggestions, and ask for clarifications.
They can use reactions, e.g., likes, dislikes, and other emojis, to acknowledge a relevant or helpful comment. Users can mention each other in a message with the @ symbol and add links to other issues, milestones, and pull requests to group related discussions and resolve issues faster.
SourceCraft supports updating issue pages in real time. You do not need to refresh the page manually to see new comments, reactions, and other changes.
Tip
You can link issues from different repositories within one organization. The following link types are available:  Related issue,  Sub-issue,  Parent issue,  Blocker for,  Blocked by, and  Duplicate of.
You can select an existing issue from the drop-down list or create a new one directly on the current page.
To stay updated on new comments, reactions, and other events, subscribe to notifications for the issue. You will be getting these at the email linked to your account.
Labels only apply within the repository where they were created. Adding, editing, or deleting labels within a repository does not affect labels in other repositories.
Milestones are a tool for planning and tracking key milestones during software development.
Milestones may be associated with new releases or major updates.
For each milestone, you can set a due date and specify the issues you need to complete to reach your target. You can also link pull requests to issues.
This way, by grouping milestones, issues, and pull requests, you can track development progress and manage priorities.
Using secrets, you can securely store encrypted confidential data, such as passwords, access keys, tokens, and more in the repository.
A secret consists of a key-value pair, where the key is the secret name, and the value, the confidential data.
Two types of secrets are supported:
SourceCraft: Regular key-value secret stored in the service.
Lockbox: Link to a Yandex Lockbox secret. The secret itself is stored in Yandex Cloud, and SourceCraft accesses it via a service connection using the latest current version of the secret.
You can use secret values in the repository's CI/CD processes. To do this, in the .sourcecraft/ci.yaml configuration file, specify the secret in ${{ secrets.<secret_name> }} format.
Tip
SourceCraft provides secure Yandex Cloud API authentication within CI/CD workflows using service connections.
Integration with Yandex Lockbox
With Yandex Lockbox integration, you can:
Store secrets in Yandex Cloud without duplicating their values ​​in SourceCraft.
Use full-blown secret management with versioning and granular access permissions.
Use the same secrets in SourceCraft and other Yandex Cloud services.
The SourceCraft UI also supports copying and downloading raw files without having to clone the repository.
Tip
To render Markdown files, the repository supports Yandex Flavored Markdown as well as LaTeX formulas implemented via the Diplodoc plugin based on the KaTeX library.
Navigating and searching through code
You can easily understand code structure and dependencies with SourceCraft code navigation. The solution links declarations of named entities to their usages: for any named entity, you can view its declaration and jump directly to the corresponding line in the source code.
You need no setup to activate code navigation: SourceCraft will automatically index your code for all supported programming languages.
This feature is available both in code browsing mode and when reviewing pull requests.
SourceCraft provides the following code navigation capabilities:
You can check whether navigation is available via the indicator.
Note
File structure output, declaration search, and element occurrence search are supported for C, C++, C#, Go, Java, JavaScript, Kotlin, PHP, Python, TypeScript, the Protocol Buffers data description language, and the .sourcecraft/ci.yamlCI/CD configuration file.
In SourceCraft, you can store, distribute, and manage software packages. These can be third-party libraries, dependencies, or custom program builds.
With packages, developers can easily share their build results, reuse code, and incorporate it into their projects.
Packages are stored in registries, i.e., repositories these packages are published to and from where they can be downloaded by other project members or automated systems. Registries provide version control, access control, auditing, and link together the package publishing and deployment processes in the source code management system.
SourceCraft offers integration with Tracker. It allows you to link pull requests to Tracker issues, track the status of linked pull requests in Tracker, and, the other way around, see linked issues in the repository.