1 Commits

Author SHA1 Message Date
9390b9cd7f WIP
All checks were successful
run tests / check (push) Successful in 29s
run tests / release (push) Successful in 19s
2025-12-10 10:35:46 +01:00
8 changed files with 103 additions and 15 deletions

View File

@@ -23,6 +23,32 @@ jobs:
- run: set -u; echo "$RELEASE_PROJECT_CURRENT_VERSION"
test-sync-versions:
runs-on: action-runner
steps:
- uses: actions/checkout@v4
# skip login locally
- if: github.repository == 'actions/release'
uses: https://gitea.puzzleyou.net/actions/configure-runner-environment@master
- run: |
echo "1.33.7" > /tmp/version-test.txt
echo "0.0.42" > /tmp/other-version.txt
- uses: ./declare
with:
configure_runner_environment: false
version_descriptor: /tmp/version-test.txt
artefact_type: oci_image
artefact_name: default-image
artefact_version_descriptor: /tmp/other-version.txt
- uses: ./sync-versions
- run: test "$(cat /tmp/version-test.txt)" = "$RELEASE_PROJECT_PLANNED_VERSION"
- run: test "$(cat /tmp/other-version.txt)" = "$RELEASE_PROJECT_PLANNED_VERSION"
test-is-not-yet-released:
runs-on: action-runner
steps:

View File

@@ -14,4 +14,4 @@ jobs:
runs-on: action-runner
steps:
- uses: actions/checkout@v4
- uses: ./release
- uses: ./

1
action.yaml Symbolic link
View File

@@ -0,0 +1 @@
release/action.yaml

View File

@@ -30,4 +30,11 @@ test-workflows:
--workflows ./.gitea/workflows/check.yaml \
--job test-is-not-yet-released
act_runner exec \
--image "-self-hosted" \
--event pull_request \
--workflows ./.gitea/workflows/check.yaml \
--job test-sync-versions
# TODO
# --image "europe-docker.pkg.dev/puzzle-and-play/docker/action-runner-job:latest" \

View File

@@ -11,6 +11,15 @@ inputs:
required: false
default: true
build_run:
required: false
description: "commands to run before publishing artefacts"
default: ""
sync_versions:
required: false
default: false
runs:
using: composite
steps:
@@ -34,6 +43,17 @@ runs:
--release-commit-sha "${{ github.sha }}" \
--write-env-vars-to-filename "$GITHUB_ENV"
- name: sync versions
if: inputs.sync_versions == 'true'
run: |
nix run ${{ github.action_path }} -- \
sync-versions \
--state "${RELEASE_ACTION_STATEFILE}"
- name: run build commands
if: inputs.build_run != ''
run: ${{ inputs.build_run }}
- name: publish artefacts
run: |
nix run ${{ github.action_path }} -- \

View File

@@ -233,15 +233,29 @@ def make_deployment(type: str,
return DeploymentDescription(deployment=deployment, **maybe_condition)
def sync_versions(project_description: ProjectDescription):
planned_version = project_description.planned_version
def sync(descriptor_filename: str):
v = versioning.use_any(descriptor_filename)
v.version = planned_version
v.store()
sync(project_description.version_descriptor)
for artefact in project_description.artefacts:
if artefact.version_descriptor is not None:
sync(artefact.version_descriptor)
if __name__ == '__main__':
parser = ArgumentParser()
parser.add_argument('action', choices=[
# TODO missing: adjust version (development)
# TODO missing: check if release already exists
'declare',
'check',
'add-artefact',
'add-deployment',
'sync-versions',
'publish-artefacts',
'update-deployments',
'create-release',
@@ -371,6 +385,10 @@ if __name__ == '__main__':
save_project_description(state_file, project_description)
elif args.action == 'sync-versions':
project_description = load_project_description(state_file)
sync_versions(project_description)
elif args.action == 'publish-artefacts':
project_description = load_project_description(state_file)
publish_artefacts(project_description, args.dry_run)

View File

@@ -9,6 +9,8 @@ from release.project import (DeploymentCondition, HelmRelease, HelmReleaseInfo,
SdistReleaseInfo, Tarball, TarballReleaseInfo,
Wheel, WheelReleaseInfo)
DEFAULT_PACKAGE_OWNER = 'puzzleYOU'
class Cli:
def __init__(self, dry_run: bool):
@@ -66,8 +68,9 @@ def publish_tarball(info: TarballReleaseInfo, cli: Cli):
'--upload-file', info.filename,
'-i',
'-X', 'PUT',
'%s/api/packages/puzzleYOU/generic/%s/%s/%s' % ( # TODO owner
'%s/api/packages/%s/generic/%s/%s/%s' % (
info.repository,
DEFAULT_PACKAGE_OWNER,
info.package_name,
info.version_str,
path.basename(info.filename)))

13
sync-versions/action.yaml Normal file
View File

@@ -0,0 +1,13 @@
name: "sync version descriptors"
description: "update all version descriptors to the planned version."
inputs: {}
runs:
using: composite
steps:
- name: sync versions
run: |
nix run ${{ github.action_path }} -- \
sync-versions \
--state "${RELEASE_ACTION_STATEFILE}"