GitHub in the Tudat Ecosystem¶
Introduction¶
Welcome to the Tudat Team on GitHub, the heartbeat of the Tudat ecosystem. This organization is the central repository for all the development and maintenance activities related to Tudat—an advanced computational framework designed to facilitate research in astrodynamics and space sciences.
This organization leverages GitHub for Version Control System (VCS), comprehensive project management, and community engagement through discussions. Additionally, we employ GitHub Actions for a streamlined DevOps pipeline. Further details can be found in specific sections of this documentation.
GitHub Repositories¶
Core Repositories¶
tudat-bundle: This is the primary repository for setting up a Tudat development environment. It includes all essential dependencies, making the initial setup process more straightforward and efficient.
tudat: The fundamental library of the Tudat ecosystem, written in C++. It offers a comprehensive suite of tools and features specifically designed for astrodynamics and space science research.
tudatpy: Acts as a bridge between the robust capabilities of Tudat’s C++ core and the simplicity of Python. tudatpy extends Tudat’s high-performance space research functionalities to the versatile environment of Python.
Dependencies¶
tudat-resources: Functions as a dedicated resource manager. It separates non-code assets from the main tudat repository, ensuring more efficient resource management and accessibility for the community.
webservices-dispatch-action: A crucial GitHub action in the Tudat ecosystem, aimed at enhancing development workflows. It simplifies complex development aspects for the tudat-team by automating various tasks related to the Tudat and tudatpy repositories.
sofa-cmake: Contains the SOFA ANSI C source code, supplemented with cmake files to integrate it seamlessly into Tudat. SOFA is vital for the implementation of standard astronomical models.
cspice-cmake: Hosts NASA’s SPICE toolkit for C programming, along with cmake files to facilitate integration with Tudat. SPICE is a key tool used in planetary science and remote sensing missions.
nrlmsise-00-cmake: Integrates the NRLMSISE-00 Atmospheric Model in C with additional cmake enhancements for compatibility with Tudat. This model is crucial for simulating Earth’s atmospheric conditions.
GitHub Actions¶
GitHub Actions is a powerful tool for automating software development workflows
within GitHub repositories. These actions are stored within the directory
.github/workflows of each repository. The following table summarizes the
actions currently implemented in the Tudat ecosystem.
automerge.yml: Comes standard in all feedstock repositories. This action automatically merges pull requests that pass all checks, ensuring a streamlined and efficient development process. This is maintained by
conda-forge. For more details on the automerge action, refer to the conda-forge/automerge-action repository.%%{ init : {"theme": "dark"} }%% flowchart LR subgraph Feedstock Repository direction LR A[Pull Request] --> B{Checks Passed?} B --> |Yes| C[Automerge] B --> |No| D[End workflow] end%%{ init : {"theme": "light"} }%% flowchart LR subgraph Feedstock Repository direction LR A[Pull Request] --> B{Checks Passed?} B --> |Yes| C[Automerge] B --> |No| D[End workflow] end
Workflow |
Description |
|---|---|
Adds in-house custom controls to the Tudat GitHub ecosystem by calling the webservices-dispatch-action. |
|
Builds all dev packages, automatically incrementing versions, if any changes are detected in the develop branch of the tudat or tudatpy repositories. |
tudat-team/.github/nightly.yml¶
0 3 * * *]) -->|triggers| Nightly
trigger2([Workflow Dispatch]) -->|triggers| Nightly
Nightly --> check_dependencies
check_dependencies --> check_core
check_core --> check_outer
subgraph check_dependencies [Job: check_dependencies]
%% step1_1[Rerender: conda-smithy-rerender]
%% step1_2[Inform: repository-dispatch]
end
subgraph check_core [Job: check_core]
%% step2_1[Rerender: conda-smithy-rerender]
%% step2_2[Inform: repository-dispatch]
end
subgraph check_outer [Job: check_outer]
%% step3_1[Rerender: conda-smithy-rerender]
%% step3_2[Inform: repository-dispatch]
end
0 3 * * *]) -->|triggers| Nightly
trigger2([Workflow Dispatch]) -->|triggers| Nightly
Nightly --> check_dependencies
check_dependencies --> check_core
check_core --> check_outer
subgraph check_dependencies [Job: check_dependencies]
%% step1_1[Rerender: conda-smithy-rerender]
%% step1_2[Inform: repository-dispatch]
end
subgraph check_core [Job: check_core]
%% step2_1[Rerender: conda-smithy-rerender]
%% step2_2[Inform: repository-dispatch]
end
subgraph check_outer [Job: check_outer]
%% step3_1[Rerender: conda-smithy-rerender]
%% step3_2[Inform: repository-dispatch]
end
Note
The time at which the nightly workflow is triggered is set in the following lines
At the time of writing, the workflow is triggered at 03:00 UTC, seen in the following configuration:
on:
schedule:
- cron: '0 3 * * *' everyday at 3:00 a.m. https://crontab.guru/#0_3_*_*_* ,,,,,,
See also