Pipeline afstemmen op HTTP-registry 10.0.20.22:3000 (bes-r/teach)
Some checks failed
dev - build & deploy naar test / build-and-deploy (push) Has been cancelled
Some checks failed
dev - build & deploy naar test / build-and-deploy (push) Has been cancelled
This commit is contained in:
parent
516a048ce7
commit
27faa8e6a1
4 changed files with 55 additions and 47 deletions
|
|
@ -13,9 +13,9 @@ jobs:
|
||||||
build-and-deploy:
|
build-and-deploy:
|
||||||
runs-on: ubuntu-latest # pas aan naar het label van jouw Forgejo-runner
|
runs-on: ubuntu-latest # pas aan naar het label van jouw Forgejo-runner
|
||||||
env:
|
env:
|
||||||
# git.jouwdomein.nl - host van je Forgejo (= container registry host)
|
# 10.0.20.22:3000 - host van je Forgejo (= container registry host)
|
||||||
REGISTRY: ${{ vars.REGISTRY }}
|
REGISTRY: ${{ vars.REGISTRY }}
|
||||||
IMAGE_NAME: ${{ github.repository }} # bv. ramon/teach
|
IMAGE_NAME: ${{ github.repository }} # bes-r/teach
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
|
@ -27,23 +27,18 @@ jobs:
|
||||||
echo "sha_tag=${IMAGE}:dev-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
|
echo "sha_tag=${IMAGE}:dev-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
|
||||||
echo "dev_tag=${IMAGE}:dev" >> "$GITHUB_OUTPUT"
|
echo "dev_tag=${IMAGE}:dev" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Login bij Forgejo registry
|
# Platte docker build/push i.p.v. buildx: betrouwbaarder tegen een
|
||||||
uses: docker/login-action@v3
|
# HTTP-registry. De runner-host moet 10.0.20.22:3000 als
|
||||||
with:
|
# insecure-registry hebben (zie README).
|
||||||
registry: ${{ vars.REGISTRY }}
|
- name: Login, build & push
|
||||||
username: ${{ secrets.REGISTRY_USER }}
|
run: |
|
||||||
password: ${{ secrets.REGISTRY_TOKEN }}
|
echo "${{ secrets.REGISTRY_TOKEN }}" | docker login "$REGISTRY" -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||||||
|
docker build \
|
||||||
- name: Build & push
|
--build-arg APP_VERSION="dev-${GITHUB_SHA::7}" \
|
||||||
uses: docker/build-push-action@v6
|
-t "${{ steps.meta.outputs.sha_tag }}" \
|
||||||
with:
|
-t "${{ steps.meta.outputs.dev_tag }}" .
|
||||||
context: .
|
docker push "${{ steps.meta.outputs.sha_tag }}"
|
||||||
push: true
|
docker push "${{ steps.meta.outputs.dev_tag }}"
|
||||||
build-args: |
|
|
||||||
APP_VERSION=dev-${{ github.sha }}
|
|
||||||
tags: |
|
|
||||||
${{ steps.meta.outputs.sha_tag }}
|
|
||||||
${{ steps.meta.outputs.dev_tag }}
|
|
||||||
|
|
||||||
- name: Deploy naar test-VM
|
- name: Deploy naar test-VM
|
||||||
uses: appleboy/ssh-action@v1
|
uses: appleboy/ssh-action@v1
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest # pas aan naar het label van jouw Forgejo-runner
|
runs-on: ubuntu-latest # pas aan naar het label van jouw Forgejo-runner
|
||||||
env:
|
env:
|
||||||
REGISTRY: ${{ vars.REGISTRY }}
|
REGISTRY: ${{ vars.REGISTRY }}
|
||||||
IMAGE_NAME: ${{ github.repository }}
|
IMAGE_NAME: ${{ github.repository }} # bes-r/teach
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
|
@ -29,23 +29,16 @@ jobs:
|
||||||
echo "latest_tag=${IMAGE}:latest" >> "$GITHUB_OUTPUT"
|
echo "latest_tag=${IMAGE}:latest" >> "$GITHUB_OUTPUT"
|
||||||
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Login bij Forgejo registry
|
# Platte docker build/push (HTTP-registry, zie README voor insecure-registry).
|
||||||
uses: docker/login-action@v3
|
- name: Login, build & push
|
||||||
with:
|
run: |
|
||||||
registry: ${{ vars.REGISTRY }}
|
echo "${{ secrets.REGISTRY_TOKEN }}" | docker login "$REGISTRY" -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||||||
username: ${{ secrets.REGISTRY_USER }}
|
docker build \
|
||||||
password: ${{ secrets.REGISTRY_TOKEN }}
|
--build-arg APP_VERSION="${{ steps.meta.outputs.version }}" \
|
||||||
|
-t "${{ steps.meta.outputs.version_tag }}" \
|
||||||
- name: Build & push
|
-t "${{ steps.meta.outputs.latest_tag }}" .
|
||||||
uses: docker/build-push-action@v6
|
docker push "${{ steps.meta.outputs.version_tag }}"
|
||||||
with:
|
docker push "${{ steps.meta.outputs.latest_tag }}"
|
||||||
context: .
|
|
||||||
push: true
|
|
||||||
build-args: |
|
|
||||||
APP_VERSION=${{ steps.meta.outputs.version }}
|
|
||||||
tags: |
|
|
||||||
${{ steps.meta.outputs.version_tag }}
|
|
||||||
${{ steps.meta.outputs.latest_tag }}
|
|
||||||
|
|
||||||
- name: Deploy naar productie-VM
|
- name: Deploy naar productie-VM
|
||||||
uses: appleboy/ssh-action@v1
|
uses: appleboy/ssh-action@v1
|
||||||
|
|
|
||||||
38
README.md
38
README.md
|
|
@ -46,9 +46,11 @@ Maak een leeg repo (bv. `ramon/teach`) en push (zie onderaan).
|
||||||
### 2. Registry / Actions variabelen en secrets
|
### 2. Registry / Actions variabelen en secrets
|
||||||
Onder **Settings → Actions → Variables** van het repo (of org):
|
Onder **Settings → Actions → Variables** van het repo (of org):
|
||||||
|
|
||||||
| Variable | Voorbeeld | Uitleg |
|
| Variable | Waarde | Uitleg |
|
||||||
|------------|--------------------------|---------------------------------|
|
|------------|------------------|---------------------------------|
|
||||||
| `REGISTRY` | `git.familiebesselink.nl`| Host van je Forgejo = registry |
|
| `REGISTRY` | `10.0.20.22:3000`| Host van je Forgejo = registry |
|
||||||
|
|
||||||
|
De image heet dan `10.0.20.22:3000/bes-r/teach`.
|
||||||
|
|
||||||
Onder **Settings → Actions → Secrets**:
|
Onder **Settings → Actions → Secrets**:
|
||||||
|
|
||||||
|
|
@ -65,10 +67,28 @@ Onder **Settings → Actions → Secrets**:
|
||||||
| `PROD_SSH_KEY` | Private SSH-key voor de productie-VM |
|
| `PROD_SSH_KEY` | Private SSH-key voor de productie-VM |
|
||||||
| `PROD_DEPLOY_PATH` | Pad op de productie-VM met de deploy-bestanden |
|
| `PROD_DEPLOY_PATH` | Pad op de productie-VM met de deploy-bestanden |
|
||||||
|
|
||||||
> De runner moet Docker + buildx beschikbaar hebben en `actions/checkout`,
|
> De runner moet de `docker`-CLI kunnen gebruiken (host-socket of docker-in-docker)
|
||||||
> `docker/*` en `appleboy/ssh-action` kunnen ophalen (standaard van github.com;
|
> en `actions/checkout` + `appleboy/ssh-action` kunnen ophalen. Pas `runs-on` in
|
||||||
> instelbaar via de runner-config). Pas `runs-on` in de workflows aan naar het
|
> de workflows aan naar het label van jouw runner als dat niet `ubuntu-latest` is.
|
||||||
> label van jouw runner als dat niet `ubuntu-latest` is.
|
|
||||||
|
### 2b. HTTP-registry toestaan (insecure-registries)
|
||||||
|
Je Forgejo draait op **`http://10.0.20.22:3000`** (platte HTTP). Docker weigert
|
||||||
|
HTTP-registries tenzij je ze expliciet toestaat. Doe dit op **drie** plekken: de
|
||||||
|
**runner-host** (die pusht) en **beide VM's** (die pullen). Op elke Docker-host:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# /etc/docker/daemon.json
|
||||||
|
{
|
||||||
|
"insecure-registries": ["10.0.20.22:3000"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart docker
|
||||||
|
```
|
||||||
|
|
||||||
|
> Zet je Forgejo later achter HTTPS met een echt domein, dan kan deze stap weg
|
||||||
|
> en gebruik je dat domein als `REGISTRY`.
|
||||||
|
|
||||||
### 3. Deploy-map op elke VM
|
### 3. Deploy-map op elke VM
|
||||||
Op zowel de test- als de productie-VM, in het pad dat je bij `*_DEPLOY_PATH`
|
Op zowel de test- als de productie-VM, in het pad dat je bij `*_DEPLOY_PATH`
|
||||||
|
|
@ -81,7 +101,7 @@ mkdir -p teach && cd teach
|
||||||
# db/ -> db/
|
# db/ -> db/
|
||||||
# maak een .env aan:
|
# maak een .env aan:
|
||||||
cat > .env <<'EOF'
|
cat > .env <<'EOF'
|
||||||
IMAGE=git.familiebesselink.nl/ramon/teach:dev # prod: laat CI dit op :vX.Y.Z zetten
|
IMAGE=10.0.20.22:3000/bes-r/teach:dev # prod: laat CI dit op :vX.Y.Z zetten
|
||||||
POSTGRES_DB=teach
|
POSTGRES_DB=teach
|
||||||
POSTGRES_USER=teach
|
POSTGRES_USER=teach
|
||||||
POSTGRES_PASSWORD=<sterk-wachtwoord>
|
POSTGRES_PASSWORD=<sterk-wachtwoord>
|
||||||
|
|
@ -118,7 +138,7 @@ server {
|
||||||
## Push naar Forgejo (eerste keer)
|
## Push naar Forgejo (eerste keer)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git remote add origin https://git.familiebesselink.nl/ramon/teach.git
|
git remote add origin http://10.0.20.22:3000/bes-r/teach.git
|
||||||
git push -u origin main
|
git push -u origin main
|
||||||
git push -u origin dev
|
git push -u origin dev
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
# docker compose -f compose.deploy.yaml up -d
|
# docker compose -f compose.deploy.yaml up -d
|
||||||
#
|
#
|
||||||
# Verwachte env-variabelen op de VM (in ./.env):
|
# Verwachte env-variabelen op de VM (in ./.env):
|
||||||
# IMAGE=git.jouwdomein.nl/ramon/teach:dev (of :vX.Y.Z op prod)
|
# IMAGE=10.0.20.22:3000/bes-r/teach:dev (of :vX.Y.Z op prod)
|
||||||
# POSTGRES_DB / POSTGRES_USER / POSTGRES_PASSWORD
|
# POSTGRES_DB / POSTGRES_USER / POSTGRES_PASSWORD
|
||||||
# DATABASE_URL=postgres://<user>:<pw>@db:5432/<db>
|
# DATABASE_URL=postgres://<user>:<pw>@db:5432/<db>
|
||||||
# APP_PORT=3000 (poort die nginx op deze VM naar de app proxyt)
|
# APP_PORT=3000 (poort die nginx op deze VM naar de app proxyt)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue