Development¶
Visual Studio Code DevContainer¶
For Easy development use Visual Studio Code DevContainer, you can find the basement from the Development Containers at nolte/vscode-devcontainers.
Precondition for Use¶
-
Create you Github Personal Access Token under github.com/settings/tokens with the following scopes:
read:packages
-
Login to fetch the required dev containers
docker login docker.pkg.github.com
- Grab you a Coffee and wait for 3 Minutes (This happens on the first time use)
- Click Terminal -> New Terminal and execute the following command:
make
Process¶
branch | description |
---|---|
master |
The master will only used for Presentation, and the Deployment process. |
tags/v* |
All Created Releases must be start with a v* prefix at the tag name. |
gh-pages |
Branch for the Static HTML presentation, generated by the GitHub Release Workflow. |
develop |
Branch for the current development, this branch will be used for integrate new Features, and starting the release flow. |
feature/* |
This are temporary branches for develop new functions. |
fix/* |
Used for bugfixing from existing versions, if no FastForward Fix Possible. |
Please use the develop
branch for new features and fixes.
Releasing¶
The Github Release Assets will be automatic attach from the build job see .github/workflows/gorelease.yaml
. The Release Process use goreleaser for create the the Binaries.
Each Release will be start, at the moment, from the develop
branch.
The release description will be generated by release-drafter/release-drafter in a seperated workflow. Look to .github/workflows/release-drafter.yml
for the Job, and .github/release-drafter.yml
for the description configuration.
Build¶
The Build scripted at the moment splitted into the GitHub Workflow Stuff and a combination of Makefiles and Shell Scripts, an Targets from the nolte/plumbing.
The Makefile/Magefile
should be use for the local development, permanten using the full GitHub Workflows needs a lot of time.
You will get the compleat list of possible Magefile Targets with:
cd ./tools && go run mage.go -l
CI/CD¶
For local usage the GitHub Actions we use the nektos/act Project. The first local execute will be take some time for pulling the large nektos/act-environments-ubuntu:18.04 image.
# call job
act -j <job> -P ubuntu-latest=nektos/act-environments-ubuntu:18.04
# example calling the build workflow
act -j build -P ubuntu-latest=nektos/act-environments-ubuntu:18.04
Since the Acception Tests Workflow is a matrix build, for better Tests again different Harbor Versions. It is not possible to run it locally, because the you can`t start two or more Kind Cluster out of the box locally. Feature Request #114 for call a specific Matrix Workflow.
HarborAPI Client¶
At the moment the Swagger Json for generate the Api Client, look ./docs/adr/0001-use-swagger-for-generate-http-client.md.
For manipulate the Swagger Json, and generating a useable go api client, we use evanphx/json-patch inside the buildprocess, for adding or replace different JSonStructures. So if you need new manipulations, change the scripts/swagger-specs/patch.1.json
patch file. More informations about jsonpatch. The problem are tracked, #12474.
Docs¶
The Documentation are presented in Different Formats, as GitHub Page , and for the registry.terraform.io.
GitHub Page¶
If you use the VSCode DevContainer, the mkdocs container will be started automatical, as a sidecar container. At the Development you ca access the current state from the Documentation at 127.0.0.1:8000. For some extras, like Tasks List or Snippeds we use the MarkdownPP project.
Terraform Registry¶
The Focus from the Registy Documentation is the Provider self, for example Resources
and Datasources
. More informations about the Required Format at terraform.io.
Development Shortcuts¶
build and test in one command
make compile \
&& make install \
&& bats scripts/test/bats/build
terraform import -var harbor_endpoint=${HARBOR_ENDPOINT} -var harbor_base_path='/api' harbor_project.main 24