Gitea von Binary installieren: https://docs.gitea.com/installation/install-from-binary
- Debian nach eigenem Standard
- git installieren
- User “git” erzeugen
- Verzeichnisse unter /var/lib/gitea erzeugen und schützen
- /etc/gitea erzeugen und schützen
- passendes gitea von https://dl.gitea.com/gitea/ holen, auf /usr/local/bin/ kopieren
- systemd Unit erzeugen – https://docs.gitea.com/installation/linux-service
- Environment=HTTP_PROXY=xxxx einfügen
- Environment=HTTPS_PROXY=xxxx einfügen
- Environment=NO_PROXY=xxxx einfügen
Gitea Actions und Migrations (=Replica) über Proxy erlauben (/etc/gitea/app.ini):
[proxy]
PROXY_ENABLED = true
PROXY_URL =
[migrations]
ALLOW_LOCALNETWORKS = true
ALLOWED_DOMAINS = gitea.com
[actions]
ENABLED=true
DEFAULT_ACTIONS_URL=self
STORAGE_TYPE=local
- HTTP_PORT, ROOT_URL, CERT_FILE, PROTOCOL für HTTPS
Notwendige actions von Gitea.com replizieren (leicht modifizierte Namen damit alles unter “actions” liegt):
- Gitea Organisation “actions” erzeugen
- Migration von https://gitea.com/docker/login-action auf docker-login in actions
- Migration von https://gitea.com/docker/setup-buildx-action auf docker-setup-buildx in actions
- Migration von https://gitea.com/docker/build-push-action auf docker-build-push in actions
- Migration von https://gitea.com/actions/checkout auf checkout in actions
act_runner (ausführendes Organ) konfigurieren (https://docs.gitea.com/usage/actions/quickstart)
- passendes Binary von https://dl.gitea.com/act_runner/ holen
- auf passendem Level (Instance, Organization, Repository) Token erzeugen und Runner registrieren
- –labels linux_x64 beim Register angeben (sollte im config.yaml unter runner:/labels stehen)
- config erzeugen (./act_runner generate-config > config.yaml)
- unter “runner:” Block “envs:” mit HTTP_PROXY: xxxx, HTTPS_PROXY: xxxx, NO_PROXY: xxxx einfügen
- mit config starten: ./act_runner daemon -c ./config.yaml
Action secret GIT_ACCESS_TOKEN erzeugen
- https://gitea-host/api/swagger#/user/userCreateToken
- nur für single User sinnvoll weil Token vom User sein muss der git push durchführt
Action secrets für Webserverzertifikat erzeugen
- CERT_CRT mit public key
- CERT_KEY mit private key
Im Repository .gitea/workflows/docker.yaml erzeugen:
jobs:
Homer-Build-and-Push-Docker-Image:
runs-on: linux_x64
steps:
- run: echo "${{ gitea.actor }} did ${{ gitea.event_name }} to ${{ gitea.repository }}, branch ${{ gitea.ref }}"
- name: Check out repository code
uses: actions/checkout@v3
with:
username: ${{ gitea.actor }}
password: ${{ secrets.GIT_ACCESS_TOKEN }}
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: ls ${{ gitea.workspace }}
- name: Login docker
uses: actions/docker-login@v2
with:
registry: ${{ env.DOCKER_REGISTRY }}
username: ${{ gitea.actor }}
password: ${{ secrets.GIT_ACCESS_TOKEN }}
- name: Setup docker buildx
uses: actions/docker-setup-buildx@v2
env:
HTTP_PROXY: ${{ env.HTTP_PROXY }}
HTTPS_PROXY: ${{ env.HTTPS_PROXY }}
NO_PROXY: ${{ env.NO_PROXY }}
with:
driver-opts: |
env.http_proxy=${{ env.HTTP_PROXY }}
env.https_proxy=${{ env.HTTPS_PROXY }}
"env.no_proxy='${{ env.NO_PROXY }}'"
config-inline: |
[registry."${{ env.DOCKER_REGISTRY }}"]
ca=["/etc/docker/certs.d/${{ env.DOCKER_REGISTRY }}/GallaunerCA.crt"]
- name: Build and push docker image
uses: actions/docker-build-push@v4
env:
ACTIONS_RUNTIME_TOKEN: ''
with:
context: .
push: true
tags: ${{ env.DOCKER_REGISTRY }}/gallauner/homer
secrets: |
"CERT_CRT=${{ secrets.CERT_CRT }}"
"CERT_KEY=${{ secrets.CERT_KEY }}"
- run: echo "🍏 This job's status is ${{ job.status }}."
- runs-on: linux_x64 entspricht dem Label vom act_runner
- Proxywerte aus dem Environment werden für pull von Basisimages benötigt
- Custom CA der privaten Registry wird im config-inline von docker-setup-build eingefügt
- Zertifikat für Webserver wird über secrets von docker-build-push eingefügt (siehe Dockerfile)
Dockerfile
FROM nginx:alpine
COPY homer /usr/share/nginx/html/
RUN --mount=type=secret,id=CERT_CRT \
cp /run/secrets/CERT_CRT /etc/ssl/certs/homer.crt
RUN --mount=type=secret,id=CERT_KEY \
cp /run/secrets/CERT_KEY /etc/ssl/private/homer.key
COPY <<EOF /etc/nginx/conf.d/default.conf
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/ssl/certs/homer.crt;
ssl_certificate_key /etc/ssl/private/homer.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
EOF
- durch die “secrets” in der Action können die Secrets gemounted und kopiert werden