Compare commits

...

28 commits

Author SHA1 Message Date
Marc Beninca d92eac13fa
ubuntu
Some checks failed
/ job (push) Failing after 2m1s
2024-05-04 23:47:31 +02:00
Marc Beninca 0f8834a050
github 2024-05-04 22:57:17 +02:00
Marc Beninca 8503de4555
wip/redhat 2024-05-04 22:51:23 +02:00
Marc Beninca 1652a1545b
wip/pkgconf 2024-05-04 22:36:30 +02:00
Marc Beninca 1b5ef403c7
wip/pkg 2024-05-04 22:20:41 +02:00
Marc Beninca 7c0908b120
wip/todo 2024-05-04 21:39:20 +02:00
Marc Beninca cea7709998
sed/cat 2024-05-04 21:34:10 +02:00
Marc Beninca 2ac9ad2ff2
duplicate 2024-05-04 20:38:46 +02:00
Marc Beninca bd78de879a
wip/python 2024-05-04 20:35:29 +02:00
Marc Beninca f9b39eeb15
wip/url 2024-05-04 20:17:46 +02:00
Marc Beninca 87a9a73f6c
defaults 2024-05-04 19:43:35 +02:00
Marc Beninca 53923ea1f0
wip/url 2024-05-04 19:33:07 +02:00
Marc Beninca 033b2b8493
wip/python 2024-05-04 18:54:24 +02:00
Marc Beninca 0470fa8de8
wip/versions 2024-05-04 18:27:32 +02:00
Marc Beninca 0c17f026ea
wip/conf,https 2024-05-04 18:16:12 +02:00
Marc Beninca 61c2ab7f7f
wip/todo 2024-05-04 18:00:01 +02:00
Marc Beninca 1181e2411f
wip/clean,install,update,upgrade 2024-05-04 17:54:04 +02:00
Marc Beninca 7688ea0221
wip/shared 2024-05-04 17:50:43 +02:00
Marc Beninca db70b8fbbf
wip/shared 2024-05-04 17:47:07 +02:00
Marc Beninca 7d4538b523
wip/universal 2024-05-04 17:37:32 +02:00
Marc Beninca fb2ccf9cbc
ubuntu 2024-05-04 17:30:35 +02:00
Marc Beninca 3a5350654d
rockylinux 2024-05-04 17:28:26 +02:00
Marc Beninca dcd919e8a8
wip/os 2024-05-04 17:25:36 +02:00
Marc Beninca a70fa248c0
wip/rocky,ubuntu 2024-05-04 17:12:08 +02:00
Marc Beninca 1d29cdf637
readme/rocky,ubuntu 2024-05-04 17:10:35 +02:00
Marc Beninca 1f1cd59e19
wip/common 2024-05-04 17:10:00 +02:00
Marc Beninca ccd9464329
universal 2024-05-04 16:30:40 +02:00
Marc Beninca b0e45d5ec3
cd_ca 2024-05-04 16:23:02 +02:00
6 changed files with 256 additions and 91 deletions

View file

@ -0,0 +1,13 @@
on: [push]
jobs:
job:
container:
image: rockylinux:8
steps:
- name: cd
env:
CD: ${{secrets.cd}}
run: eval ${{vars.cd}}
- run: cd-list-environment
- run: cd-browse-workspace

View file

@ -0,0 +1,13 @@
on: [push]
jobs:
job:
container:
image: rockylinux:9
steps:
- name: cd
env:
CD: ${{secrets.cd}}
run: eval ${{vars.cd}}
- run: cd-list-environment
- run: cd-browse-workspace

View file

@ -0,0 +1,13 @@
on: [push]
jobs:
job:
container:
image: ubuntu:mantic
steps:
- name: cd
env:
CD: ${{secrets.cd}}
run: eval ${{vars.cd}}
- run: cd-list-environment
- run: cd-browse-workspace

View file

@ -0,0 +1,13 @@
on: [push]
jobs:
job:
container:
image: ubuntu:noble
steps:
- name: cd
env:
CD: ${{secrets.cd}}
run: eval ${{vars.cd}}
- run: cd-list-environment
- run: cd-browse-workspace

