docker pat to actions secret in gitea side
CI / Load gitea-env.conf to pipeline env (push) Successful in 15s
ci-check Build version 0.1.0 required
ci-docker-build Docker build 0.1.0 OK
ci-docker-push Docker push 0.1.0 OK
ci-docker-tag Tag 0.1.0 OK
CI / Build & Push Artifact (push) Successful in 1m56s
CI / Load gitea-env.conf to pipeline env (push) Successful in 15s
ci-check Build version 0.1.0 required
ci-docker-build Docker build 0.1.0 OK
ci-docker-push Docker push 0.1.0 OK
ci-docker-tag Tag 0.1.0 OK
CI / Build & Push Artifact (push) Successful in 1m56s
This commit is contained in:
@@ -28,7 +28,7 @@ env:
|
||||
GIT_PAGES_PUBLISH_TOKEN: ${{ secrets.GIT_PAGES_PUBLISH_TOKEN }}
|
||||
REPO: ${{ github.repository }}
|
||||
DOCKER_REGISTRY: ${{ fromJson(inputs.env_json).DOCKER_REGISTRY || '' }}
|
||||
DOCKER_IMAGE_TAG: ${{ fromJson(inputs.env_json).DOCKER_IMAGE_TAG || '' }}
|
||||
DOCKER_IMAGE_NAME: ${{ fromJson(inputs.env_json).DOCKER_IMAGE_NAME || '' }}
|
||||
DOCKER_UI_URL: ${{ fromJson(inputs.env_json).DOCKER_UI_URL || '' }}
|
||||
|
||||
concurrency:
|
||||
@@ -153,7 +153,7 @@ jobs:
|
||||
--label "git.commit=${{ github.sha }}" \
|
||||
--label "git.commitBy=${{ github.actor }}" \
|
||||
--label "build.date=${NOW}" \
|
||||
-t "${DOCKER_IMAGE_TAG}:${NEXT_VERSION}" .
|
||||
-t "${DOCKER_IMAGE_NAME}:${NEXT_VERSION}" .
|
||||
|
||||
- name: Report status SUCCESS
|
||||
if: steps.gatekeeper.outputs.skip == 'false' && success()
|
||||
@@ -172,7 +172,7 @@ jobs:
|
||||
run: |
|
||||
source /tmp/build-ctx/build.env
|
||||
mkdir -p /tmp/image
|
||||
docker save "${DOCKER_IMAGE_TAG}:${NEXT_VERSION}" -o /tmp/image/artifact.tar
|
||||
docker save "${DOCKER_IMAGE_NAME}:${NEXT_VERSION}" -o /tmp/image/artifact.tar
|
||||
|
||||
- name: Upload Docker image artifact
|
||||
if: steps.gatekeeper.outputs.skip == 'false' && success()
|
||||
@@ -232,13 +232,13 @@ jobs:
|
||||
docker load -i /tmp/image/artifact.tar
|
||||
|
||||
REGISTRY="${DOCKER_REGISTRY:?DOCKER_REGISTRY not set in env.conf}"
|
||||
IMAGE="${DOCKER_IMAGE_TAG:?DOCKER_IMAGE_TAG not set in env.conf}"
|
||||
IMAGE="${DOCKER_IMAGE_NAME:?DOCKER_IMAGE_NAME not set in env.conf}"
|
||||
REGISTRY_HOST="${REGISTRY%%/*}"
|
||||
|
||||
FULL_IMAGE="${REGISTRY}/${IMAGE}:${NEXT_VERSION}"
|
||||
echo "Pushing ${FULL_IMAGE} ..."
|
||||
|
||||
docker tag "${DOCKER_IMAGE_TAG}:${NEXT_VERSION}" "$FULL_IMAGE"
|
||||
docker tag "${DOCKER_IMAGE_NAME}:${NEXT_VERSION}" "$FULL_IMAGE"
|
||||
echo "$DOCKER_PASSWORD" | docker login "$REGISTRY_HOST" -u "$DOCKER_USERNAME" --password-stdin
|
||||
docker push "$FULL_IMAGE"
|
||||
docker logout "$REGISTRY_HOST"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
GITEA_API_URL=https://gitea.app.keskikuja.site
|
||||
GIT_PAGES_URL=https://ci-reports.helm-dev.keskikuja.site
|
||||
DOCKER_REGISTRY=gitea.app.keskikuja.site/niko
|
||||
DOCKER_IMAGE_TAG=gitea-ci-library-test-image
|
||||
DOCKER_IMAGE_NAME=gitea-ci-library-test-image
|
||||
DOCKER_UI_URL=https://gitea.app.keskikuja.site/niko/gitea-ci-library/packages
|
||||
|
||||
@@ -1,85 +1,106 @@
|
||||
# Docker Registry Setup
|
||||
|
||||
Pipeline rakentaa Docker-kontin ja pushee sen haluttuun registryyn. Konfigurointi `gitea-env.conf`issa, tunnukset repository Secrets -muuttujina.
|
||||
Pipeline rakentaa Docker-kontin ja pushee sen haluttuun registryyn.
|
||||
|
||||
---
|
||||
|
||||
## 1. `gitea-env.conf` — Docker-kentät
|
||||
## 1. Konfiguroi `gitea-env.conf`
|
||||
|
||||
| Kenttä | Pakollinen | Kuvaus | Esimerkki |
|
||||
|---|---|---|---|
|
||||
| `DOCKER_REGISTRY` | **kyllä** | Registry + mahdollinen organisaatio. Koko etuliite ennen kuvan nimeä. Login käyttää ensimmäistä `/`-edeltävää osaa | `gitea.app.keskikuja.site/niko` |
|
||||
| `DOCKER_IMAGE_TAG` | **kyllä** | Pelkkä kuvan nimi (ilman tagia, ilman rekisteriä, ilman organisaatiota) | `gitea-ci-library-test-image` |
|
||||
| `DOCKER_UI_URL` | ei | Base-URL kontin UI-sivulle. Workflow liittää perään `/VERSION` | `https://gitea.app.keskikuja.site/-/packages/container/niko/gitea-ci-library` |
|
||||
```
|
||||
DOCKER_REGISTRY=gitea.app.keskikuja.site/niko # PAKOLLINEN — tyhjä ei käy
|
||||
DOCKER_IMAGE_NAME=gitea-ci-library-test-image # PAKOLLINEN
|
||||
DOCKER_UI_URL=https://gitea.app.keskikuja.site/niko/gitea-ci-library/packages # valinnainen
|
||||
```
|
||||
|
||||
**Koko image-ref:** `${DOCKER_REGISTRY}/${DOCKER_IMAGE_TAG}:${VERSION}`
|
||||
Esimerkki: `gitea.app.keskikuja.site/niko/gitea-ci-library-test-image:0.1.0`
|
||||
| Kenttä | Pakollinen | Kuvaus |
|
||||
|---|---|---|
|
||||
| `DOCKER_REGISTRY` | **kyllä** | Registry + mahdollinen organisaatio. **Tyhjä arvo pysäyttää workflow'n virheeseen.** Esim. `gitea.app.keskikuja.site/niko` |
|
||||
| `DOCKER_IMAGE_NAME` | **kyllä** | Pelkkä kuvan nimi. Esim. `gitea-ci-library-test-image` |
|
||||
| `DOCKER_UI_URL` | ei | Base-URL kontin UI-sivulle. Workflow liittää perään `/VERSION` |
|
||||
|
||||
**Paikallinen build-tagi:** `${DOCKER_IMAGE_TAG}:${VERSION}`
|
||||
Esimerkki: `gitea-ci-library-test-image:0.1.0`
|
||||
**Koko image-ref:** `${DOCKER_REGISTRY}/${DOCKER_IMAGE_NAME}:${VERSION}`
|
||||
Esim. `gitea.app.keskikuja.site/niko/gitea-ci-library-test-image:0.1.0`
|
||||
|
||||
---
|
||||
|
||||
## 2. Gitea Secrets — tunnukset
|
||||
## 2. Luo PAT (Personal Access Token) Giteassa
|
||||
|
||||
Workflow tekee `docker login -u "$DOCKER_USERNAME" --password-stdin`. Mitä arvoja laitetaan, riippuu registrystä:
|
||||
**Gitea → oma profiili (oikea yläkulma) → Settings → Applications → Manage Access Tokens → Generate New Token**
|
||||
|
||||
| Registry | `DOCKER_USERNAME` | `DOCKER_PASSWORD` | Mistä saadaan |
|
||||
|---|---|---|---|
|
||||
| Gitea Packages | `${{ github.actor }}` (automaattinen) | **PAT** scope `write:packages` | User Settings → Applications → Generate Token |
|
||||
| Docker Hub | Docker Hub -käyttäjä | Access Token (ei salasana) | Hub Account Settings → Security → Access Tokens |
|
||||
| Artifactory | service account -tunnus | API-token | Artifactory Admin → Users → käyttäjä → token |
|
||||
Valitse scope:
|
||||
|
||||
`DOCKER_USERNAME` on optionaalinen — jos sitä ei ole asetettu, workflow käyttää `${{ github.actor }}` (workflowin käynnistäjä). Riittää asettaa vain `DOCKER_PASSWORD`.
|
||||
| Scope | Pääsy |
|
||||
|---|---|
|
||||
| `package` | **Read and Write** |
|
||||
|
||||
**Asetus:** Repository → Settings → Actions → Secrets → **Add new secret**
|
||||
> Tämä token toimii salasanana `docker login` -komennossa. Muut scopet (kuten `repository`) eivät riitä — konttirekisteri vaatii nimenomaan `package`-scopen.
|
||||
|
||||
Tokenin arvo näytetään **vain kerran** luomisen yhteydessä. Kopioi se talteen.
|
||||
|
||||
---
|
||||
|
||||
## 3. Esimerkkejä
|
||||
## 3. Tallenna PAT repositoryn Secretsiin
|
||||
|
||||
### 3a. Gitea Packages
|
||||
Nämä ovat kaksi eri paikkaa:
|
||||
- **Access Tokenit** (User Settings) = missä luot tokenin
|
||||
- **Repository Secrets** (Repository Settings) = minne talletat sen workflow'n käyttöön
|
||||
|
||||
**Repository → Settings → Actions → Secrets → Add new secret**
|
||||
|
||||
| Secret | Arvo |
|
||||
|---|---|
|
||||
| `DOCKER_PASSWORD` | Edellisessä vaiheessa luotu PAT |
|
||||
|
||||
`DOCKER_USERNAME`-secretiä **ei tarvita**. Workflow käyttää automaattisesti `${{ github.actor }}` (workflowin käynnistäjä).
|
||||
|
||||
Jos registry vaatii eri käyttäjätunnuksen kuin `github.actor` (esim. Artifactory, Docker Hub), lisää myös:
|
||||
|
||||
| Secret | Arvo |
|
||||
|---|---|
|
||||
| `DOCKER_USERNAME` | Registryn käyttäjätunnus |
|
||||
|
||||
---
|
||||
|
||||
## 4. Tarkistuslista ennen ajoa
|
||||
|
||||
- [ ] `DOCKER_REGISTRY` asetettu `gitea-env.conf`issa
|
||||
- [ ] `DOCKER_IMAGE_NAME` asetettu `gitea-env.conf`issa
|
||||
- [ ] PAT luotu Giteassa scopella `package` Read and Write
|
||||
- [ ] `DOCKER_PASSWORD`-secret tallennettu repositoryn Secretsiin (se PAT)
|
||||
- [ ] (tarvittaessa) `DOCKER_USERNAME`-secret — oletus `github.actor`
|
||||
|
||||
---
|
||||
|
||||
## 5. Esimerkkejä eri registryille
|
||||
|
||||
### Gitea Packages
|
||||
|
||||
```
|
||||
DOCKER_REGISTRY=gitea.app.keskikuja.site/niko
|
||||
DOCKER_IMAGE_TAG=gitea-ci-library-test-image
|
||||
DOCKER_IMAGE_NAME=gitea-ci-library-test-image
|
||||
DOCKER_UI_URL=https://gitea.app.keskikuja.site/-/packages/container/niko/gitea-ci-library
|
||||
```
|
||||
|
||||
- `DOCKER_USERNAME` = Gitea-käyttäjätunnus
|
||||
- `DOCKER_PASSWORD` = **PAT** (User Settings → Applications → Generate Token, scope `write:packages`)
|
||||
- PAT scope: `package` Read and Write
|
||||
|
||||
> Runnerin automaattinen `GITEA_TOKEN` ei yleensä sisällä `write:packages`-scopea. Tarvitaan erillinen PAT.
|
||||
|
||||
### 3b. Docker Hub
|
||||
### Docker Hub
|
||||
|
||||
```
|
||||
DOCKER_REGISTRY=docker.io/library
|
||||
DOCKER_IMAGE_TAG=oma-kuva
|
||||
DOCKER_IMAGE_NAME=oma-kuva
|
||||
DOCKER_UI_URL=https://hub.docker.com/r/library/oma-kuva
|
||||
```
|
||||
|
||||
- `DOCKER_USERNAME` = Docker Hub -käyttäjätunnus
|
||||
- `DOCKER_PASSWORD` = Docker Hub Access Token (suositeltu) tai salasana
|
||||
- Secret `DOCKER_USERNAME` = Docker Hub -käyttäjä
|
||||
- Secret `DOCKER_PASSWORD` = Access Token (ei salasana)
|
||||
|
||||
### 3c. Artifactory (kuten legacy Jenkins)
|
||||
### Artifactory (kuten legacy Jenkins)
|
||||
|
||||
```
|
||||
DOCKER_REGISTRY=ngdo-docker.artifactorypro.shared.pub.tds.tieto.com
|
||||
DOCKER_IMAGE_TAG=microservice-temperature-store
|
||||
DOCKER_IMAGE_NAME=microservice-temperature-store
|
||||
DOCKER_UI_URL=https://artifactorypro.shared.pub.tds.tieto.com/ui/repos/tree/General/ngdo-docker.artifactorypro.shared.pub.tds.tieto.com/microservice-temperature-store
|
||||
```
|
||||
|
||||
- `DOCKER_USERNAME` = Artifactory-käyttäjätunnus
|
||||
- `DOCKER_PASSWORD` = Artifactoryn API-token
|
||||
|
||||
---
|
||||
|
||||
## 4. Tarkistuslista
|
||||
|
||||
- [ ] `DOCKER_REGISTRY` asetettu (registry + org)
|
||||
- [ ] `DOCKER_IMAGE_TAG` asetettu (pelkkä nimi)
|
||||
- [ ] (tarvittaessa) `DOCKER_USERNAME`-secret — oletus `github.actor`
|
||||
- [ ] `DOCKER_PASSWORD`-secret luotu repoon (PAT/token/salasana)
|
||||
- [ ] Tokenilla/salasanalla oikeus **pushata** registryyn
|
||||
- [ ] (valinnainen) `DOCKER_UI_URL` asetettu → commit status linkkaa kontin UI-sivulle
|
||||
- Secret `DOCKER_USERNAME` = service account -tunnus
|
||||
- Secret `DOCKER_PASSWORD` = API-token
|
||||
|
||||
Reference in New Issue
Block a user