6.5 KiB
Actions
This repo provides reusable Gitea Actions as composite actions that can be referenced with uses:.
Bump Version
Creates or updates the version in package.json, commits it, creates a matching Git tag, and pushes both.
Inputs:
node_version: Node.js version to use. Default:24release_line: optional release line for dev builds. Format:<major>.<minor>or<major>.<minor>.<patch>. Overrides branch, PR target, inferred ancestor release branch, andpackage.json.gitea_token: optional token used for checkout and push
Branch and tag rules:
main: creates release tags from the latest commit message (release/x.y.z,release/x.y,hotfix/x.y.z) or falls back to a patch bump.release/<major>.<minor>orrelease/<major>.<minor>.<patch>: creates the next beta tag for that release base, e.g.v2.4.0-beta.3orv2.4.1-beta.3.- all other branches: create a dev tag for the resolved release base using a UTC timestamp, e.g.
v2.4.0-dev.20260314153045.
Dev release line resolution order:
inputs.release_line- current branch if it matches
release/<major>.<minor>orrelease/<major>.<minor>.<patch> - PR target branch if it matches
release/<major>.<minor>orrelease/<major>.<minor>.<patch> - newest ancestor branch from
origin/release/*(for feature branches created from release branches outside PR context) major.minorfrompackage.json
If no release line can be resolved for a dev build, the action fails intentionally.
Examples:
Commit message examples on main:
release/2.4.0->v2.4.0release/2.4->v2.4.0hotfix/2.4.1->v2.4.1
Branch examples:
release/2.4-> nextv2.4.0-beta.Nrelease/v2.4.1-> nextv2.4.1-beta.N- feature branch in a PR to
release/2.4->v2.4.0-dev.<UTC_TIMESTAMP> - feature branch created from
release/v2.4.1(without PR base) ->v2.4.1-dev.<UTC_TIMESTAMP>when the release branch tip is an ancestor - feature branch outside a PR with
package.jsonversion2.4.0->v2.4.0-dev.<UTC_TIMESTAMP> - feature branch outside a PR with
release_line: 2.4->v2.4.0-dev.<UTC_TIMESTAMP>
Example:
jobs:
bump-version:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: tanztee/ci-cd/.github/actions/bump-version@main
with:
gitea_token: ${{ secrets.GITEA_TOKEN }}
Feature branch outside a PR:
jobs:
bump-version:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: tanztee/ci-cd/.github/actions/bump-version@main
with:
gitea_token: ${{ secrets.GITEA_TOKEN }}
release_line: 2.4
Build and Push Docker Image
Example:
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: tanztee/ci-cd/.github/actions/build-and-push@main
with:
registry: ${{ secrets.REGISTRY }}
registry_username: ${{ secrets.REGISTRY_USERNAME }}
registry_password: ${{ secrets.REGISTRY_PASSWORD }}
Deploy Image to Kubernetes
Example:
on:
workflow_dispatch:
inputs:
tag:
description: Image tag to deploy (e.g. v1.2.3)
required: true
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: tanztee/ci-cd/.github/actions/deploy-k8s@main
with:
tag: ${{ inputs.tag }}
namespace: oumta-dev
kubeconfig: ${{ secrets.KUBECONFIG }}
registry: ${{ secrets.REGISTRY }}
Woodpecker plugins
Plugins are Docker images built from woodpecker/<name>/ by .woodpecker/plugins.yaml. A tag <name>-vX.Y.Z publishes git.uesome.de/actions/ci-cd/<name>:vX.Y.Z; pipelines pin that version.
deploy
Writes a pushed dev or beta image with its digest to tanztee/oumta-deploy (D16 there). ci/deploy-image.sh in oumta-deploy decides the environment from the tag: -dev. goes to dev, -beta. to beta, anything else is skipped (prod only via PR).
Settings:
var(required): variable inenvs/<env>/images.env, e.g.AUTH_IMAGE.{major}is replaced by the major of the tag (APP_V{major}_IMAGE->APP_V2_IMAGE).deploy_token(required): token ofoumta-ci(oumta_ci_token), write access to oumta-deployregistry_username,registry_password: read access to the registry for the digest (oumta-ciwith the same token)envs: fixed environments instead of the tag rule, e.g.dev beta(oumta-keyklo)tag: defaultCI_COMMIT_TAGregistry: defaultgit.uesome.deimage: default<registry>/<CI_REPO>deploy_user: defaultoumta-cideploy_repo: defaulthttps://git.uesome.de/tanztee/oumta-deploy.git
Example:
when:
event: tag
ref: refs/tags/v*
steps:
- name: build
image: woodpeckerci/plugin-docker-buildx:6
settings:
registry: git.uesome.de
repo: git.uesome.de/tanztee/oumta-auth
tags: ${CI_COMMIT_TAG}
username: oumta-ci
password:
from_secret: oumta_ci_token
- name: deploy
image: git.uesome.de/actions/ci-cd/deploy:v1.0.0
settings:
var: AUTH_IMAGE
registry_username: oumta-ci
registry_password:
from_secret: oumta_ci_token
deploy_token:
from_secret: oumta_ci_token
bump
Sets the version for the pushed branch in package.json, commits it as update version: vX [skip ci], tags it and pushes branch and tag. The tag event then starts the build; [skip ci] only suppresses push and pull_request events.
main: release from the commit message (release/x.y[.z],hotfix/x.y.z), otherwise a patch bumprelease/*,hotfix/*: nextvX.Y.Z-beta.N- any other branch:
vX.Y.Z-dev.<UTC timestamp>; the release line comes fromrelease_line, the newest ancestorrelease/*branch, orpackage.json
Only the commit that triggered the pipeline is bumped; if the branch moved on, the step exits without a bump and the newer pipeline takes over.
Settings:
git_token(required): token with write access to the repo (oumta_ci_token)git_user: defaultoumta-cirelease_line: optional,<major>.<minor>[.<patch>]author_name,author_email: defaultoumta-ci,oumta-ci@noreply.git.uesome.deremote: defaultCI_REPO_CLONE_URL
Example:
when:
- event: push
branch: [develop, 'feature/**', 'release/**', 'hotfix/**']
- event: manual
steps:
- name: bump
image: git.uesome.de/actions/ci-cd/bump:v1.0.0
settings:
git_token:
from_secret: oumta_ci_token