Advanced Instructions
=====================
**This web page is written primarily for Maintainers. If you only use or contribute, there is no need to read this page.**
Create and Upload Docker image
------------------------------
If you want to include (or exclude) certain packages, you will need to create a new Docker image and upload it into GitLab.
#. `Install Docker `_
#. Create a new directory and `cd` into it
#. Download the Dockerfile from file repository, or create a file and copy the content into it
#. Edit Dockerfile to include (or exclude) packages required
#. Create a docker image by `docker build -t registry.com-swirls.org/com-swirls/swirlspy:latest .` (You may also use VSCode to do so)
#. Push the docker image onto GitLab.com by `docker push registry.com-swirls.org/com-swirls/swirlspy:latest`
#. (Optional) Remove the local docker image by `docker rmi -f $(docker images -q -a)`
Manually Build a SwirlsPy Conda package
---------------------------------------
The Conda package is now automatically generated. But if you want you can also build one manually, with the following instructions:
This documents how to prepare a conda package for swirlspy.
#. Enter the docker::
docker run -it -v $HOME/swirlspy:/builds/com-swirls/swirlspy registry.com-swirls.org/com-swirls/swirlspy:latest
#. Activate 'swirlspy' environment::
conda activate swirlspy
#. Build::
conda build /builds/com-swirls/swirlspy/conda.recipe
#. Install::
conda install --use-local swirlspy
System Development Life Cycle Iterative Model
-----------------------------------------------
The following is the simple workflow on how to adopt the SDLC iterative model to our project.:
.. mermaid::
:align: center
graph TD
Init[Initialization]
Release[Release a new version]
Issue[Owner / Developer create
a new issue]
CreateBranch[Developer creates
a new branch]
Fetch[Fetch and checkout
the new branch]
Update[Update source code]
Commit[Commit source code]
Push[Push source code]
CreateMergeRequest[Developer creates
a merge request]
Accept{Accept?}
Evaluation
Init-->Planing
Planing-->Requirements
Requirements-->|Design|Issue
Issue-->|Coding|CreateBranch
CreateBranch-->Fetch
Fetch-->Update
Update-->Commit
Commit-->Push
Push-->Update
Push-->CreateMergeRequest
CreateMergeRequest-->Accept
Accept-->|No|Update
Accept-->|yes,accept by
project owner or maintainer|Evaluation
Evaluation-->Planing
Evaluation-->Release
Releasing a version
*******************
The following is the suggested procedures for releasing a new version of swirlspy based on the culmination of our team's hard work:
**Step 1: Update version number in the source tree**
- Create a new branch from master
- Fetch the new branch
- Update ```swirlspy/__init__.py```. Update the version number carefully. ( Reference: https://semver.org/ )
- Commit ```swirlspy/__init__.py```
- Push the source code to the GitLab Server
- Create a merge request for updating the version number
- Accept the merge request
- After CI/CD process, use ```git tag``` to create a tag with the corresponding version
- Push the tag to the origin
- Verify the CI/CD result before proceeding to the next step
**Step 2: Configure CI/CD for handling a new version of the release**
- Create a new branch from master
- Fetch the new branch
- Update ``ci/doc_branches``. Add the new entry corresponding to the new version
- Update ``ci/package_branches``. Add the new entry corresponding to the new version
- Commit ``ci/doc_branches`` and ``ci/package_branches``
- Push the source code to the GitLab Server
- Create a merge request for updating ``ci/doc_branches`` and ``ci/package_branches``
- Accept the merge request
- Verify the website https://conda.com-swirls.org/
- Execute ``conda install -c https://username:password@conda.com-swirls.org -c defaults -c conda-forge swirlspy`` to verify the installation
- Verify the website https://docs.com-swirls.org/