Convert the action from a Docker container action to a JavaScript (node24) action now that CLI v5 is a native binary
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- docker, github-actions, javascript, node.js, typescript
Direzione di ricerca
Start by reading the action metadata (action.yml), Dockerfile, and entrypoint.sh to map the current inputs, outputs, and behavior. The issue proposes replacing these with a Node 24 action, CLI installation, and Octokit-based PR handling while preserving compatibility; define and implement that migration, then verify it across the listed runner platforms. The issue leaves substantial design and porting work, so it is not a small first contribution.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Is your feature request related to a problem? Please describe.
crowdin/github-action is a Docker container action (runs.using: docker, image: Dockerfile). The runner builds the image from crowdin/cli every time a job uses the action, which means:
- It only runs on Linux runners with a Docker daemon. It doesn't work on macOS or Windows runners (#160).
- On self-hosted runners in Kubernetes (Actions Runner Controller), it requires Docker-in-Docker. DinD needs privileged pods, which many organizations don't allow. ARC's Kubernetes container-hooks mode doesn't support container actions built from a Dockerfile.
- Every run pulls
crowdin/clifrom Docker Hub and installs packages from Alpine apk mirrors. This is slow, can hit Docker Hub rate limits, and is hard to allow in restricted or air-gapped networks, where npm is typically already proxied (Artifactory, Nexus, etc.). - Files written into the workspace are owned by root (#284).
Describe the solution you'd like
Crowdin CLI v5 no longer needs Java. @crowdin/cli now installs a prebuilt standalone binary through platform packages (@crowdin/cli-linux-x64, -linux-arm64, -darwin-x64, -darwin-arm64, -win32-x64, and musl variants). That removes the main reason for shipping the action as a container.
Proposal: rewrite the action as a JavaScript action (runs.using: node24) that:
- Installs the requested CLI version from npm, or downloads the release binary, caching it with
@actions/tool-cache. Ideally it would also accept an optional input for an existing CLI onPATHor a custom npm registry. - Ports
entrypoint.shto TypeScript using@actions/core,@actions/execand Octokit. This replaces the bash,curlandjqsteps for PR creation, labels, assignees and reviewers. - Keeps the existing inputs and outputs so it's a drop-in replacement, released as a new major version (e.g.
v4) sov3users aren't affected.
Benefits:
- Works on Linux, macOS, Windows, x64 and arm64 (resolves #160).
- No Docker, DinD or privileged runners needed. Works with ARC in Kubernetes mode.
- Faster startup, because there's no image build on every run.
- Runs as the runner user, so there are no root-owned files (#284).
- Dependencies come only from npm, which is easy to mirror.
Describe alternatives you've considered
- A composite action that runs
npm i -g @crowdin/cliand then the existingentrypoint.sh. This is a smaller change, but it still depends on bash,git,curl,jqandgpgbeing on the runner, and it doesn't help Windows. - Calling the CLI directly in workflow steps instead of using the action. That loses the action's PR and branch handling, which is the main value of the action.
- Publishing a prebuilt image and using
docker://. This avoids the per-run build but still requires Docker or DinD.
Additional context
Related: #160 (macOS runner support), #167 (ARM, closed as a duplicate of #160), #284 (root-owned files).
Happy to help test a pre-release on self-hosted ARC runners.
🤖 Generated by Claude Opus 5.5 (claude-opus-5.5)
- Lingua principale
- Shell
- Stelle
- 244
- Fork
- 69
- Merge medio
- 4g 23h
- PR unite (30g)
- 2
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di crowdin/github-action
-
Crowdin Action fails to detect existing pull request when using a non-main base branch and same-repo source branchForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 30/100
crowdin/github-action#287 ·
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
crowdin/github-action#251 · 14 commenti ·
-
Export settings issueApertaenhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
crowdin/github-action#247 · 1 commento · 2 reazioni ·
-
help wanted
Difficoltà 3/5 1-2 giorni Idoneità per principianti 38/100
crowdin/github-action#220 · 2 commenti ·
-
macOS Runner SupportApertaenhancement help wanted
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
crowdin/github-action#160 · 4 commenti · 1 reazione ·
Tutte le issue di crowdin/github-action
Issue simili
-
prove-test.sh fails on macOS bash 3.2 without --test-pathForse già presa @skhussain96 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
addyosmani/factory#5 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
rossoctl/automation#133 ·
I maintainer di solito rispondono entro 3 giorni
-
source:reader type:enhancement
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
stephrobert/blog-roadmap#162 ·
-
Release archives ship cvc5 without its license filesForse già presa @mbovel l’ha presa oggi. Apertabug packaging
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
wazuh/wazuh-ansible#2413 ·
I maintainer di solito rispondono entro 1 giorno