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.
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.
Each organization in SourceCraft has a corresponding organization in Yandex Identity Hub.
Tags (markers for key points in the project’s history)
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.
Note
Currently, only GitHub repositories are supported.
Within a repository, you can import the following:
Commit history
All existing branches
Open and closed pull requests
Issues
Comments
Tags
Warning
Pull requests, issues, comments, and tags 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.
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.
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.
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.
You can easily understand your code's structure and dependencies using the code navigation features in SourceCraft. 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.
No configuration is required to enable code navigation, as SourceCraft automatically indexes 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 usage search are supported for C, C++, C#, Go, Java, JavaScript, Kotlin, 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.