Compare commits

..

12 Commits

Author SHA1 Message Date
09d04cc063 doc: move badges
Some checks failed
Continuous Delivery / build_n_upload (push) Has been cancelled
2026-02-17 14:13:10 +01:00
e351eaea47 doc: fix badges 2026-02-17 14:12:00 +01:00
2c20d96e99 doc: improve readme 2026-02-17 14:03:52 +01:00
84e97fe190 ci: fetch depth 0
Some checks failed
Continuous Delivery / build_n_upload (push) Has been cancelled
2026-02-17 02:09:28 +01:00
d97626ffd2 ci: fetch tags 2026-02-17 02:08:15 +01:00
5c57534ab9 ci: fix shellcheck target 2026-02-17 02:04:42 +01:00
051c806332 ci: fix shellcheck targets 2026-02-17 02:02:59 +01:00
34279dd21c ci: add shellcheck targets 2026-02-17 02:01:57 +01:00
6b5679e3fe ci: remove systemdlint 2026-02-17 01:07:13 +01:00
82fd911427 ci: add rpm build 2026-02-17 00:15:48 +01:00
c2401ee8da ci: add ci workflow 2026-02-17 00:13:05 +01:00
4c0fbbfe97 ci: add git ref
Some checks failed
Continuous Integration / build (push) Has been cancelled
2026-02-15 01:10:12 +01:00
6 changed files with 119 additions and 11 deletions

View File

@@ -1,4 +1,4 @@
name: Continuous Integration name: Continuous Delivery
on: on:
push: push:
@@ -6,7 +6,7 @@ on:
- "v[0-9]+.[0-9]+.[0-9]+" - "v[0-9]+.[0-9]+.[0-9]+"
jobs: jobs:
build: build_n_upload:
runs-on: linux runs-on: linux
steps: steps:
- name: Git checkout - name: Git checkout
@@ -15,10 +15,12 @@ jobs:
fetch-tags: true fetch-tags: true
- name: Build tarball - name: Build tarball
run: make tarball run: make tarball
env:
GIT_REFERENCE: ${{ github.ref }}
- name: Build rpm package - name: Build rpm package
run: rpmbuild -ba "$(make name).spec" run: rpmbuild -ba "$(make name).spec"
- name: Upload rpm package - name: Upload rpm package
run: make upload run: make upload
env: env:
PACKAGES_USERNAME: ${{ vars.PACKAGES_USERNAME }} GIT_PACKAGES_USERNAME: ${{ vars.GIT_PACKAGES_USERNAME }}
PACKAGES_TOKEN: ${{ secrets.PACKAGES_TOKEN }} GIT_PACKAGES_TOKEN: ${{ secrets.GIT_PACKAGES_TOKEN }}

22
.gitea/workflows/ci.yaml Normal file
View File

@@ -0,0 +1,22 @@
name: Continuous Integration
on:
push:
branches:
- main
jobs:
lint_n_build:
runs-on: linux
steps:
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true
- name: Lint shell scripts
run: shellcheck files/sbin/certbot_renew
- name: Build tarball
run: make tarball
- name: Build rpm file
run: rpmbuild -ba netoik-rp.spec

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
*.swp *.swp
*.env *.env
/.idea

View File

@@ -1,7 +1,7 @@
NAME = netoik-rp NAME = netoik-rp
VERSION = $(shell git describe --always --tags --abbrev=0) VERSION = $(shell git describe --abbrev=0)
RELEASE = $(shell git rev-parse --short HEAD) RELEASE = $(shell git rev-parse --short HEAD)
BRANCH = $(shell git branch --show-current) REFERENCE = $(if $(GIT_REFERENCE),$(GIT_REFERENCE),$(shell git branch --show-current))
BUILD_ARCH = noarch BUILD_ARCH = noarch
RPM_RPMDIR = $(shell rpm --eval '%{_rpmdir}') RPM_RPMDIR = $(shell rpm --eval '%{_rpmdir}')
@@ -41,11 +41,11 @@ $(RPM_TARBALL_PATH): *
--output="$@" \ --output="$@" \
--prefix="$(NAME)-$(VERSION)/" \ --prefix="$(NAME)-$(VERSION)/" \
--verbose \ --verbose \
"$(BRANCH)" "$(REFERENCE)"
.PHONY: tarball .PHONY: tarball
tarball: $(RPM_TARBALL_PATH) tarball: $(RPM_TARBALL_PATH)
.PHONY: upload .PHONY: upload
upload: upload:
curl --fail-with-body --upload-file "$(RPM_BUILD_PATH)" --user "$(PACKAGES_USERNAME):$(PACKAGES_TOKEN)" https://git.netoik.io/api/packages/samuel/rpm/upload curl --fail-with-body --upload-file "$(RPM_BUILD_PATH)" --user "$(GIT_PACKAGES_USERNAME):$(GIT_PACKAGES_TOKEN)" https://git.netoik.io/api/packages/samuel/rpm/upload

View File

@@ -1,3 +1,86 @@
# netoik-rp # Netoïk reverse proxy ![badge](https://git.netoik.io/samuel/netoik-rp/actions/workflows/ci.yaml/badge.svg) ![badge](https://git.netoik.io/samuel/netoik-rp/actions/workflows/cd.yaml/badge.svg)
Netoïk reverse proxy Build an RPM package which will install several tools.
- `Nginx` with:
- ssl settings
- security headers
- default site configuration
- `Certbot` certificates with:
- ovh configuration to renew certs
- a command tool certbot_renew
- a systemctl certbot renew timer
# Development
A `Makefile` is integrated to let you run some basic commands.
- To display some information about the project
```shell
make name
make version
make release
make build_arch
```
- To build a tarball:
```shell
make tarball
```
- To build a rpm package:
```shell
rpmbuild -ba netoik-rp.spec
```
- To upload rpm package to Gitea repository:
```shell
# This command needs 2 env variables:
# GIT_PACKAGES_USERNAME and GIT_PACKAGES_TOKEN
make upload
```
# CI / CD
Two workflows are set up.
- Continuous Integration:
- triggered by each push on branch `main`
- runs shellcheck on script `certbot_renew`
- builds tarball and rpm package to test everything is OK
- Continuous Delivery:
- triggered by each tag pushed
- builds tarball
- builds and uploads rpm package to `Gitea` repository
# Deployment
Security Notes:
- no Continuous Deployment set for security reasons **(1)**
- no GPG signing for security reasons **(1)**
**(1)** Act runner does not have sudo access, which prevents
from deploying via `dnf` and signing via `gpg`
Some commands to deploy the RPM package on server:
```shell
# Add Gitea repo to your repolist
dnf config-manager --add-repo https://git.netoik.io/api/packages/samuel/rpm.repo
# Check Gitea repo is added
dnf repolist | grep gitea-samuel
# Show available package releases
dnf --showduplicates netoik-rp
# Install or upgrade package
dnf --nogpgcheck install netoik-rp
dnf --nogpgcheck upgrade netoik-rp
```

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
sleep $(($RANDOM % 3600)); sleep $((RANDOM % 3600));
/opt/certbot/bin/pip install --upgrade certbot certbot-nginx certbot-dns-ovh /opt/certbot/bin/pip install --upgrade certbot certbot-nginx certbot-dns-ovh
certbot renew --cert-name netoik.io certbot renew --cert-name netoik.io