diff --git a/.forgejo/workflows/almalinux:8.yaml b/.forgejo/workflows/almalinux:8.yaml index 4931810..34df8b8 100644 --- a/.forgejo/workflows/almalinux:8.yaml +++ b/.forgejo/workflows/almalinux:8.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/almalinux:9.yaml b/.forgejo/workflows/almalinux:9.yaml index 596e81f..d510837 100644 --- a/.forgejo/workflows/almalinux:9.yaml +++ b/.forgejo/workflows/almalinux:9.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/alpine:3.18.yaml b/.forgejo/workflows/alpine:3.18.yaml index 9082776..ecf81ce 100644 --- a/.forgejo/workflows/alpine:3.18.yaml +++ b/.forgejo/workflows/alpine:3.18.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/alpine:3.19.yaml b/.forgejo/workflows/alpine:3.19.yaml index 169119c..be34e54 100644 --- a/.forgejo/workflows/alpine:3.19.yaml +++ b/.forgejo/workflows/alpine:3.19.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/archlinux:base-20231112.0.191179.yaml b/.forgejo/workflows/archlinux:base-20231112.0.191179.yaml index 2fb6805..c672ea1 100644 --- a/.forgejo/workflows/archlinux:base-20231112.0.191179.yaml +++ b/.forgejo/workflows/archlinux:base-20231112.0.191179.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/archlinux:base-20240101.0.204074.yaml b/.forgejo/workflows/archlinux:base-20240101.0.204074.yaml index 3442cfd..bac2557 100644 --- a/.forgejo/workflows/archlinux:base-20240101.0.204074.yaml +++ b/.forgejo/workflows/archlinux:base-20240101.0.204074.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/debian:bookworm.yaml b/.forgejo/workflows/debian:bookworm.yaml index 976d9ae..7ac4390 100644 --- a/.forgejo/workflows/debian:bookworm.yaml +++ b/.forgejo/workflows/debian:bookworm.yaml @@ -4,6 +4,7 @@ jobs: container: image: debian:bookworm steps: + - run: pwd && ls -a -l - name: cd env: CD: ${{secrets.cd}} @@ -11,6 +12,6 @@ jobs: - run: cd-list-environment - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace + - run: cd-build-project - run: cd-synchronize out diff --git a/.forgejo/workflows/debian:bullseye.yaml b/.forgejo/workflows/debian:bullseye.yaml index 6a61463..82cf822 100644 --- a/.forgejo/workflows/debian:bullseye.yaml +++ b/.forgejo/workflows/debian:bullseye.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/fedora:39.yaml b/.forgejo/workflows/fedora:39.yaml index 7a21790..0f0a195 100644 --- a/.forgejo/workflows/fedora:39.yaml +++ b/.forgejo/workflows/fedora:39.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/fedora:40.yaml b/.forgejo/workflows/fedora:40.yaml index 04568ed..beb2f0d 100644 --- a/.forgejo/workflows/fedora:40.yaml +++ b/.forgejo/workflows/fedora:40.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/rockylinux:8.yaml b/.forgejo/workflows/rockylinux:8.yaml index 7c002a9..14b52d2 100644 --- a/.forgejo/workflows/rockylinux:8.yaml +++ b/.forgejo/workflows/rockylinux:8.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/rockylinux:9.yaml b/.forgejo/workflows/rockylinux:9.yaml index 66e97ae..a29242e 100644 --- a/.forgejo/workflows/rockylinux:9.yaml +++ b/.forgejo/workflows/rockylinux:9.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/ubuntu:jammy.yaml b/.forgejo/workflows/ubuntu:jammy.yaml index c7b6cb4..ac3ce6d 100644 --- a/.forgejo/workflows/ubuntu:jammy.yaml +++ b/.forgejo/workflows/ubuntu:jammy.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.forgejo/workflows/ubuntu:noble.yaml b/.forgejo/workflows/ubuntu:noble.yaml index 5f487ad..e620719 100644 --- a/.forgejo/workflows/ubuntu:noble.yaml +++ b/.forgejo/workflows/ubuntu:noble.yaml @@ -10,6 +10,4 @@ jobs: run: eval ${{vars.cd}} - run: cd-list-environment - - run: cd-clone-branch - - run: cd-build-project - run: cd-browse-workspace diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8158f14..3de640e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,11 @@ image: debian:bookworm job: script: + - pwd && ls -a -l - source ${CD} - cd-list-environment - cd-clone-branch - - cd-build-project - cd-browse-workspace + - cd-build-project + - cd-synchronize out diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000..e6a0466 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,42 @@ +#! /usr/bin/env bash +FILE="$(realpath "${BASH_SOURCE[0]}")" +ROOT="$(dirname "${FILE}")" + +COMMANDS='cmd' +KEY_ALGORITHM='ed25519' +KEY_DIRECTORY='.ssh' +KEY_PATH="${KEY_DIRECTORY}/id_${KEY_ALGORITHM}" +KEY_PUBLIC='AAAAC3NzaC1lZDI1NTE5AAAAIPHCNcgHlQoiNTXfnUZYvHz9OZwYsmBCrSSV7a7Zche5' +PACKAGES=( +'openssh-client' +'rsync' +'tree' +) +SERVER="$(basename ${GITHUB_SERVER_URL})" +TARGET='/usr/local/sbin' + +# commands +cd "${ROOT}/${COMMANDS}" \ +|| exit +for file in *.sh ; do + cp "${file}" "${TARGET}/${file%.sh}" \ + || exit +done + +# ssh +cd \ +|| exit +mkdir "${KEY_DIRECTORY}" \ +|| exit +echo "${CD}" > "${KEY_PATH}" \ +|| exit +unset CD +chmod '400' "${KEY_PATH}" \ +|| exit +echo "${SERVER} ssh-${KEY_ALGORITHM} ${KEY_PUBLIC}" \ +> "${KEY_DIRECTORY}/known_hosts" \ +|| exit + +# packages +apt-get install --yes "${PACKAGES[@]}" \ +|| exit diff --git a/cd.sh b/cd.sh index 9c9639c..f4c9886 100644 --- a/cd.sh +++ b/cd.sh @@ -29,10 +29,6 @@ cd_main () { cd_upgrade_packages cd_install_git cd_install_python - # TODO move to Python - cd_install_rsync - # TODO move to Python - cd_install_ssh cd_clean_packages_cache cd_install_python_modules ${CD_PYTHON_MODULES} cd_execute_python_module ${CD_PYTHON_MODULES} @@ -112,8 +108,6 @@ cd_set_environment_variables () { CD_DNS_FILE="/etc/resolv.conf" CD_PKG_CA="ca-certificates" CD_PKG_GIT="git" - # TODO move to Python - CD_PKG_RSYNC="rsync" CD_PYTHON_ALIAS="python3" cd_split cd_echo "CD_DNS_FILE" "CD_PKG_CA" "CD_PKG_GIT" "CD_PYTHON_ALIAS" @@ -355,13 +349,6 @@ Dir::Etc::SourceParts \"\"; "CD_PROJECTS_GROUP" "CD_PROJECT_NAME" "CD_PROJECT_BRANCH" cd_split cd_echo "CD_PROJECTS_URL" "CD_PROJECT_URL" - # TODO move to Python - case "${CD_PM}" in - "${CD_PM_APK}"|"${CD_PM_APT}") CD_PKG_SSH="openssh-client" ;; - "${CD_PM_DNF}") CD_PKG_SSH="openssh-clients" ;; - "${CD_PM_PACMAN}") CD_PKG_SSH="openssh" ;; - ;; - esac } cd_set_packages_repositories () { @@ -515,18 +502,6 @@ cd_install_python () { cd_ln_python "${CD_PYTHON_COMMAND}" } -# TODO move to Python -cd_install_rsync () { - cd_step "Install Rsync" - cd_install_package "${CD_PKG_RSYNC}" -} - -# TODO move to Python -cd_install_ssh () { - cd_step "Install SSH" - cd_install_package "${CD_PKG_SSH}" -} - cd_clean_packages_cache () { cd_step "Clean packages cache" ${CD_PM_CLEAN} || exit diff --git a/cd/__init__.py b/cd/__init__.py index ac39077..8f2bf6e 100644 --- a/cd/__init__.py +++ b/cd/__init__.py @@ -2,7 +2,6 @@ import os from cd.project import Project from cd.projects import Projects -from rwx import fs from rwx import ps COMMANDS_PREFIX = 'cd-' @@ -51,7 +50,7 @@ def cd_clone_branch(): def cd_list_environment(): - for variable, value in sorted(projects.environment.items()): + for variable, value in sorted(os.environ.items()): print(variable, '=', value) @@ -65,25 +64,3 @@ def install_commands(path): ]: print(command) os.symlink(path, os.path.join(user, f'{COMMANDS_PREFIX}{command}')) - - -def set_ssh(): - ssh_hosts = projects.environment.get('CD_SSH_HOSTS', None) - ssh_key = projects.environment.get('CD', None) - ssh_type = projects.environment.get('CD_SSH_TYPE', 'ed25519') - # - home = os.path.expanduser('~') - # - ssh = os.path.join(home, '.ssh') - os.makedirs(ssh, exist_ok=True) - os.chmod(ssh, 0o700) - # - key = os.path.join(ssh, f'id_{ssh_type}') - if ssh_key: - fs.write(key, ssh_key) - os.chmod(key, 0o400) - # - known = os.path.join(ssh, 'known_hosts') - if ssh_hosts: - fs.write(known, ssh_hosts) - os.chmod(known, 0o400) diff --git a/cd/__main__.py b/cd/__main__.py index ba1ca17..c93b684 100755 --- a/cd/__main__.py +++ b/cd/__main__.py @@ -10,7 +10,6 @@ if __name__ == '__main__': command, *arguments = sys.argv command = os.path.basename(command) if command == '__main__.py': - cd.set_ssh() cd.install_commands(__file__) else: command = command.replace('-', '_') diff --git a/readme.md b/readme.md index 2492ead..556a91f 100644 --- a/readme.md +++ b/readme.md @@ -41,8 +41,6 @@ from various CA, CI, OCI / OS. |:--------------|:------------------------| | CD_CA_n | Numbered CA certificate | | CD_DNS | Space separated servers | -| CD_SSH_HOSTS | domain.tld ssh-type pub | -| CD_SSH_TYPE | SSH private key type | | CD_URL_ALMA | Alma repository URL | | CD_URL_ALPINE | Alpine repository URL | | CD_URL_ARCH | Arch repository URL |