skill päivitetty (#21)
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 17s
CI Main / Check existing artifact (push) Successful in 13s
unit-tests Link to Bats reports
CI Main / Bats tests (push) Successful in 1m35s
acc-tests Link to Cucumber reports
CI Main / Cucumber tests (push) Successful in 54s
ci-docker-build-push Docker build & push 0.2.8 OK
CI Main / Build & Push Docker (push) Successful in 40s
CI Main / Report Summary (push) Successful in 6s
CI Main / Move provider version tag (push) Successful in 13s
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 17s
CI Main / Check existing artifact (push) Successful in 13s
unit-tests Link to Bats reports
CI Main / Bats tests (push) Successful in 1m35s
acc-tests Link to Cucumber reports
CI Main / Cucumber tests (push) Successful in 54s
ci-docker-build-push Docker build & push 0.2.8 OK
CI Main / Build & Push Docker (push) Successful in 40s
CI Main / Report Summary (push) Successful in 6s
CI Main / Move provider version tag (push) Successful in 13s
Co-authored-by: moilanik <niko.moilanen@tietoevry.com> Reviewed-on: #21
This commit was merged in pull request #21.
This commit is contained in:
@@ -129,7 +129,7 @@ Dockerfile yhdistää tarvitut työkalut yhteen konttiin. Molemmat tavat kelpaav
|
|||||||
# Tapa A: COPY --from toisesta imagesta
|
# Tapa A: COPY --from toisesta imagesta
|
||||||
FROM __BASE_IMAGE__:__VERSION__
|
FROM __BASE_IMAGE__:__VERSION__
|
||||||
COPY --from=__SOURCE_IMAGE__:__VERSION__ /path/to/binary /usr/local/bin/
|
COPY --from=__SOURCE_IMAGE__:__VERSION__ /path/to/binary /usr/local/bin/
|
||||||
RUN apk add --no-cache __PAKETIT__
|
RUN apk add --no-cache __PAKETIT__ # Ei koskaan git:iä — kloonaus kuuluu pipelinelle
|
||||||
|
|
||||||
# Tapa B: curl-lataus (normaali Dockerfilessa)
|
# Tapa B: curl-lataus (normaali Dockerfilessa)
|
||||||
FROM __BASE_IMAGE__:__VERSION__
|
FROM __BASE_IMAGE__:__VERSION__
|
||||||
@@ -146,3 +146,4 @@ tulee suoraan GitHub Releasesista tai vastaavasta.
|
|||||||
- Älä lisää `workflow_call`-triggariä — CI-konttia ei koskaan buildata automaattisesti
|
- Älä lisää `workflow_call`-triggariä — CI-konttia ei koskaan buildata automaattisesti
|
||||||
- Älä poista `<komponentti>.`-prefiksiä olemassaolevista tiedostoista — ne kuuluvat monorepo-nimeämiskonventioon
|
- Älä poista `<komponentti>.`-prefiksiä olemassaolevista tiedostoista — ne kuuluvat monorepo-nimeämiskonventioon
|
||||||
- Älä sisällytä CI-konttiin mitään sovelluskoodia — vain työkalut
|
- Älä sisällytä CI-konttiin mitään sovelluskoodia — vain työkalut
|
||||||
|
- Älä koskaan asenna `git`:iä CI-konttiin — repon kloonaus ja checkout ovat Gitea Actionsin natiiveja operaatioita, eivät kontin vastuulla. Git paisuttaa konttia turhaan ja luo harhan että kontti hallitsee repoa
|
||||||
|
|||||||
@@ -46,14 +46,14 @@ jobs:
|
|||||||
|
|
||||||
<test-1>:
|
<test-1>:
|
||||||
needs: [load-config]
|
needs: [load-config]
|
||||||
uses: ./.gitea/workflows/<component>.<test-1>.yml@main
|
uses: ./.gitea/workflows/<component>.<test-1>.yml
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
with:
|
with:
|
||||||
env_json: ${{ needs.load-config.outputs.env_json }}
|
env_json: ${{ needs.load-config.outputs.env_json }}
|
||||||
|
|
||||||
<test-2>:
|
<test-2>:
|
||||||
needs: [load-config]
|
needs: [load-config]
|
||||||
uses: ./.gitea/workflows/<component>.<test-2>.yml@main
|
uses: ./.gitea/workflows/<component>.<test-2>.yml
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
with:
|
with:
|
||||||
env_json: ${{ needs.load-config.outputs.env_json }}
|
env_json: ${{ needs.load-config.outputs.env_json }}
|
||||||
@@ -118,6 +118,80 @@ shellin käyttäytyminen vaihtelee.
|
|||||||
CI-kontin build-workflow'n template: [skills/ci-container-build/SKILL.md](../ci-container-build/SKILL.md) — sisältää
|
CI-kontin build-workflow'n template: [skills/ci-container-build/SKILL.md](../ci-container-build/SKILL.md) — sisältää
|
||||||
valmiin `ci-container-build-<kontti>.yml`-pohjan jossa `workflow_dispatch`-tuki manuaaliajoon.
|
valmiin `ci-container-build-<kontti>.yml`-pohjan jossa `workflow_dispatch`-tuki manuaaliajoon.
|
||||||
|
|
||||||
|
### 4.1 CI-kontin ajaminen jobissa
|
||||||
|
|
||||||
|
CI-kontin voi ajaa joko `container:`-direktiivillä (kaikki stepit kontissa)
|
||||||
|
tai `docker run --rm`:llä stepin sisällä (checkout natiivisti). Molemmat tavat
|
||||||
|
toimivat.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Tapa A: container:-direktiivi
|
||||||
|
jobs:
|
||||||
|
<työkalu>:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ${{ inputs.<image-name> }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: <owner>/gitea-ci-library
|
||||||
|
path: .ci
|
||||||
|
- name: Run <työkalu>
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir -p "reports/${GITHUB_SHA:0:8}/<suite>"
|
||||||
|
<komento> > "reports/${GITHUB_SHA:0:8}/<suite>/results.txt" 2>&1
|
||||||
|
EXIT=$?
|
||||||
|
echo "EXIT=${EXIT}" >> "${GITHUB_ENV}"
|
||||||
|
exit ${EXIT}
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Tapa B: docker run --rm stepin sisällä (kuten example-bats-tests.yml)
|
||||||
|
jobs:
|
||||||
|
<työkalu>:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: <owner>/gitea-ci-library
|
||||||
|
path: .ci
|
||||||
|
|
||||||
|
- name: Run <työkalu>
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
docker volume create ws-<suite>
|
||||||
|
tar c . | docker run --rm -i -v ws-<suite>:/data alpine tar x -C /data
|
||||||
|
mkdir -p "reports/${GITHUB_SHA:0:8}/<suite>"
|
||||||
|
set +e
|
||||||
|
docker run --rm \
|
||||||
|
-v ws-<suite>:/data \
|
||||||
|
--entrypoint bash ${{ inputs.<image-name> }} \
|
||||||
|
-c 'cd /data && <komento>' \
|
||||||
|
> "reports/${GITHUB_SHA:0:8}/<suite>/results.txt" 2>&1
|
||||||
|
EXIT=$?
|
||||||
|
docker volume rm ws-<suite> > /dev/null 2>&1
|
||||||
|
echo "EXIT=${EXIT}" >> "${GITHUB_ENV}"
|
||||||
|
exit ${EXIT}
|
||||||
|
|
||||||
|
- name: Publish <suite> reports
|
||||||
|
if: always()
|
||||||
|
run: bash .ci/scripts/publish-git-pages.sh <suite>
|
||||||
|
|
||||||
|
- name: Report status
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
if [ "${EXIT}" = "0" ]; then
|
||||||
|
bash .ci/scripts/report-status.sh success "<kuvaus>" <context> <suite>
|
||||||
|
else
|
||||||
|
bash .ci/scripts/report-status.sh failure "<kuvaus>" <context> <suite>
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
**Malli:** `example-bats-tests.yml` (tapa B).
|
||||||
|
|
||||||
## 5. Raporttitasot
|
## 5. Raporttitasot
|
||||||
|
|
||||||
Testi tuottaa raportin `reports/${GITHUB_SHA:0:8}/<suite>/`-hakemistoon. `publish-git-pages.sh` julkaisee sen,
|
Testi tuottaa raportin `reports/${GITHUB_SHA:0:8}/<suite>/`-hakemistoon. `publish-git-pages.sh` julkaisee sen,
|
||||||
@@ -310,7 +384,7 @@ jobs:
|
|||||||
<testit>:
|
<testit>:
|
||||||
needs: [load-config, check-version]
|
needs: [load-config, check-version]
|
||||||
if: needs.check-version.outputs.artifact_exists != 'true'
|
if: needs.check-version.outputs.artifact_exists != 'true'
|
||||||
uses: ./.gitea/workflows/<komponentti>.<testi>.yml@main
|
uses: ./.gitea/workflows/<komponentti>.<testi>.yml
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
with:
|
with:
|
||||||
env_json: ${{ needs.load-config.outputs.env_json }}
|
env_json: ${{ needs.load-config.outputs.env_json }}
|
||||||
@@ -406,6 +480,19 @@ Ei kahta eri komentoa samassa workflow'ssa.
|
|||||||
Kaikki provider-viittaukset käyttävät `@v1`-tagia. `@main` on vain providerin oman repon
|
Kaikki provider-viittaukset käyttävät `@v1`-tagia. `@main` on vain providerin oman repon
|
||||||
sisäiseen dogfood-käyttöön. Breaking changet kielletty — `v1`-rajapinta on pysyvä.
|
sisäiseen dogfood-käyttöön. Breaking changet kielletty — `v1`-rajapinta on pysyvä.
|
||||||
|
|
||||||
|
### Paikalliset `uses:` eivät käytä refiä
|
||||||
|
|
||||||
|
Gitea act runner v1.0.8 muodostaa paikallisista `uses: ./.gitea/workflows/*.yml@main`-viittauksista
|
||||||
|
epävalidin git-refin `main@<sha>`, joka aiheuttaa virheen `Revision invalid : reference must
|
||||||
|
be defined once at the beginning`.
|
||||||
|
|
||||||
|
Paikallisista `uses:`-direktiiveistä EI koskaan käytetä `@main`- tai muuta ref-päätettä:
|
||||||
|
- `uses: ./.gitea/workflows/chart.helm-lint.yml` ← oikein
|
||||||
|
- `uses: ./.gitea/workflows/chart.helm-lint.yml@main` ← väärin
|
||||||
|
|
||||||
|
Ilman refiä runner käyttää workflow'ta triggeröivästä commitista. Ulkoisten repojen
|
||||||
|
viittauksissa (`niko/...@v1`) pääte pysyy. Nämä resolvoidaan eri reittiä ja toimivat oikein.
|
||||||
|
|
||||||
### Exit-koodi on ainoa onnistumisen mittari (ADR 0008)
|
### Exit-koodi on ainoa onnistumisen mittari (ADR 0008)
|
||||||
|
|
||||||
Ei pipeä (`|`) komennon perässä — se syö exit-koodin. Käytä redirectiä (`> file 2>&1`).
|
Ei pipeä (`|`) komennon perässä — se syö exit-koodin. Käytä redirectiä (`> file 2>&1`).
|
||||||
|
|||||||
Reference in New Issue
Block a user