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:
|
||||
runs-on: ubuntu-latest # pas aan naar het label van jouw Forgejo-runner
|
||||
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 }}
|
||||
IMAGE_NAME: ${{ github.repository }} # bv. ramon/teach
|
||||
IMAGE_NAME: ${{ github.repository }} # bes-r/teach
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
|
@ -27,23 +27,18 @@ jobs:
|
|||
echo "sha_tag=${IMAGE}:dev-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
|
||||
echo "dev_tag=${IMAGE}:dev" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Login bij Forgejo registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ vars.REGISTRY }}
|
||||
username: ${{ secrets.REGISTRY_USER }}
|
||||
password: ${{ secrets.REGISTRY_TOKEN }}
|
||||
|
||||
- name: Build & push
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
build-args: |
|
||||
APP_VERSION=dev-${{ github.sha }}
|
||||
tags: |
|
||||
${{ steps.meta.outputs.sha_tag }}
|
||||
${{ steps.meta.outputs.dev_tag }}
|
||||
# Platte docker build/push i.p.v. buildx: betrouwbaarder tegen een
|
||||
# HTTP-registry. De runner-host moet 10.0.20.22:3000 als
|
||||
# insecure-registry hebben (zie README).
|
||||
- name: Login, build & push
|
||||
run: |
|
||||
echo "${{ secrets.REGISTRY_TOKEN }}" | docker login "$REGISTRY" -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||||
docker build \
|
||||
--build-arg APP_VERSION="dev-${GITHUB_SHA::7}" \
|
||||
-t "${{ steps.meta.outputs.sha_tag }}" \
|
||||
-t "${{ steps.meta.outputs.dev_tag }}" .
|
||||
docker push "${{ steps.meta.outputs.sha_tag }}"
|
||||
docker push "${{ steps.meta.outputs.dev_tag }}"
|
||||
|
||||
- name: Deploy naar test-VM
|
||||
uses: appleboy/ssh-action@v1
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ jobs:
|
|||
runs-on: ubuntu-latest # pas aan naar het label van jouw Forgejo-runner
|
||||
env:
|
||||
REGISTRY: ${{ vars.REGISTRY }}
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
IMAGE_NAME: ${{ github.repository }} # bes-r/teach
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
|
@ -29,23 +29,16 @@ jobs:
|
|||
echo "latest_tag=${IMAGE}:latest" >> "$GITHUB_OUTPUT"
|
||||
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Login bij Forgejo registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ vars.REGISTRY }}
|
||||
username: ${{ secrets.REGISTRY_USER }}
|
||||
password: ${{ secrets.REGISTRY_TOKEN }}
|
||||
|
||||
- name: Build & push
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
build-args: |
|
||||
APP_VERSION=${{ steps.meta.outputs.version }}
|
||||
tags: |
|
||||
${{ steps.meta.outputs.version_tag }}
|
||||
${{ steps.meta.outputs.latest_tag }}
|
||||
# Platte docker build/push (HTTP-registry, zie README voor insecure-registry).
|
||||
- name: Login, build & push
|
||||
run: |
|
||||
echo "${{ secrets.REGISTRY_TOKEN }}" | docker login "$REGISTRY" -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||||
docker build \
|
||||
--build-arg APP_VERSION="${{ steps.meta.outputs.version }}" \
|
||||
-t "${{ steps.meta.outputs.version_tag }}" \
|
||||
-t "${{ steps.meta.outputs.latest_tag }}" .
|
||||
docker push "${{ steps.meta.outputs.version_tag }}"
|
||||
docker push "${{ steps.meta.outputs.latest_tag }}"
|
||||
|
||||
- name: Deploy naar productie-VM
|
||||
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
|
||||
Onder **Settings → Actions → Variables** van het repo (of org):
|
||||
|
||||
| Variable | Voorbeeld | Uitleg |
|
||||
|------------|--------------------------|---------------------------------|
|
||||
| `REGISTRY` | `git.familiebesselink.nl`| Host van je Forgejo = registry |
|
||||
| Variable | Waarde | Uitleg |
|
||||
|------------|------------------|---------------------------------|
|
||||
| `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**:
|
||||
|
||||
|
|
@ -65,10 +67,28 @@ Onder **Settings → Actions → Secrets**:
|
|||
| `PROD_SSH_KEY` | Private SSH-key voor de productie-VM |
|
||||
| `PROD_DEPLOY_PATH` | Pad op de productie-VM met de deploy-bestanden |
|
||||
|
||||
> De runner moet Docker + buildx beschikbaar hebben en `actions/checkout`,
|
||||
> `docker/*` en `appleboy/ssh-action` kunnen ophalen (standaard van github.com;
|
||||
> instelbaar via de runner-config). Pas `runs-on` in de workflows aan naar het
|
||||
> label van jouw runner als dat niet `ubuntu-latest` is.
|
||||
> De runner moet de `docker`-CLI kunnen gebruiken (host-socket of docker-in-docker)
|
||||
> en `actions/checkout` + `appleboy/ssh-action` kunnen ophalen. Pas `runs-on` in
|
||||
> de workflows aan naar het 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
|
||||
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/
|
||||
# maak een .env aan:
|
||||
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_USER=teach
|
||||
POSTGRES_PASSWORD=<sterk-wachtwoord>
|
||||
|
|
@ -118,7 +138,7 @@ server {
|
|||
## Push naar Forgejo (eerste keer)
|
||||
|
||||
```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 dev
|
||||
```
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
# docker compose -f compose.deploy.yaml up -d
|
||||
#
|
||||
# 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
|
||||
# DATABASE_URL=postgres://<user>:<pw>@db:5432/<db>
|
||||
# APP_PORT=3000 (poort die nginx op deze VM naar de app proxyt)
|
||||
|
|
|
|||
Loading…
Reference in a new issue