SourceCraft resource relationships

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 more information about working with Git, see Getting started with Git.

SourceCraft Terms of Use

This service provides a public REST API.

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.

To authorize corporate accounts in SourceCraft using single sign-on (SSO), you can use Yandex Cloud SAML-compatiable identity federations.

For more information, see Creating an organization in SourceCraft.

Repositories

A repository is a storage containing the entire codebase of your project and information related to it. A repository includes:

  • Source code (all project files)
  • Change history (commit log)
  • Branches (independent development lines)
  • 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.

For more information, see Creating a repository in SourceCraft.

You can set up repository privacy in SourceCraft:

  • 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.

For more information, see Configuring a SourceCraft repository to support Git Large File Storage (LFS).

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 admin role, the SourceCraft commit history will be overwritten (force push) during the next repository sync.

For more information, see Importing or mirroring a repository in SourceCraft.

Forks

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 developer role or Repository maintainer role in the original repository. In such pull requests, automatic start of CI/CD processes is disabled.

For more information, see Working with forks in SourceCraft.

Pull requests

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.

For more information, see Creating a pull request in a SourceCraft repository.

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.

For more information, see Working with pull requests in SourceCraft.

Issues

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.

For more information, see Creating an issue in a SourceCraft repository.

You can use boards to work with issues. Boards allow you to track progress and manage issue statuses.

Issues on the board are distributed between columns and sorted by creation date. Columns correspond to issue statuses:

  • Open
  • In progress
  • Paused
  • Declined
  • Closed

Each issue card contains:

  • Assignee's avatar. Hover over the avatar for the username and a link to the profile.
  • Issue priority icon. Hover over this icon to see the priority name.
  • Issue number.
  • The icon to copy a link to the issue. Hover over the card to see this icon.
  • Issue name.
  • List of labels.
  • Milestone name. Hover over the milestone name to view the deadline and open the milestone.

For more information, see Working with an issue board in a SourceCraft repository.

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.

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.

For more information, see Working with issues in SourceCraft.

Milestones

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.

For more information, see Working with milestones in SourceCraft.

Secrets

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.

For more information, see Managing secrets in a SourceCraft repository.

Tip

SourceCraft provides secure Yandex Cloud API authentication within CI/CD workflows using service connections.

Code

Tip

For information on editing code with an AI assistant, see Code Assistant in SourceCraft.

Navigating and searching through code

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.yaml CI/CD configuration file.

For more information, see Navigating and searching by code in SourceCraft.

Using a repository as a package source

In SourceCraft, you can use public repositories in public organizations as a source of packages for projects in Go.

For more information, see Using a SourceCraft repository as a Go package source.

Packages

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.

Note

Registries are stored in Yandex Cloud Registry. For more information about free tier and pricing policy, see these Cloud Registry guides.

Supported package types:

  • Maven: Java artifacts.
  • NPM: Node.js artifacts.
  • NuGet: .NET artifacts.
  • PyPI: Python artifacts.
  • Docker: Docker images.

Warning

To create, add, and connect registries to repositories, you need the Organization admin role.

All organization users have read access to packages from registries.

You can connect to local Yandex Cloud Registry registries residing in the same organization.

Registries created in SourceCraft will also be shown in the Yandex Cloud management console.

Note

Once a repository is connected to a registry, all users with the Repository developer, Repository maintainer, or Repository admin role for the repository gain the ability to upload packages into the registry.

For more information, see the guides for Working with packages.

See also