From f0a737a13858f74daed69ea8b1360da7b4d41827 Mon Sep 17 00:00:00 2001 From: "MH.Dmitrii" Date: Sun, 1 Mar 2026 14:49:55 +0300 Subject: [PATCH] feature ci/cd test 0.0046 --- .gitea/workflows/ci.yml | 33 +++++++++++++++++-- .gitignore | 1 + ansible/deploy.yml | 27 ++++++++++----- ansible/env_example | 3 -- ansible/inventory.ini | 2 -- ansible/inventory_example | 2 ++ ansible/secrets_example | 1 + docker/gitea_runners/node-ansible.yaml | 12 +++++++ .../{docker-compose.yaml => node-docker.yaml} | 2 +- 9 files changed, 66 insertions(+), 17 deletions(-) delete mode 100644 ansible/env_example delete mode 100644 ansible/inventory.ini create mode 100644 ansible/inventory_example create mode 100644 ansible/secrets_example create mode 100644 docker/gitea_runners/node-ansible.yaml rename docker/gitea_runners/{docker-compose.yaml => node-docker.yaml} (84%) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 20d2483..ec92256 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -3,15 +3,42 @@ on: push: branches: - main + jobs: + deploy: + runs-on: node-ansible + steps: + - name: Setup SSH key + run: | + echo "${{ secrets.SSH_PRIVATE_KEY }}" > /tmp/id_rsa + chmod 600 /tmp/id_rsa + + - name: Install Ansible collection + run: ansible-galaxy collection install community.docker + + - name: Create inventory + run: echo "${{ secrets.INVENTORY }}" > inventory.ini + + - name: Create secrets.yml + run: echo "${{ secrets.SECRETS }}" > secrets.yml + + - name: Create .env file + run: echo "${{ secrets.WEDDING_SITE_ENV }}" > .env + + - name: Run Ansible playbook + run: ansible-playbook -i inventory.ini deploy.yml -e @secrets.yml + env: + ANSIBLE_PRIVATE_KEY_FILE: /tmp/id_rsa + build: runs-on: node-docker + needs: deploy steps: - uses: actions/checkout@v4 - name: Create .env file - run: | - echo "${{ secrets.WEDDING_SITE_ENV }}" > .env + run: echo "${{ secrets.WEDDING_SITE_ENV }}" > .env - name: Build image run: docker build -t back:latest -f docker/dockerfile . - name: Start docker-compose - run: docker compose --env-file .env -f docker/docker-compose.yaml up -d \ No newline at end of file + run: docker compose --env-file .env -f docker/docker-compose.yaml up -d + \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1b4d44e..48e9c9b 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ hint.py #env *.env +secrets.yml #db *.db versions/ diff --git a/ansible/deploy.yml b/ansible/deploy.yml index f992933..c6bc001 100644 --- a/ansible/deploy.yml +++ b/ansible/deploy.yml @@ -1,10 +1,20 @@ - hosts: servers become: yes + vars: + env_file: .env tasks: - name: Install Docker - shell: curl -fsSL https://get.docker.com | sh - args: - creates: /usr/bin/docker + apt: + name: docker-compose + state: present + update_cache: yes + - name: Copy .env to remote + copy: + src: "{{ env_file }}" + dest: /opt/infra/.env + owner: root + group: root + mode: '0600' - name: Install git apt: @@ -14,10 +24,11 @@ - name: Clone repo git: - repo: ${GITEA_INSTANCE_URL} //как то передавать переменные + repo: "{{ gitea_instance_url }}" dest: /opt/infra - - name: Start docker compose - shell: docker compose up -d - args: - chdir: /opt/infra \ No newline at end of file + - name: Start docker compose via module + community.docker.docker_compose: + project_src: /opt/infra + state: present + restarted: true \ No newline at end of file diff --git a/ansible/env_example b/ansible/env_example deleted file mode 100644 index c6a7679..0000000 --- a/ansible/env_example +++ /dev/null @@ -1,3 +0,0 @@ -ansible-playbook -i inventory.ini deploy.yml -e "target_host=$HOST" -GITEA_INSTANCE_URL="..." -HOST="..." \ No newline at end of file diff --git a/ansible/inventory.ini b/ansible/inventory.ini deleted file mode 100644 index 5fc5b08..0000000 --- a/ansible/inventory.ini +++ /dev/null @@ -1,2 +0,0 @@ -[servers] -myserver ansible_user=root \ No newline at end of file diff --git a/ansible/inventory_example b/ansible/inventory_example new file mode 100644 index 0000000..a66718e --- /dev/null +++ b/ansible/inventory_example @@ -0,0 +1,2 @@ +[servers] +myserver host=... ansible_user=... \ No newline at end of file diff --git a/ansible/secrets_example b/ansible/secrets_example new file mode 100644 index 0000000..82df564 --- /dev/null +++ b/ansible/secrets_example @@ -0,0 +1 @@ +gitea_instance_url: ... \ No newline at end of file diff --git a/docker/gitea_runners/node-ansible.yaml b/docker/gitea_runners/node-ansible.yaml new file mode 100644 index 0000000..a5ad237 --- /dev/null +++ b/docker/gitea_runners/node-ansible.yaml @@ -0,0 +1,12 @@ +services: + runner: + image: gitea/act_runner:latest + restart: always + volumes: + - ./data/act_runner:/data + - /var/run/docker.sock:/var/run/docker.sock + environment: + - GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL} + - GITEA_RUNNER_REGISTRATION_TOKEN=${TOKEN} + - GITEA_RUNNER_NAME=docker-runner + - GITEA_RUNNER_LABELS=node-ansible:docker://homyakspace/wedding-ansible:${TAG} \ No newline at end of file diff --git a/docker/gitea_runners/docker-compose.yaml b/docker/gitea_runners/node-docker.yaml similarity index 84% rename from docker/gitea_runners/docker-compose.yaml rename to docker/gitea_runners/node-docker.yaml index 4a58671..874f440 100644 --- a/docker/gitea_runners/docker-compose.yaml +++ b/docker/gitea_runners/node-docker.yaml @@ -9,4 +9,4 @@ services: - GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL} - GITEA_RUNNER_REGISTRATION_TOKEN=${TOKEN} - GITEA_RUNNER_NAME=docker-runner - - GITEA_RUNNER_LABELS=node-docker:docker://homyakspace/wedding:${TAG}, node-ansible:docker://homyakspace/wedding-ansible:${TAG} \ No newline at end of file + - GITEA_RUNNER_LABELS=node-docker:docker://homyakspace/wedding:${TAG} \ No newline at end of file