Fix/ci kontin no internet vaatimus (#34)
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 22s
CI Main / Check existing artifact (push) Successful in 18s
acc-tests Cucumber test report
unit-tests Bats test report
CI Main / Cucumber tests (push) Successful in 1m25s
CI Main / Bats tests (push) Successful in 1m26s
ci-docker-build-push Docker build & push 0.2.19 OK
CI Main / Build & Push Docker (push) Successful in 47s
CI Main / Report Summary (push) Successful in 6s
CI Main / Move provider version tag (push) Successful in 16s
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 22s
CI Main / Check existing artifact (push) Successful in 18s
acc-tests Cucumber test report
unit-tests Bats test report
CI Main / Cucumber tests (push) Successful in 1m25s
CI Main / Bats tests (push) Successful in 1m26s
ci-docker-build-push Docker build & push 0.2.19 OK
CI Main / Build & Push Docker (push) Successful in 47s
CI Main / Report Summary (push) Successful in 6s
CI Main / Move provider version tag (push) Successful in 16s
Co-authored-by: moilanik <niko.moilanen@tietoevry.com> Reviewed-on: #34
This commit was merged in pull request #34.
This commit is contained in:
@@ -82,7 +82,36 @@ koko stepin ensimmäisellä failaavalla komennolla, ja loput jäävät ajamatta.
|
||||
|
||||
CI-kontin build-workflow'n template: `skills/ci-container-build/SKILL.md`.
|
||||
|
||||
### 4.1 CI-kontin ajaminen jobissa
|
||||
### 4.1 Offline Container -vaatimus (DoD)
|
||||
|
||||
CI-kontin (ja kaikkien pipeline-konttien) on oltava täysin itseriittoisia:
|
||||
|
||||
> Kontti ei lataa mitään pipeline-vaiheessa (`workflow run` -stepit) eikä
|
||||
> kontin runtime-prosessissa (`container:` / `docker run`). Kaikki
|
||||
> riippuvuudet pre-cachataan `docker build` -vaiheessa.
|
||||
> Ainoa sallittu lataushetki on `docker build`.
|
||||
|
||||
**Esimerkkejä rikkomuksista:**
|
||||
- `apk add`, `apt-get install`, `npm install`, `go mod download`, `pip install`
|
||||
pipeline-stepissä
|
||||
- `curl <url> | tar xz` runtime-vaiheessa
|
||||
- Node.js-konttikuva ilman nodea (joudutaan asentamaan lennossa)
|
||||
|
||||
### 4.2 Kielikohtainen pre-cache
|
||||
|
||||
Kun kontissa testataan kielikohtaista koodia, kaikki riippuvuudet on
|
||||
pre-cachattava Dockerfilessä, ei pipeline-stepissä:
|
||||
|
||||
| Kieli | Pre-cache Dockerfilessä |
|
||||
|---|---|
|
||||
| Go | `COPY go.mod go.sum ./` → `RUN go mod download` |
|
||||
| Java/Maven | `COPY pom.xml ./` → `RUN mvn dependency:go-offline` |
|
||||
| Node | `COPY package.json package-lock.json ./` → `RUN npm ci --omit=dev` |
|
||||
| Python | `COPY requirements.txt ./` → `RUN pip install -r requirements.txt` |
|
||||
|
||||
Katso tarkat Dockerfile-esimerkit `REFERENCE.md`:stä.
|
||||
|
||||
### 4.3 CI-kontin ajaminen jobissa
|
||||
|
||||
Ainoa sallittu tapa on `container:`-direktiivi. `docker run` komennolla kontin
|
||||
käynnistäminen stepin sisällä on anti-pattern.
|
||||
@@ -91,7 +120,8 @@ Katso CI-kontin template `REFERENCE.md`:stä.
|
||||
|
||||
**Huomio `actions/checkout@v4`:stä:** `container:`-direktiivillä kaikki stepit
|
||||
ajetaan kontin *sisällä* — myös `actions/checkout@v4`. Se on JavaScript-action
|
||||
joka vaatii sekä `nodejs` että `git`. Varmista että CI-kontin Dockerfilessä on molemmat.
|
||||
joka vaatii sekä `nodejs` että `git`. Varmista että CI-kontin Dockerfilessä on
|
||||
molemmat — muuten checkout ei toimi ja pipeline failaa.
|
||||
|
||||
## 5. Raporttitasot
|
||||
|
||||
@@ -243,15 +273,14 @@ helm-build-push:
|
||||
# chart_path: '.' # oletus, vaihda jos Chart.yaml on alihakemistossa
|
||||
```
|
||||
|
||||
**Node.js-kompromissi:** `actions/checkout@v4` on JavaScript-action.
|
||||
Kontissa `alpine/helm` ei ole node.js:ää, joten se asennetaan lennossa
|
||||
`apk add --no-cache nodejs` ennen checkouttia.
|
||||
**Vanhentunut käytäntö:** Nykyinen `helm-build-push.yml` asentaa node.js:n
|
||||
lennossa `apk add --no-cache nodejs` ennen checkouttia — tämä rikkoo
|
||||
Offline Container -vaatimusta (4.1).
|
||||
|
||||
- Vaatii internet-yhteyden
|
||||
- Ei toimi air gap -ympäristössä
|
||||
- Korvaa tarvittaessa custom-kontilla (helm + nodejs):
|
||||
rakenna `ci-container-build`-skillillä ja päivitä workflow'n
|
||||
`container: image:` osoittamaan omaan konttiin
|
||||
**Korjaustoimenpide:** Rakenna custom CI-kontti `ci-container-build`-skillillä
|
||||
jossa on helm + nodejs + git (katso pre-cache-esimerkit `REFERENCE.md`:stä),
|
||||
päivitä workflow'n `container: image:` osoittamaan omaan konttiin, ja poista
|
||||
runtime-apk.
|
||||
|
||||
**Yksittäisten Helm-UI-linkkien raportointi:** `HELM_UI_URL` on
|
||||
tarkoitettu yleiselle registry UI:lle — provider muodostaa linkin
|
||||
|
||||
Reference in New Issue
Block a user