{"id":44582475,"url":"https://github.com/onecx/ci-common","last_synced_at":"2026-02-14T05:55:55.275Z","repository":{"id":147130283,"uuid":"521650691","full_name":"onecx/ci-common","owner":"onecx","description":"CI common pipelines","archived":false,"fork":false,"pushed_at":"2025-11-05T15:30:27.000Z","size":177,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"v1","last_synced_at":"2025-11-05T17:17:10.565Z","etag":null,"topics":["devops"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onecx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-08-05T13:35:00.000Z","updated_at":"2025-11-05T15:30:31.000Z","dependencies_parsed_at":"2024-01-25T11:08:58.317Z","dependency_job_id":"c8a752f0-d3dc-462b-82ca-bf9f82f04a4f","html_url":"https://github.com/onecx/ci-common","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/onecx/ci-common","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onecx%2Fci-common","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onecx%2Fci-common/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onecx%2Fci-common/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onecx%2Fci-common/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onecx","download_url":"https://codeload.github.com/onecx/ci-common/tar.gz/refs/heads/v1","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onecx%2Fci-common/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29438641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T05:24:35.651Z","status":"ssl_error","status_checked_at":"2026-02-14T05:24:34.830Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops"],"created_at":"2026-02-14T05:55:54.658Z","updated_at":"2026-02-14T05:55:55.267Z","avatar_url":"https://github.com/onecx.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Common pipelines\n\nCommon pipelines\n\n### Helm build\n\nSource: `helm-build.yml`\n\nBuild and publish helm package to repository `oci://ghcr.io/${{ github.repository_owner }}`.\n\nFor pure helm project create a file `.github/workflows/build.yml`\n\n```yaml\nname: build\non:\n  push:\n    branches:\n      - 'main'\n      - 'fix/[0-9]+.[0-9]+.x'\n  pull_request:\n\njobs:\n  java:\n    uses: onecx/ci-common/.github/workflows/helm-build.yml@v1\n    secrets: inherit\n    with:      \n      artifact: ''    \n      helmdir: '.'\n```\n\nTo integration in the application pipe use this include and set up these variables:\n\n```yaml\n  helm:\n    uses: onecx/ci-common/.github/workflows/helm.yml@main\n    needs: docker\n    secrets: inherit\n    with:\n      helmdir: 'target/helm'\n      samoHelmSourceDir: src/main/helm\n      samoHelmSourceCopy: true\n```\n\n### Helm release\n\nSource: `helm-release.yml`\n\nRelease helm package from repository `oci://ghcr.io/${{ github.repository_owner }}`.\n\nFor pure helm project create a file `.github/workflows/build-release.yml`.\n\n```yaml\nname: build-release\non:\n  push:\n    tags:\n      - '**'\njobs:\n  java:\n    uses: onecx/ci-common/.github/workflows/helm-release.yml@v1\n    secrets: inherit\n```\n\nTo integration in the application pipe use this include and set up these variables:\n\n```yaml\n  helm:\n    uses: onecx/ci-common/.github/workflows/helm-release.yml@main\n    needs: docker\n    secrets: inherit\n```\n\n### Docker build\n\nSource: `docker-build.yml`\n\nBuild and publish docker image to `ghcr.io/${{ github.repository_owner }}`\n\nTo integration in the application pipe use this include and set up these variables:\n\n```yaml\n  docker:\n    uses: onecx/ci-common/.github/workflows/docker-build.yml@v1\n    needs: java\n    secrets: inherit\n    with:\n      samoDockerFile: src/main/docker/Dockerfile\n      artifact: package\n```\n\n### Docker release\n\nSource: `docker-release.yml`\n\nRelease docker image from `ghcr.io/${{ github.repository_owner }}`\n\nTo integration in the application pipe use this include and set up these variables:\n\n```yaml\n  docker:\n    uses: onecx/ci-common/.github/workflows/docker-release.yml@main\n    needs: docker\n    secrets: inherit\n```\n\n### Create release\n\n\u003e This is manual action.\n\nCreate `.github/workflows/create-release.yml` file for create a release actions.\n\n```yaml\nname: create-release\non:\n  workflow_dispatch:\njobs:\n  release:\n    uses: onecx/ci-java-lib/.github/workflows/create-release.yml@v1\n    secrets: inherit\n```\n\nTo create a release open the project page `Actions` and select `create-release` action from the list.\n\n![Select action](docs/actions-create-release-1.png)\n\nSelect a branch to create a new release for and run the workflow.\n\n![Select branch](docs/actions-create-release-2.png)\n\n### Create fix branch\n\n\u003e This is manual action.\n\nCreate `.github/workflows/create-fix-branch.yml` file for create fix branch actions.\n\n```yaml\nname: create-fix-branch\non:\n  workflow_dispatch:\njobs:\n  fix:\n    uses: onecx/ci-java-lib/.github/workflows/create-fix-branch.yml@v1\n    secrets: inherit\n```\n\nTo create a fix branch open the project page `Actions` and select `create-fix-branch` action from the list.\n\n![Select action](docs/actions-create-fix-branch-1.png)\n\nSelect a tag `x.x.0` to create a new fix branch for and run the workflow.\n\n![Select action](docs/actions-create-fix-branch-2.png)\n\n\n### Generate changelog\n\nYour can include changelog generator to your pipeline.Create a file `.github/changelog.yaml`\n\n* secions - define custom section by ticket labels\n* template - custom template to generate secions\n\nFor example:\n\n`````yaml\nsections:\n- title: Major changes\n  labels:\n    - \"release/super-feature\"\n- title: Complete changelog\n  labels:\n    - \"bug\"\n    - \"enhancement\"\n    - \"dependencies\"\ntemplate: |\n  My project description\n\n  Here are the sections generated:\n\n  {{ range $section := .Sections }}{{ if $section.Items }}### {{ $section.GetTitle }}{{ range $item := $section.Items }}\n  * [#{{ $item.GetID }}]({{ $item.GetURL }}) - {{ $item.GetTitle }}{{ end }}{{ end }}\n  {{ end }}\n`````\n\u003e More documentation in the [changelog](https://github.com/lorislab/changelog) page.\n\nInclude to the project release pipeline (actions for `tag`):\n\n```yaml\n  changelog:\n    uses: onecx/ci-common/.github/workflows/generate-changelog.yml@v1\n    secrets: inherit\n```\n\n## Samo\n\nSamo tool is use to build `docker`, `helm` or `release` of the application.\n\n### Samo common configuration\n\n```shell\n  # release tag message\n  SAMO_RELEASE_MESSAGE_TEMPLATE: '{{ .Release }}'\n  # release tag name\n  SAMO_RELEASE_TAG_TEMPLATE: '{{ .Release }}'\n  # first version for empty repository\n  SAMO_FIRST_VERION: '0.0.0'\n  # template for version\n  SAMO_VERSION_TEMPLATE: '{{ .Version }}-rc.{{ .Count }}'\n  # use conventional commits for version calculation\n  SAMO_CONVENTIONAL_COMMITS: 'true'\n  # fix branch pattern\n  SAMO_BRANCH_TEMPLATE: 'fix/{{ .Major }}.{{ .Minor }}.x'\n  # skip samo labels for docker images and helm chart (created,hash,version)\n  SAMO_SKIP_SAMO_LABELS: 'false'\n  # skip push action (release, docker release, helm release, ...)\n  SAMO_SKIP_PUSH: 'false'\n  # custom labels for docker and helm images\n  # SAMO_LABELS_TEMPLATE_LIST: ''\n\n  # Samo docker configuration\n\n  # path to the Dockerfile in the project\n  SAMO_DOCKER_FILE: src/main/docker/Dockerfile\n  # docker registry\n  SAMO_DOCKER_REGISTRY: ghcr.io\n  # docker registry group\n  SAMO_DOCKER_GROUP: '${{ github.repository_owner }}/'\n  # docker tag template\n  SAMO_DOCKER_TAG_TEMPLATE_LIST: '{{ .Version }},{{ .Branch }}'  \n  # docker release registry\n  SAMO_DOCKER_RELEASE_REGISTRY: ghcr.io\n  # docker release group\n  SAMO_DOCKER_RELEASE_GROUP: '${{ github.repository_owner }}/'\n  # skip opencontainers labels\n  SAMO_DOCKER_SKIP_OPENCONTAINERS_LABELS: 'false'\n  # docker build context\n  SAMO_DOCKER_CONTEXT: '.'\n  # skip pull new images before build\n  SAMO_DOCKER_SKIP_PULL: 'false'\n  # skip push docker image to remote registry after build\n  SAMO_DOCKER_BUILD_PUSH: 'false'\n  # skip build dev docker image \u003cproject_name\u003e:latest. This is use in the integration test\n  SAMO_DOCKER_SKIP_DEV: 'false'\n  # skip remote intermediate images after build\n  SAMO_DOCKER_REMOVE_INTERMEDIATE_IMG_SKIP: 'false'\n\n  # Samo helm configuration\n\n  # helm chart source directory will be use only if SAMO_HELM_SOURCE_COPY=true\n  SAMO_HELM_SOURCE_DIR: src/main/helm\n  # copy and filter helm chart from source diretory to target directory SAMO_HELM_DIR\n  SAMO_HELM_SOURCE_COPY: 'false'\n  # helm push URL\n  SAMO_HELM_PUSH_URL: ${HARBOR_HELM_TKIT_API}\n  # helm repository name (alias)\n  SAMO_HELM_REPO: 1000kit\n  # helm repository URL\n  SAMO_HELM_REPO_URL: ${HARBOR_HELM_TKIT}\n  # helm repository username\n  SAMO_HELM_REPO_USERNAME: ${HARBOR_USERNAME}\n  # helm repository password\n  SAMO_HELM_REPO_PASSWORD: ${HARBOR_PASSWORD}\n  # helm repository target directory (after filter)\n  SAMO_HELM_DIR: target/helm\n  # update values in Chart.yaml file\n  SAMO_HELM_CHART_TEMPLATE_LIST: 'version={{ .Version }},appVersion={{ .Version }},name={{ .Name }}'\n  # update values in the values.yaml file\n  SAMO_HELM_VALUES_TEMPLATE_LIST: \"app.image.registry=${SAMO_DOCKER_REGISTRY},app.image.tag={{ .Version }},app.image.repository=${{ github.repository_owner }}/{{ .Name }}\"\n  # type of the push, harbor = form upload\n  SAMO_HELM_PUSH_TYPE: 'harbor'\n  # update values in values.yaml file for the release\n  SAMO_HELM_VALUES_RELEASE_TEMPLATE_LIST: \"app.image.registry=${SAMO_DOCKER_RELEASE_REGISTRY},app.image.tag={{ .Release }},app.image.repository=${{ github.repository_owner }}/{{ .Name }}\"\n  # update values in Chart.yaml file for the release\n  SAMO_HELM_CHART_RELEASE_TEMPLATE_LIST: 'version={{ .Release }},appVersion={{ .Release }},name={{ .Name }}'\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonecx%2Fci-common","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonecx%2Fci-common","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonecx%2Fci-common/lists"}