From cea54b094569c183e7b6c11b55fe888a8f644311 Mon Sep 17 00:00:00 2001 From: Michael Jerger Date: Thu, 17 Aug 2023 18:23:33 +0200 Subject: [PATCH] added doc for creating artifacts --- README.md | 5 -- doc/ReleaseMixin.md | 117 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 102 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index aac6210..1a3c411 100644 --- a/README.md +++ b/README.md @@ -205,8 +205,3 @@ For more details about our repository model see: https://repo.prod.meissa.de/mei Copyright © 2021 meissa GmbH Licensed under the [Apache License, Version 2.0](LICENSE) (the "License") - -## License - -Copyright © 2023 meissa GmbH -Licensed under the [Apache License, Version 2.0](LICENSE) (the "License") diff --git a/doc/ReleaseMixin.md b/doc/ReleaseMixin.md index aa4e419..15e21c9 100644 --- a/doc/ReleaseMixin.md +++ b/doc/ReleaseMixin.md @@ -1,5 +1,15 @@ # ReleaseMixin +- [ReleaseMixin](#releasemixin) + - [Input](#input) + - [Example Usage just for creating releases](#example-usage-just-for-creating-releases) + - [build.py](#buildpy) + - [call the build for creating a major release](#call-the-build-for-creating-a-major-release) + - [Example Usage for creating a release on forgejo / gitea \& upload the generated artifacts](#example-usage-for-creating-a-release-on-forgejo--gitea--upload-the-generated-artifacts) + - [build.py](#buildpy-1) + - [call the build](#call-the-build) + + Support for releases following the trunk-based-release flow (see https://trunkbaseddevelopment.com/) ```mermaid @@ -20,8 +30,12 @@ classDiagram | release_main_branch | the name of your trank | "main" | | release_primary_build_file | path to the build file having the leading version info (read & write). Valid extensions are .clj, .json, .gradle, .py | "./project.clj" | | release_secondary_build_files | list of secondary build files, version is written in. | [] | +| release_artifact_server_url | Optional: The base url of your forgejo/gitea instance to publish a release tode | | +| release_organisation | Optional: The repository organisation name | | +| release_repository_name | Optional: The repository name name | | +| release_artifacts | Optional: The list of artifacts to publish to the release generated name | [] | -## Example Usage +## Example Usage just for creating releases ### build.py @@ -36,7 +50,7 @@ PROJECT_ROOT_PATH = '..' @init def initialize(project): - project.build_depends_on("ddadevops>=4.0.0") + project.build_depends_on("ddadevops>=4.7.0") input = { "name": name, @@ -48,35 +62,108 @@ def initialize(project): "release_type": "MINOR", "release_primary_build_file": "project.clj", "release_secondary_build_files": ["package.json"], - } - - roject.build_depends_on("ddadevops>=4.0.0-dev") - + } build = ReleaseMixin(project, input) build.initialize_build_dir() @task -def prepare_release(project): - build = get_devops_build(project) - build.prepare_release() +def patch(project): + linttest(project, "PATCH") + release(project) + @task -def build(project): - print("do the build") +def minor(project): + linttest(project, "MINOR") + release(project) + @task -def publish(project): - print("publish your artefacts") +def major(project): + linttest(project, "MAJOR") + release(project) + + +@task +def dev(project): + linttest(project, "NONE") + + +@task +def prepare(project): + build = get_devops_build(project) + build.prepare_release() + @task -def after_publish(project): +def tag(project): build = get_devops_build(project) build.tag_bump_and_push_release() + + +def release(project): + prepare(project) + tag(project) + + +def linttest(project, release_type): + build = get_devops_build(project) + build.update_release_type(release_type) + #test(project) + #lint(project) +``` + +### call the build for creating a major release + +```bash +pyb major +``` + +## Example Usage for creating a release on forgejo / gitea & upload the generated artifacts + +### build.py + +```python +rom os import environ +from pybuilder.core import task, init +from ddadevops import * + +name = 'my-project' +MODULE = 'my-module' +PROJECT_ROOT_PATH = '..' + +@init +def initialize(project): + project.build_depends_on("ddadevops>=4.7.0") + + input = { + "name": name, + "module": MODULE, + "stage": "notused", + "project_root_path": PROJECT_ROOT_PATH, + "build_types": [], + "mixin_types": ["RELEASE"], + "release_type": "MINOR", + "release_primary_build_file": "project.clj", + "release_secondary_build_files": ["package.json"], + "release_artifact_server_url": "https://repo.prod.meissa.de", + "release_organisation": "meissa", + "release_repository_name": "dda-devops-build", + "release_artifacts": ["target/doc.zip"], + } + build = ReleaseMixin(project, input) + build.initialize_build_dir() + +@task +def publish_artifacts(project): + build = get_devops_build(project) + build.publish_artifacts() ``` ### call the build ```bash -pyb prepare_release build publish after_publish +git checkout "4.7.0" +pyb publish_artifacts ```