268
cd.sh
View file

@ -4,9 +4,6 @@
CD_DEFAULT_DNS="\
9.9.9.9 \
"
CD_DEFAULT_REPO_ALMA="https://repo.almalinux.org/almalinux"
CD_DEFAULT_REPO_ALPINE="https://dl-cdn.alpinelinux.org/alpine"
CD_DEFAULT_REPO_DEBIAN="https://deb.debian.org/debian"
CD_PYTHON_MODULES="\
cd \
@ -17,9 +14,9 @@ rwx \
cd_main () {
cd_set_environment_variables
cd_set_packages_repositories
cd_set_packages_configuration
#
cd_list_working_directory
cd_set_packages_configuration
cd_set_https_verification_off
cd_set_dns_resolving
cd_update_packages_catalog
@ -41,40 +38,78 @@ cd_main () {
cd_set_environment_variables () {
cd_step "Set environment variables"
#
[ "${CD_CA_1}" ] && CD_CA=true
#
case "$(cd_grep_os ID)" in
"almalinux")
CD_OS_ID="${CD_OS_ALMA}"
# operating system
CD_OS_ID="$(cd_grep_os ID)"
case "${CD_OS_ID}" in
"almalinux") CD_OS_ID="${CD_OS_ALMA}" ;;
"alpine") CD_OS_ID="${CD_OS_ALPINE}" ;;
"debian") CD_OS_ID="${CD_OS_DEBIAN}" ;;
"rocky") CD_OS_ID="${CD_OS_ROCKY}" ;;
"ubuntu") CD_OS_ID="${CD_OS_UBUNTU}" ;;
*) cd_error_os "CD_OS_ID" ;;
esac
case "${CD_OS_ID}" in
"${CD_OS_DEBIAN}"|"${CD_OS_UBUNTU}")
CD_OS_VERSION="$(cd_grep_os VERSION_CODENAME)"
;;
"${CD_OS_ALMA}"|"${CD_OS_ROCKY}")
CD_OS_VERSION=$(cd_grep_os VERSION_ID \
| sed "s|^\([0-9]\+\)\..*|\1|")
;;
"alpine")
CD_OS_ID="${CD_OS_ALPINE}"
"${CD_OS_ALPINE}")
CD_OS_VERSION=$(cd_grep_os VERSION_ID \
| sed "s|^\([0-9]\+\.[0-9]\+\)\..*|\1|")
;;
"debian")
CD_OS_ID="${CD_OS_DEBIAN}"
CD_OS_VERSION="$(cd_grep_os VERSION_CODENAME)"
;;
esac
#
CD_DNS_FILE="/etc/resolv.conf"
CD_PKG_CA="ca-certificates"
CD_PKG_GIT="git"
#
case "${CD_OS_ID}" in
"${CD_OS_ALMA}")
CD_OS_REPO="${CD_DEFAULT_REPO_ALMA}"
[ "${CD_REPO_ALMA}" ] && CD_OS_REPO="${CD_REPO_ALMA}"
"${CD_OS_ALMA}"|"${CD_OS_ROCKY}")
case "${CD_OS_VERSION}" in
"8"|"9") ;;
*) cd_error_os "CD_OS_VERSION" ;;
esac
;;
"${CD_OS_ALPINE}")
case "${CD_OS_VERSION}" in
"3.18"|"3.19") ;;
*) cd_error_os "CD_OS_VERSION" ;;
esac
;;
"${CD_OS_DEBIAN}")
case "${CD_OS_VERSION}" in
"bookworm"|"bullseye") ;;
*) cd_error_os "CD_OS_VERSION" ;;
esac
;;
"${CD_OS_UBUNTU}")
case "${CD_OS_VERSION}" in
"noble"|"mantic") ;;
*) cd_error_os "CD_OS_VERSION" ;;
esac
;;
esac
cd_echo "CD_OS_ID" "CD_OS_VERSION"
# universal
CD_DNS_FILE="/etc/resolv.conf"
CD_PKG_CA="ca-certificates"
CD_PKG_GIT="git"
cd_split
cd_echo "CD_DNS_FILE" "CD_PKG_CA" "CD_PKG_GIT"
# shared
case "${CD_OS_ID}" in
"${CD_OS_ALMA}"|"${CD_OS_ROCKY}")
CD_CA_ROOT="/etc/pki/ca-trust/source/anchors"
CD_CMD_CA="update-ca-trust"
;;
"${CD_OS_ALPINE}"|"${CD_OS_DEBIAN}"|"${CD_OS_UBUNTU}")
CD_CA_ROOT="/usr/local/share/ca-certificates"
CD_CMD_CA="update-ca-certificates"
;;
esac
cd_split
cd_echo "CD_CA_ROOT" "CD_CMD_CA"
# common
case "${CD_OS_ID}" in
"${CD_OS_ALMA}"|"${CD_OS_ROCKY}")
CD_CMD_CLEAN="dnf clean all"
CD_CMD_INSTALL="dnf install --assumeyes"
CD_CMD_UPDATE="dnf makecache"
@ -91,19 +126,8 @@ skip_if_unavailable=False
"
CD_PM_HTTPS_PATH="/etc/dnf/dnf.conf.d/https.conf"
CD_PM_HTTPS_TEXT="sslverify=False"
CD_PYTHON_COMMAND="python3.11"
CD_PYTHON_PACKAGE="python3.11"
CD_PYTHON_PACKAGES="/usr/lib64/python3.11/site-packages"
;;
"${CD_OS_ALPINE}")
CD_OS_REPO="${CD_DEFAULT_REPO_ALPINE}"
[ "${CD_REPO_ALPINE}" ] && CD_OS_REPO="${CD_REPO_ALPINE}"
case "${CD_OS_VERSION}" in
"3.18"|"3.19") ;;
*) cd_error_os "CD_OS_VERSION" ;;
esac
CD_CA_ROOT="/usr/local/share/ca-certificates"
CD_CMD_CA="update-ca-certificates"
CD_CMD_CLEAN="apk cache purge"
CD_CMD_INSTALL="apk add"
CD_CMD_UPDATE="apk update"
@ -113,22 +137,8 @@ skip_if_unavailable=False
CD_PM_CONF_TEXT=""
CD_PM_HTTPS_PATH="/etc/apk/repositories.d/https"
CD_PM_HTTPS_TEXT="--no-verify"
CD_PYTHON_COMMAND="python3.11"
CD_PYTHON_PACKAGE="python3"
CD_PYTHON_PACKAGES="/usr/lib/python3.11/site-packages"
;;
"${CD_OS_DEBIAN}")
export DEBIAN_FRONTEND="noninteractive"
#
CD_OS_REPO="${CD_DEFAULT_REPO_DEBIAN}"
[ "${CD_REPO_DEBIAN}" ] && CD_OS_REPO="${CD_REPO_DEBIAN}"
case "${CD_OS_VERSION}" in
"bookworm") CD_PYTHON_COMMAND="python3.11" ;;
"bullseye") CD_PYTHON_COMMAND="python3.9" ;;
*) cd_error_os "CD_OS_VERSION" ;;
esac
CD_CA_ROOT="/usr/local/share/ca-certificates"
CD_CMD_CA="update-ca-certificates"
"${CD_OS_DEBIAN}"|"${CD_OS_UBUNTU}")
CD_CMD_CLEAN="apt-get clean"
CD_CMD_INSTALL="apt-get install --assume-yes"
CD_CMD_UPDATE="apt-get update"
@ -144,14 +154,89 @@ Dir::Etc::SourceParts \"\";
"
CD_PM_HTTPS_PATH="/etc/apt/apt.conf.d/https"
CD_PM_HTTPS_TEXT="Acquire::https::Verify-Peer False;"
;;
esac
cd_split
cd_echo "CD_CMD_CLEAN" "CD_CMD_INSTALL" "CD_CMD_UPDATE" "CD_CMD_UPGRADE"
cd_split
cd_echo "CD_PKG_PKG" "CD_PM_CONF_PATH" "CD_PM_HTTPS_PATH"
# specific
case "${CD_OS_ID}" in
"${CD_OS_ALMA}")
CD_URL_DEFAULT="https://repo.almalinux.org/almalinux"
;;
"${CD_OS_ALPINE}")
CD_URL_DEFAULT="https://dl-cdn.alpinelinux.org/alpine"
;;
"${CD_OS_DEBIAN}")
CD_URL_DEFAULT="http://deb.debian.org/debian"
;;
"${CD_OS_ROCKY}")
CD_URL_DEFAULT="http://dl.rockylinux.org/\$contentdir"
;;
"${CD_OS_UBUNTU}")
CD_URL_DEFAULT="http://archive.ubuntu.com/ubuntu"
;;
esac
CD_URL_CHOSEN="${CD_URL_DEFAULT}"
case "${CD_OS_ID}" in
"${CD_OS_ALMA}")
[ "${CD_URL_ALMA}" ] && CD_URL_CHOSEN="${CD_URL_ALMA}"
;;
"${CD_OS_ALPINE}")
[ "${CD_URL_ALPINE}" ] && CD_URL_CHOSEN="${CD_URL_ALPINE}"
;;
"${CD_OS_DEBIAN}")
[ "${CD_URL_DEBIAN}" ] && CD_URL_CHOSEN="${CD_URL_DEBIAN}" \
|| CD_URL_CHOSEN="https://deb.debian.org/debian"
;;
"${CD_OS_ROCKY}")
[ "${CD_URL_ROCKY}" ] && CD_URL_CHOSEN="${CD_URL_ROCKY}" \
|| CD_URL_CHOSEN="https://dl.rockylinux.org/\$contentdir"
;;
"${CD_OS_UBUNTU}")
[ "${CD_URL_UBUNTU}" ] && CD_URL_CHOSEN="${CD_URL_UBUNTU}" \
|| CD_URL_CHOSEN="https://ubuntu.mirrors.ovh.net/ubuntu"
;;
esac
cd_split
cd_echo "CD_URL_DEFAULT" "CD_URL_CHOSEN"
# python
case "${CD_OS_ID}" in
"${CD_OS_ALMA}"|"${CD_OS_ROCKY}")
CD_PYTHON_COMMAND="python3.11"
CD_PYTHON_PACKAGE="python3.11"
CD_PYTHON_PACKAGES="/usr/lib64/python3.11/site-packages"
;;
"${CD_OS_ALPINE}")
CD_PYTHON_COMMAND="python3.11"
CD_PYTHON_PACKAGE="python3"
CD_PYTHON_PACKAGES="/usr/lib/python3.11/site-packages"
;;
"${CD_OS_DEBIAN}")
case "${CD_OS_VERSION}" in
"bookworm") CD_PYTHON_COMMAND="python3.11" ;;
"bullseye") CD_PYTHON_COMMAND="python3.9" ;;
esac
CD_PYTHON_PACKAGE="python3"
CD_PYTHON_PACKAGES="/usr/lib/python3/dist-packages"
;;
"${CD_OS_UBUNTU}")
case "${CD_OS_VERSION}" in
"noble") CD_PYTHON_COMMAND="python3.12" ;;
"mantic") CD_PYTHON_COMMAND="python3.11" ;;
esac
CD_PYTHON_PACKAGE="python3"
CD_PYTHON_PACKAGES="/usr/lib/python3/dist-packages"
;;
*) cd_error_os "CD_OS_ID" ;;
esac
cd_split
cd_echo "CD_PYTHON_COMMAND" "CD_PYTHON_PACKAGE" "CD_PYTHON_PACKAGES"
# variables
[ "${CD_CA_1}" ] && CD_CA=true
# continuous integration platform
if [ "${GITHUB_ACTIONS}" ] ; then
# forgejo / gitea / github
# github → gitea → forgejo
CD_SERVER_URL="${GITHUB_SERVER_URL}"
CD_PROJECTS_GROUP="$(dirname "${GITHUB_REPOSITORY}")"
CD_PROJECT_NAME="$(basename "${GITHUB_REPOSITORY}")"
@ -166,7 +251,6 @@ Dir::Etc::SourceParts \"\";
# unsupported
cd_error_ci "ø"
fi
#
[ "${CD_SERVER_URL}" ] || cd_error_ci "CD_SERVER_URL"
[ "${CD_PROJECTS_GROUP}" ] || cd_error_ci "CD_PROJECTS_GROUP"
[ "${CD_PROJECT_NAME}" ] || cd_error_ci "CD_PROJECT_NAME"
@ -175,20 +259,8 @@ Dir::Etc::SourceParts \"\";
CD_PROJECTS_URL="${CD_SERVER_URL}/${CD_PROJECTS_GROUP}"
CD_PROJECT_URL="${CD_PROJECTS_URL}/${CD_PROJECT_NAME}"
#
cd_echo "CD_CA" "CD_CA_ROOT"
cd_split
cd_echo "CD_OS_ID" "CD_OS_VERSION"
cd_split
cd_echo "CD_CMD_CA" \
"CD_CMD_CLEAN" "CD_CMD_INSTALL" "CD_CMD_UPDATE" "CD_CMD_UPGRADE"
cd_split
cd_echo "CD_DNS_FILE"
cd_split
cd_echo "CD_PKG_CA" "CD_PKG_GIT" "CD_PKG_PKG"
cd_split
cd_echo "CD_PM_CONF_PATH" "CD_PM_HTTPS_PATH"
cd_split
cd_echo "CD_PYTHON_COMMAND" "CD_PYTHON_PACKAGE" "CD_PYTHON_PACKAGES"
cd_echo "CD_CA"
cd_split
cd_echo "CD_SERVER_URL" \
"CD_PROJECTS_GROUP" "CD_PROJECT_NAME" "CD_PROJECT_BRANCH"
@ -202,29 +274,60 @@ local file
cd_step "Set packages repositories"
case "${CD_OS_ID}" in
"${CD_OS_ALMA}")
file="/etc/yum.repos.d/almalinux.repo"
case "${CD_OS_VERSION}" in
"8") file="/etc/yum.repos.d/almalinux.repo" ;;
"9") file="/etc/yum.repos.d/almalinux-baseos.repo" ;;
esac
cd_sed "${file}" \
"|^mirrorlist|# mirrorlist|" \
"|${CD_DEFAULT_REPO_ALMA}|${CD_OS_REPO}|" \
"|${CD_DEFAULT_REPO_ALMA}|${CD_URL_CHOSEN}|" \
"|^# baseurl|baseurl|"
cd_cat "${file}"
;;
"${CD_OS_ALPINE}")
file="/etc/apk/repositories"
cd_write "${file}" "\
${CD_OS_REPO}/v${CD_OS_VERSION}/main
${CD_OS_REPO}/v${CD_OS_VERSION}/community
${CD_URL_CHOSEN}/v${CD_OS_VERSION}/main
${CD_URL_CHOSEN}/v${CD_OS_VERSION}/community
"
;;
"${CD_OS_DEBIAN}")
file="/etc/apt/sources.list"
cd_write "${file}" "\
deb ${CD_OS_REPO} ${CD_OS_VERSION} main
deb ${CD_OS_REPO} ${CD_OS_VERSION}-backports main
deb ${CD_OS_REPO} ${CD_OS_VERSION}-updates main
deb ${CD_OS_REPO}-security ${CD_OS_VERSION}-security main
deb ${CD_URL_CHOSEN} ${CD_OS_VERSION} main
deb ${CD_URL_CHOSEN} ${CD_OS_VERSION}-backports main
deb ${CD_URL_CHOSEN} ${CD_OS_VERSION}-updates main
deb ${CD_URL_CHOSEN}-security ${CD_OS_VERSION}-security main
"
;;
"${CD_OS_ROCKY}")
case "${CD_OS_VERSION}" in
"8") file="/etc/yum.repos.d/Rocky-BaseOS.repo" ;;
"9") file="/etc/yum.repos.d/rocky.repo" ;;
esac
cd_sed "${file}" \
"|^mirrorlist|# mirrorlist|" \
"|${CD_DEFAULT_REPO_ALMA}|${CD_URL_CHOSEN}|" \
"|^#baseurl|baseurl|"
;;
"${CD_OS_UBUNTU}")
file="/etc/apt/sources.list"
cd_write "${file}" "\
deb ${CD_URL_CHOSEN} ${CD_OS_VERSION} main
deb ${CD_URL_CHOSEN} ${CD_OS_VERSION}-backports main
deb ${CD_URL_CHOSEN} ${CD_OS_VERSION}-updates main
deb ${CD_URL_CHOSEN} ${CD_OS_VERSION}-security main
"
;;
esac
}
cd_set_packages_configuration () {
cd_step "Set packages configuration"
cd_write "${CD_PM_CONF_PATH}" "${CD_PM_CONF_TEXT}"
case "${CD_OS_ID}" in
"${CD_OS_DEBIAN}"|"${CD_OS_UBUNTU}")
export DEBIAN_FRONTEND="noninteractive"
;;
esac
}
@ -235,12 +338,8 @@ cd_list_working_directory () {
cd_ls "."
}
cd_set_packages_configuration () {
cd_step "Set packages configuration"
cd_write "${CD_PM_CONF_PATH}" "${CD_PM_CONF_TEXT}"
}
cd_set_https_verification_off () {
# TODO
if [ "${CD_CA}" -o "${CD_OS_ID}" = "${CD_OS_DEBIAN}" ] ; then
cd_step "Set HTTPS verification off"
cd_mkdir "$(dirname "${CD_PM_HTTPS_PATH}")"
@ -300,10 +399,8 @@ cd_update_ca_certificates () {
}
cd_set_https_verification_on () {
if [ "${CD_CA}" -o "${CD_OS_ID}" = "${CD_OS_DEBIAN}" ] ; then
cd_step "Set HTTPS verification on"
cd_rm "${CD_PM_HTTPS_PATH}"
fi
cd_step "Set HTTPS verification on"
cd_rm "${CD_PM_HTTPS_PATH}"
}
cd_upgrade_packages () {
@ -461,6 +558,7 @@ local file
for expression in "${@}" ; do
sed --in-place "s${expression}g" "${file}" || exit
done
cd_cat "${file}"
fi
}
@ -500,6 +598,8 @@ CD_ERROR_OS=1
CD_OS_ALMA="alma"
CD_OS_ALPINE="alpine"
CD_OS_DEBIAN="debian"
CD_OS_ROCKY="rocky"
CD_OS_UBUNTU="ubuntu"
# run
cd_main

View file

@ -11,9 +11,20 @@ from various CA, CI, OCI / OS.
* [X] known CA certificates
* [ ] Operating Systems
* [X] Alma
* [X] 9
* [X] 8
* [X] Alpine
* [X] 3.19
* [X] 3.18
* [X] Debian
* [X] Bookworm
* [X] Bullseye
* [ ] Rocky
* [ ] 9
* [ ] 8
* [ ] Ubuntu
* [ ] Noble
* [ ] Mantic
* [ ] Continuous Integration platforms
* [X] GitHub → Gitea → ForgeJo
* [X] GitLab
@ -21,13 +32,15 @@ from various CA, CI, OCI / OS.
## How
| Variable | Description |
|:---------------|:------------------------|
| CD_CA_n | Numbered CA certificate |
| CD_DNS | Space separated servers |
| CD_REPO_ALMA | Alma repository URL |
| CD_REPO_ALPINE | Alpine repository URL |
| CD_REPO_DEBIAN | Debian repository URL |
| Variable | Description |
|:--------------|:------------------------|
| CD_CA_n | Numbered CA certificate |
| CD_DNS | Space separated servers |
| CD_URL_ALMA | Alma repository URL |
| CD_URL_ALPINE | Alpine repository URL |
| CD_URL_DEBIAN | Debian repository URL |
| CD_URL_ROCKY | Rocky repository URL |
| CD_URL_UBUNTU | Ubuntu repository URL |
## Tasks