ci: switching from gitlab-ci to woodpecker.
This commit is contained in:
parent
e2cef24b65
commit
41d81c4f7c
5 changed files with 94 additions and 115 deletions
|
@ -1,69 +0,0 @@
|
|||
---
|
||||
include:
|
||||
- local: .gitlab-ci/versioning/gitversion.yml
|
||||
- local: .gitlab-ci/git/create_tag.yml
|
||||
|
||||
stages:
|
||||
- build
|
||||
- release
|
||||
|
||||
gitversion:
|
||||
extends: .versioning:gitversion
|
||||
stage: .pre
|
||||
tags:
|
||||
- gitlab-org-docker
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch
|
||||
|
||||
build:
|
||||
stage: build
|
||||
image: python:3.9.21
|
||||
tags:
|
||||
- gitlab-org-docker
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch
|
||||
needs:
|
||||
- job: gitversion
|
||||
artifacts: true
|
||||
script:
|
||||
- sed -i "s/1.0.0/${GitVersion_MajorMinorPatch}/" src/optima35/__init__.py
|
||||
- cat src/optima35/__init__.py
|
||||
- python3 -m pip install build
|
||||
- python3 -m build
|
||||
artifacts:
|
||||
paths:
|
||||
- dist/*
|
||||
expire_in: 1 day
|
||||
|
||||
publish:
|
||||
stage: release
|
||||
image: python:3.9.21
|
||||
tags:
|
||||
- gitlab-org-docker
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch
|
||||
variables:
|
||||
TWINE_USERNAME: "__token__"
|
||||
TWINE_PASSWORD: $TWINE_API
|
||||
needs:
|
||||
- job: build
|
||||
artifacts: true
|
||||
script:
|
||||
- python3 -m pip install twine
|
||||
- python3 -m twine upload dist/*
|
||||
|
||||
create_tag:
|
||||
extends: .git:create_tag
|
||||
stage: release
|
||||
tags:
|
||||
- gitlab-org-docker
|
||||
variables:
|
||||
VERSION: $GitVersion_SemVer
|
||||
TOKEN: $GITLAB_TOKEN
|
||||
needs:
|
||||
- job: gitversion
|
||||
artifacts: true
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
when: never # Do not run this job when a tag is created manually
|
||||
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
|
||||
.git:create_tag:
|
||||
image: alpine:3.21
|
||||
variables:
|
||||
GIT_STRATEGY: clone
|
||||
GIT_DEPTH: 0
|
||||
GIT_LFS_SKIP_SMUDGE: 1
|
||||
VERSION: ''
|
||||
TOKEN: '' # Token with push privileges
|
||||
script:
|
||||
- apk add git
|
||||
- git remote set-url origin https://oauth2:$TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH
|
||||
- git tag $VERSION
|
||||
- git push origin tag $VERSION
|
|
@ -1,31 +0,0 @@
|
|||
---
|
||||
.versioning:gitversion:
|
||||
image:
|
||||
name: mcr.microsoft.com/dotnet/sdk:9.0
|
||||
variables:
|
||||
GIT_STRATEGY: clone
|
||||
GIT_DEPTH: 0 # force a deep/non-shallow fetch need by gitversion
|
||||
GIT_LFS_SKIP_SMUDGE: 1
|
||||
cache: [] # caches and before / after scripts can mess things up
|
||||
script:
|
||||
- |
|
||||
dotnet tool install --global GitVersion.Tool --version 5.*
|
||||
export PATH="$PATH:/root/.dotnet/tools"
|
||||
|
||||
dotnet-gitversion -output buildserver
|
||||
|
||||
# We could just collect the output file gitversion.properties (with artifacts:report:dotenv: gitversion.properties as it is already in DOTENV format,
|
||||
# however it contains ~33 variables which unnecessarily consumes many of the 50 max DOTENV variables of the free GitLab version.
|
||||
# Limits are higher for licensed editions, see https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html#artifactsreportsdotenv
|
||||
grep 'GitVersion_LegacySemVer=' gitversion.properties >> gitversion.env
|
||||
grep 'GitVersion_SemVer=' gitversion.properties >> gitversion.env
|
||||
grep 'GitVersion_FullSemVer=' gitversion.properties >> gitversion.env
|
||||
grep 'GitVersion_Major=' gitversion.properties >> gitversion.env
|
||||
grep 'GitVersion_Minor=' gitversion.properties >> gitversion.env
|
||||
grep 'GitVersion_Patch=' gitversion.properties >> gitversion.env
|
||||
grep 'GitVersion_MajorMinorPatch=' gitversion.properties >> gitversion.env
|
||||
grep 'GitVersion_BuildMetaData=' gitversion.properties >> gitversion.env
|
||||
artifacts:
|
||||
reports:
|
||||
# propagates variables into the pipeline level
|
||||
dotenv: gitversion.env
|
92
.woodpecker/woodpecker_ci.yml
Normal file
92
.woodpecker/woodpecker_ci.yml
Normal file
|
@ -0,0 +1,92 @@
|
|||
steps:
|
||||
- name: gitversion
|
||||
depends_on: [] # nothing start emititly
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
image: mcr.microsoft.com/dotnet/sdk:9.0
|
||||
environment:
|
||||
CI_TOKEN:
|
||||
from_secret: CI_TOKEN
|
||||
commands:
|
||||
- git remote set-url origin https://CodeByMrFinchum:$CI_TOKEN@code.boxyfoxy.net/$CI_REPO.git
|
||||
- git fetch --unshallow --tags
|
||||
- apt-get update && apt-get install -y jq
|
||||
- dotnet tool install --global GitVersion.Tool --version 5.*
|
||||
- export PATH="$PATH:/root/.dotnet/tools"
|
||||
- dotnet-gitversion -output json > version.json
|
||||
- ls
|
||||
- cat version.json
|
||||
- |
|
||||
echo "GitVersion_SemVer=$(jq -r '.SemVer' version.json)" >> gitversion.env
|
||||
echo "GitVersion_LegacySemVer=$(jq -r '.LegacySemVer' version.json)" >> gitversion.env
|
||||
echo "GitVersion_FullSemVer=$(jq -r '.FullSemVer' version.json)" >> gitversion.env
|
||||
echo "GitVersion_Major=$(jq -r '.Major' version.json)" >> gitversion.env
|
||||
echo "GitVersion_Minor=$(jq -r '.Minor' version.json)" >> gitversion.env
|
||||
echo "GitVersion_Patch=$(jq -r '.Patch' version.json)" >> gitversion.env
|
||||
echo "GitVersion_MajorMinorPatch=$(jq -r '.MajorMinorPatch' version.json)" >> gitversion.env
|
||||
echo "GitVersion_BuildMetaData=$(jq -r '.BuildMetaData' version.json)" >> gitversion.env
|
||||
|
||||
- name: tagging
|
||||
depends_on: [gitversion]
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
image: alpine/git
|
||||
environment:
|
||||
CI_TOKEN:
|
||||
from_secret: CI_TOKEN
|
||||
commands:
|
||||
- ls
|
||||
- cat gitversion.env
|
||||
- git config --global user.email "ci@noreply.boxyfoxy.net"
|
||||
- git config --global user.name "CI Bot"
|
||||
- git remote set-url origin https://CodeByMrFinchum:$${CI_TOKEN}@code.boxyfoxy.net/$${CI_REPO}.git
|
||||
- . gitversion.env
|
||||
- git tag $GitVersion_SemVer
|
||||
- git push origin tag $GitVersion_SemVer
|
||||
|
||||
- name: build
|
||||
depends_on: [gitversion, tagging]
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
image: python:3.9.21
|
||||
commands:
|
||||
- ls
|
||||
- cat gitversion.env
|
||||
- export $(cat gitversion.env | xargs)
|
||||
- sed -i "s/1.0.0/${GitVersion_SemVer}/" src/optima35/__init__.py
|
||||
- cat src/optima35/__init__.py
|
||||
- python3 -m pip install build
|
||||
- python3 -m build
|
||||
|
||||
- name: publish_pypi
|
||||
depends_on: [gitversion, tagging, build]
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
image: python:3.9.21
|
||||
environment:
|
||||
TWINE_PASSWORD:
|
||||
from_secret: TWINE_API
|
||||
TWINE_USERNAME: "__token__"
|
||||
commands:
|
||||
- ls
|
||||
- python3 -m pip install twine
|
||||
- python3 -m twine upload dist/*
|
||||
|
||||
- name: publish_forgejo
|
||||
depends_on: [gitversion, tagging, build]
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
image: python:3.9.21
|
||||
environment:
|
||||
TWINE_PASSWORD:
|
||||
from_secret: PKG_TOKEN
|
||||
TWINE_USERNAME: "CodeByMrFinchum"
|
||||
commands:
|
||||
- ls
|
||||
- python3 -m pip install twine
|
||||
- python3 -m twine upload --repository-url https://code.boxyfoxy.net/api/packages/CodeByMrFinchum/pypi dist/*
|
|
@ -1,4 +1,6 @@
|
|||
# **OPTIMA35**
|
||||
Developed on my [forgejo instance](https://code.boxyfoxy.net/CodeByMrFinchum), [GitLab](https://gitlab.com/CodeByMrFinchum) is used as backup.
|
||||
|
||||
**OPTIMA35** stands for **Organizing, Processing, Tweaking Images, and Modifying Analogs from 35mm Film**. It is a Python package designed to simplify image editing and metadata management, providing an interface/API for handling image and EXIF data seamlessly. While OPTIMA35 was created with analog photography in mind—where scanned images often lack proper EXIF data or retain only scanner metadata—it is equally useful for digital images. Adding or managing EXIF data is invaluable for organizing private photo collections, making your photo library more structured and searchable.
|
||||
|
||||
OPTIMA35 is a core package that acts as an interface for libraries like Pillow and piexif, simplifying image manipulation tasks. While it modifies images one at a time, it requires a dedicated program for flexible and batch processing. For a user-friendly graphical experience, consider using [OptimaLab35](https://gitlab.com/CodeByMrFinchum/OptimaLab35), a GUI designed specifically for OPTIMA35, also developed by me.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue