{"id":51583512,"url":"https://github.com/gay00ung/android-cicd-release-skill","last_synced_at":"2026-07-11T08:03:51.079Z","repository":{"id":360872261,"uuid":"1252075328","full_name":"gay00ung/android-cicd-release-skill","owner":"gay00ung","description":"A Codex skill for safely bumping Android versions and triggering existing CI/CD tag-based releases.","archived":false,"fork":false,"pushed_at":"2026-05-28T07:14:35.000Z","size":1473,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T09:06:17.447Z","etag":null,"topics":["android","android-release","cicd","codex","codex-skill","release-automation","semver","skill"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gay00ung.png","metadata":{"files":{"readme":"README.ko.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":"2026-05-28T06:58:58.000Z","updated_at":"2026-05-28T08:40:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gay00ung/android-cicd-release-skill","commit_stats":null,"previous_names":["gay00ung/android-cicd-release-skill"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/gay00ung/android-cicd-release-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gay00ung%2Fandroid-cicd-release-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gay00ung%2Fandroid-cicd-release-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gay00ung%2Fandroid-cicd-release-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gay00ung%2Fandroid-cicd-release-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gay00ung","download_url":"https://codeload.github.com/gay00ung/android-cicd-release-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gay00ung%2Fandroid-cicd-release-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35355115,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["android","android-release","cicd","codex","codex-skill","release-automation","semver","skill"],"created_at":"2026-07-11T08:03:50.518Z","updated_at":"2026-07-11T08:03:51.068Z","avatar_url":"https://github.com/gay00ung.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Android CI/CD Release Skill\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/gay00ung/android-cicd-release-skill/actions/workflows/test.yml\"\u003e\u003cimg alt=\"Tests\" src=\"https://github.com/gay00ung/android-cicd-release-skill/actions/workflows/test.yml/badge.svg\"\u003e\u003c/a\u003e\n  \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-yellow.svg\"\u003e\n  \u003cimg alt=\"Codex Skill\" src=\"https://img.shields.io/badge/Codex-Skill-111827.svg\"\u003e\n  \u003cimg alt=\"Android Release\" src=\"https://img.shields.io/badge/Android-Release-3DDC84.svg\"\u003e\n  \u003cimg alt=\"Python tests\" src=\"https://img.shields.io/badge/Python-tests-3776AB.svg\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./README.md\"\u003e\u003cimg alt=\"English\" src=\"https://img.shields.io/badge/lang-English-2563eb.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"./README.ko.md\"\u003e\u003cimg alt=\"한국어\" src=\"https://img.shields.io/badge/lang-%ED%95%9C%EA%B5%AD%EC%96%B4-16a34a.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/android-cicd-release-hero.png\" alt=\"Android CI/CD Release Skill 대표 이미지\" width=\"900\"\u003e\n\u003c/p\u003e\n\n기존 CI/CD 릴리스 자동화가 있는 Android 레포에서 버전 변경과 태그 기반 배포를 안전하게 준비하도록 돕는 Codex 스킬입니다.\n\n이 스킬은 또 하나의 버전 관리 플러그인이나 GitHub Action이 아닙니다. Codex가 레포를 먼저 검사하고, 기존 릴리스 관례를 읽고, `versionName`을 추론해야 할 때 사용자 확인을 받은 뒤, 레포의 CI/CD 스크립트가 태그 푸시를 배포 트리거로 사용한다는 근거가 있을 때만 커밋, 푸시, 릴리스 태그 생성을 진행하게 하는 워크플로 가드레일입니다.\n\n## 왜 만들었는가\n\nAndroid 릴리스 버전 변경은 작은 수정처럼 보이지만 실패 비용이 큽니다.\n\n- `versionCode`는 매 릴리스마다 계속 증가해야 합니다.\n- `versionName`은 사용자에게 보이는 값이고 팀별 관례를 따르는 경우가 많습니다.\n- 태그 푸시는 실제 배포 파이프라인을 실행할 수 있습니다.\n- 레포마다 릴리스 규칙을 CI/CD에 표현하는 방식이 조금씩 다릅니다.\n\n기존 도구는 보통 한 계층만 자동화합니다. Gradle 파일을 수정하는 GitHub Action, Git 태그에서 버전을 계산하는 Gradle 플러그인, Fastlane lane 같은 방식입니다. 이 스킬은 그런 도구들이 이미 있는 레포에서, Codex가 추측하지 않고 현재 CI/CD와 Git 히스토리를 따라가야 할 때 유용합니다.\n\n## 차별점\n\n- CI/CD 설정이 없는 레포에서는 실행하지 않습니다.\n- 파일을 수정하기 전에 dry-run 점검 리포트부터 확인합니다.\n- `versionName`을 추론해야 하면 반드시 사용자 확인을 받습니다.\n- Git 히스토리에서 기존 릴리스 커밋과 태그 관례를 맞춥니다.\n- CI/CD 파일에서 태그 기반 릴리스 경로가 확인될 때만 태그를 푸시합니다.\n- GitHub Actions, GitLab CI, Jenkins, CircleCI, Buildkite, Drone, Bitbucket Pipelines, Azure Pipelines, Codemagic 등을 특정 플랫폼 강제가 아니라 레포 안의 근거 기반으로 다룹니다.\n\n## 설치\n\n레포를 클론한 뒤 설치 스크립트를 실행합니다.\n\n```bash\ngit clone https://github.com/gay00ung/android-cicd-release-skill.git\ncd android-cicd-release-skill\n./scripts/install.sh\n```\n\n수동 설치:\n\n```bash\nmkdir -p \"${CODEX_HOME:-$HOME/.codex}/skills\"\ncp -R skill/android-cicd-release \"${CODEX_HOME:-$HOME/.codex}/skills/\"\n```\n\n새 Codex 세션을 시작한 뒤 이렇게 호출합니다.\n\n```text\nUse $android-cicd-release to release this Android app.\n```\n\n목표 버전을 직접 지정할 수도 있습니다.\n\n```text\nUse $android-cicd-release to bump this Android app to 2.0.0 and release it.\n```\n\n## 지원 범위\n\n이 스킬은 이미 CI/CD 파일에 릴리스 동작이 표현된 Android 레포를 대상으로 합니다.\n\n지원하는 버전 위치:\n\n- `build.gradle`\n- `build.gradle.kts`\n- `gradle.properties`\n\n지원하는 CI/CD 근거:\n\n- GitHub Actions\n- GitLab CI\n- Jenkins\n- CircleCI\n- Buildkite\n- Drone CI\n- Bitbucket Pipelines\n- Azure Pipelines\n- Codemagic\n\n사용자 확인이 필요한 경우:\n\n- Android application 모듈이 여러 개인 경우\n- 커스텀 Gradle 플러그인이 버전 값을 생성하는 경우\n- version catalog 또는 convention plugin 기반 버전 관리\n- `1.0`, `1.0.0-beta`, `2026.05`처럼 semver `X.Y.Z`가 아닌 `versionName`\n- 수동 실행, 예약 실행, 또는 태그 기반 여부가 명확하지 않은 릴리스 트리거\n\n## 안전 모델\n\n이 스킬은 아래 조건이 충족되지 않으면 Codex가 편집 전에 멈추도록 지시합니다.\n\n- 현재 디렉터리가 Git 레포여야 합니다.\n- CI/CD 설정 파일이 있어야 합니다.\n- 워크트리가 깨끗해야 합니다.\n- `main`을 fetch하고 fast-forward 할 수 있어야 합니다.\n- Android 버전 선언이 모호하지 않아야 합니다.\n- CI/CD의 릴리스 트리거가 이해되어야 합니다.\n\n사용자가 목표 `versionName`을 지정하지 않으면 Codex는 먼저 확인해야 합니다.\n\n```text\n현재 versionName을 1.0.0에서 1.0.1로 올려도 될까요?\n```\n\n## 레포 수동 점검\n\n번들된 스크립트는 파일을 수정하지 않습니다. 릴리스 준비 상태만 요약합니다.\n\n```bash\nskill/android-cicd-release/scripts/inspect_android_cicd_release.py --require-ci /path/to/android-repo\n```\n\nJSON 출력:\n\n```bash\nskill/android-cicd-release/scripts/inspect_android_cicd_release.py --json /path/to/android-repo\n```\n\n## 리서치 노트\n\n유사 도구 조사와 포지셔닝은 [docs/research.md](docs/research.md)에 정리되어 있습니다.\n\n요약:\n\n- Android 공식 문서는 `versionCode`가 단조 증가해야 하며, `versionName`은 사용자에게 표시되는 버전 문자열이라고 설명합니다.\n- GitHub Actions와 GitLab CI는 모두 태그 기반 워크플로/파이프라인을 지원합니다.\n- 기존 Android 버전 bump Action이나 Gradle 플러그인은 유용하지만, 보통 프로젝트에 통합해야 하며 보수적으로 레포 히스토리를 읽는 릴리스 오퍼레이터 역할을 하지는 않습니다.\n\n## 상표 고지\n\n이 프로젝트는 독립 프로젝트이며 Google, Android, GitHub, GitLab, Jenkins 또는 여기에 언급된 CI/CD 벤더와 제휴, 보증, 후원 관계가 없습니다. 제품명과 로고는 호환 워크플로를 설명하기 위한 목적으로만 사용합니다.\n\n## 테스트\n\n서드파티 Python 패키지는 필요하지 않습니다.\n\n```bash\npython3 -m unittest discover -s tests\n```\n\n## 레포 구조\n\n```text\n.\n├── assets/                       # README 이미지\n├── scripts/                      # 설치 헬퍼\n├── skill/android-cicd-release/   # 설치 가능한 Codex 스킬\n├── tests/                        # 스크립트 회귀 테스트와 fixture\n├── docs/research.md              # 유사 도구 조사와 포지셔닝\n├── README.md\n└── README.ko.md\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgay00ung%2Fandroid-cicd-release-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgay00ung%2Fandroid-cicd-release-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgay00ung%2Fandroid-cicd-release-skill/lists"}