Compare commits

..

3 commits

Author SHA1 Message Date
bom
0cdf4b4c9c Update files for in project release testing
1. commit anything and include one release type
2. run `pyb release` in project root
3. check that release commit and version bump commit were added
4. reset with `git reset origin/main`
2023-02-23 16:34:22 +01:00
bom
b93772d3a1 Fix naming and arguments in release_mixin 2023-02-23 16:31:33 +01:00
bom
a109759c68 Return stdout from git_repository functions 2023-02-23 16:30:43 +01:00
5 changed files with 43 additions and 30 deletions

View file

@ -1,10 +1,29 @@
import sys
import os
from pathlib import Path
from ddadevops import *
# getting the name of the directory
# where the this file is present.
current = os.path.dirname(os.path.realpath(__file__))
# adding the current directory to
# the sys.path.
sys.path.append(current)
# now we can import the module in the current
# directory.
from pybuilder.core import task, init from pybuilder.core import task, init
from ddadevops import * from ddadevops import *
from version import * from release_mixin import ReleaseMixin, create_release_mixin_config
from release_mixin import *
CONFIG_FILE = '' CONFIG_FILE = Path('config.json')
MAIN_BRANCH = 'main' MAIN_BRANCH = 'main'
STAGE = 'test'
PROJECT_ROOT_PATH = '.'
MODULE = 'test'
BUILD_DIR_NAME = "build_dir"
class MyBuild(ReleaseMixin): class MyBuild(ReleaseMixin):
pass pass
@ -13,33 +32,17 @@ class MyBuild(ReleaseMixin):
def initialize(project): def initialize(project):
project.build_depends_on('ddadevops>=3.1.2') project.build_depends_on('ddadevops>=3.1.2')
config = create_release_mixin_config(CONFIG_FILE, MAIN_BRANCH) config = create_release_mixin_config(CONFIG_FILE, MAIN_BRANCH)
config.update({'stage': STAGE,
'module': MODULE,
'project_root_path': PROJECT_ROOT_PATH,
'build_dir_name': BUILD_DIR_NAME})
build = MyBuild(project, config) build = MyBuild(project, config)
build.init() build.initialize_build_dir()
@task @task
def release(project): def release(project):
build = get_devops_build(project) build = get_devops_build(project)
prepare_release(build) build.init_release()
tag_and_push_release(build) build.prepare_release()
build.tag_and_push_release()
prepare_version_bump(build)
tag_and_push_version_bump(build)
def prepare_release(build):
release_version = build.release_version
build.prepare(release_version)
def tag_and_push_release(build):
release_version = build.release_version
build.tag_and_push(release_version)
def prepare_version_bump(build):
bump_version = build.bump_version
build.prepare(bump_version)
def tag_and_push_version_bump(build):
bump_version = build.bump_version
build.tag_and_push(bump_version)

3
config.json Normal file
View file

@ -0,0 +1,3 @@
{
"version": "123.125.1-SNAPSHOT"
}

View file

@ -42,21 +42,28 @@ class GitRepository():
def tag_annotated(self, annotation: str, message: str): def tag_annotated(self, annotation: str, message: str):
self.system_repository.run_checked('git', 'tag', '-a', annotation, '-m', message) self.system_repository.run_checked('git', 'tag', '-a', annotation, '-m', message)
return self.system_repository.stdout
def tag_annotated(self, annotation: str, message: str, count: int): def tag_annotated(self, annotation: str, message: str, count: int):
self.system_repository.run_checked('git', 'tag', '-a', annotation, '-m', message, f'HEAD~{count}') self.system_repository.run_checked('git', 'tag', '-a', annotation, '-m', message, f'HEAD~{count}')
return self.system_repository.stdout
def get_current_branch(self): def get_current_branch(self):
self.system_repository.run_checked('git', 'branch', '--show-current') self.system_repository.run_checked('git', 'branch', '--show-current')
return ''.join(self.system_repository.stdout).rstrip()
def add_file(self, file_path: Path): def add_file(self, file_path: Path):
self.system_repository.run_checked('git', 'add', file_path) self.system_repository.run_checked('git', 'add', file_path)
return self.system_repository.stdout
def commit(self, commit_message: str): def commit(self, commit_message: str):
self.system_repository.run_checked('git', 'commit', '-m', commit_message) self.system_repository.run_checked('git', 'commit', '-m', commit_message)
return self.system_repository.stdout
def push(self): def push(self):
self.system_repository.run_checked('git', 'push') self.system_repository.run_checked('git', 'push')
return self.system_repository.stdout
def checkout(self, branch: str): def checkout(self, branch: str):
self.system_repository.run_checked('git', 'checkout', branch) self.system_repository.run_checked('git', 'checkout', branch)
return self.system_repository.stdout

View file

@ -41,7 +41,7 @@ class ReleaseMixin(DevopsBuild):
self.bump_version = self.release_version.create_bump_version() self.bump_version = self.release_version.create_bump_version()
def prepare_release(self): def prepare_release(self):
prepare_release_service = PrepareReleaseService(self.version_repo, self.config_file, self.main_branch) prepare_release_service = PrepareReleaseService(self.version_repo, self.git_repo, self.config_file, self.main_branch)
if self.release_version is None or self.bump_version is None: if self.release_version is None or self.bump_version is None:
raise Exception('prepare_release was called before init_release') raise Exception('prepare_release was called before init_release')
@ -49,6 +49,6 @@ class ReleaseMixin(DevopsBuild):
prepare_release_service.write_and_commit_release(self.release_version) prepare_release_service.write_and_commit_release(self.release_version)
prepare_release_service.write_and_commit_bump(self.bump_version) prepare_release_service.write_and_commit_bump(self.bump_version)
def tag_and_push(self): def tag_and_push_release(self):
tag_and_push_release_service = TagAndPushReleaseService(self.git_repo) tag_and_push_release_service = TagAndPushReleaseService(self.git_repo)
tag_and_push_release_service.tag_and_push_release(self.release_version) tag_and_push_release_service.tag_and_push_release(self.release_version)

View file

@ -64,6 +64,6 @@ class TagAndPushReleaseService():
annotation = 'v' + release_version.get_version_string() annotation = 'v' + release_version.get_version_string()
message = 'Release ' + annotation message = 'Release ' + annotation
self.git_repository.tag_annotated(annotation, message, 1) self.git_repository.tag_annotated(annotation, message, 1)
self.git_repository.push() # self.git_repository.push()