DoDiODev opened a new issue, #9209:
URL: https://github.com/apache/devlake/issues/9209

   ## What and why to refactor
   
   Five CI jobs run inside `mericodev/lake-builder:latest`:
   `test.yml` (unit-test), `test-e2e.yml` (mysql and postgres),
   `golangci-lint.yml` and `migration-script-lint.yml`.
   
   That image is out of date and, as far as I can tell, can no longer be
   refreshed through the intended path:
   
   | Fact | Source |
   |---|---|
   | `mericodev/lake-builder:latest` is `v0.0.15`, pushed on **2023-06-30**, 
amd64 only | Docker Hub API |
   | It was built from the Dockerfile of that time: `debian:bullseye`, 
`golang:1.20.4`, libgit2 1.3.2, `python:3.9-slim-bullseye` | `git show 
f29d31451:devops/docker/lake-builder/Dockerfile` |
   | The only publishing path is `build-builder.yml`, triggered by a 
`builder-*` tag. The newest such tag is `builder-v0.0.7` (2022), so 
`v0.0.8`–`v0.0.15` were pushed outside this workflow | `git ls-remote --tags 
origin 'builder-*'` |
   | `build-builder.yml` logs in with `DOCKER_REGISTRY_USERNAME` / 
`DOCKER_REGISTRY_PASSWORD` and pushes to the company namespace `mericodev`; no 
run of it is visible in the Actions history | workflow file, Actions API |
   
   The CI copes by re-installing the toolchain on every run
   (`install-libgit2.sh`, `install-go.sh`, `install-mockery.sh`), so the jobs 
pass,
   but:
   
   - each job rebuilds what the image should already contain;
   - changes to `devops/docker/lake-builder/Dockerfile` (most recently #9203,
     and the Go/mockery bump in #9208) are never exercised by the upstream CI;
   - the base layers (bullseye, Python 3.9) are past or close to end of life.
   
   Simply pushing `builder-v0.0.16` may not help: it depends on credentials for 
a
   non-ASF namespace whose validity I cannot check from outside.
   
   ## Describe the solution you'd like
   
   The repository already has working Docker Hub credentials:
   `build.yml` logs in with `DOCKERHUB_USER` / `DOCKERHUB_TOKEN` and pushes to
   `${{ secrets.DOCKERHUB_OWNER }}/devlake` on every push to `main` (last
   successful runs on 2026-10-11). It already publishes auxiliary, non-release
   tags there as well (`devlake:amd64-builder`, `:base`, `:build-cache-*`).
   
   Proposal, in two small PRs:
   
   1. **Publish** — change `build-builder.yml` to
      - use the same secrets as `build.yml`;
      - run on `push` to `main` when `devops/docker/lake-builder/**` (or the
        workflow itself) changes, plus `workflow_dispatch` — no manual tag 
needed;
      - push to the ASF namespace, either as a tag in the existing repository
        (e.g. `apache/devlake:lake-builder-<short-sha>`, following the
        `amd64-builder` precedent) or to a new `apache/devlake-builder`
        repository, if you prefer that and it can be created.
   2. **Consume** — once the first image exists, point the five `container:`
      lines to the pinned new tag instead of `mericodev/lake-builder:latest`.
   
   This also completes the idea of #5041 ("push the lake builder to … apache
   dockerhub"), which was closed by the stale bot without a change.
   
   I have validated the current Dockerfile on my fork: its CI builds the builder
   image from `devops/docker/lake-builder/Dockerfile` and runs unit, lint and 
e2e
   (MySQL, PostgreSQL) inside it — all green
   ([run](https://github.com/DoDiODev/devlake/actions/runs/38234281026), with 
the
   changes from #9208).
   
   **Questions for the maintainers:**
   
   - Is moving the builder to the project's Docker Hub credentials acceptable,
     and which target do you prefer: a tag in `apache/devlake` or a separate
     `apache/devlake-builder`?
   - Alternatively, if the `mericodev` credentials are still valid and you 
prefer
     the existing path: could someone push a `builder-v0.0.16` tag on `main`?
   
   I'm happy to open the PRs for option 1 once the direction is clear.
   
   ## Related issues
   
   - #5041 — push the lake builder to the Apache Docker Hub (closed as stale)
   - #4805 — base images and automated image builds (closed as stale)
   - #9203 — made the lake-builder image rebuildable again (bookworm, Go from 
go.dev)
   - #9208 — Go 1.26.9 / mockery 3.8.1, including the lake-builder Dockerfile
   
   ## Additional context
   
   The `latest` policy discussed in #4805 (only update `latest` for formal
   releases) is not affected: the proposal uses explicit, pinned tags for the CI
   image and does not touch the release images.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to