Compare commits
12
Commits
2ee40cf989
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c06165bc3b | ||
|
|
804f84ecad | ||
|
|
445527f05a | ||
|
|
90646f74de | ||
|
|
9bf23d55d0 | ||
|
|
e587346267 | ||
|
|
f83da9ab69 | ||
|
|
a50d63fadd | ||
|
|
665f05af14 | ||
|
|
dfdcd15a89 | ||
|
|
80d8142b58 | ||
|
|
485eb08da7 |
No files matched your search
@@ -1,5 +1,6 @@
|
|||||||
.git/
|
.git/
|
||||||
.github/
|
.github/
|
||||||
|
.forgejo/
|
||||||
.idea/
|
.idea/
|
||||||
.venv/
|
.venv/
|
||||||
shell.nix
|
shell.nix
|
||||||
|
|||||||
@@ -0,0 +1,95 @@
|
|||||||
|
name: Build, Test and Push Flask App
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker-build-and-push:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Docker CLI
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y docker.io
|
||||||
|
docker --version
|
||||||
|
|
||||||
|
- name: Configure Docker CLI for insecure registry
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.docker
|
||||||
|
echo '{"insecure-registries" : ["git.rustprogersteam.ru"]}' > ~/.docker/config.json
|
||||||
|
cat ~/.docker/config.json
|
||||||
|
|
||||||
|
- name: 'Docker Tags'
|
||||||
|
id: tags
|
||||||
|
uses: https://github.com/cssnr/docker-tags-action@v2
|
||||||
|
with:
|
||||||
|
images: 'git.rustprogersteam.ru/${{ vars.DOCKER_USERNAME }}/myresume'
|
||||||
|
|
||||||
|
- name: Login to Docker Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: git.rustprogersteam.ru
|
||||||
|
username: ${{ vars.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build and push Docker image
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
git.rustprogersteam.ru/${{ vars.DOCKER_USERNAME }}/myresume/resume:latest
|
||||||
|
git.rustprogersteam.ru/${{ vars.DOCKER_USERNAME }}/myresume/resume:${{ github.sha }}
|
||||||
|
labels: ${{ steps.tags.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
needs: docker-build-and-push
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Ansible
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y ansible openssh-client
|
||||||
|
|
||||||
|
- name: Set up SSH key
|
||||||
|
env:
|
||||||
|
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ssh
|
||||||
|
printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/deploy_key
|
||||||
|
chmod 600 ~/.ssh/deploy_key
|
||||||
|
ssh-keygen -y -f ~/.ssh/deploy_key >/dev/null
|
||||||
|
|
||||||
|
- name: Trust server host key
|
||||||
|
run: |
|
||||||
|
ssh-keyscan -H "${{ secrets.SERVER_IP }}" >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
|
- name: Test SSH
|
||||||
|
run: |
|
||||||
|
ssh \
|
||||||
|
-i ~/.ssh/deploy_key \
|
||||||
|
-o StrictHostKeyChecking=yes \
|
||||||
|
"${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}" \
|
||||||
|
'echo SSH works'
|
||||||
|
|
||||||
|
- name: Run Ansible playbook
|
||||||
|
run: |
|
||||||
|
ansible-playbook \
|
||||||
|
-i "${{ secrets.SERVER_IP }}," \
|
||||||
|
ansible/restart_compose.yml \
|
||||||
|
--user "${{ secrets.SERVER_USER }}" \
|
||||||
|
--private-key ~/.ssh/deploy_key
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
name: Build and Push to GHCR
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "main" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "main" ]
|
||||||
|
|
||||||
|
env:
|
||||||
|
REGISTRY: ghcr.io
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-push:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write # обязательно для отправки в ghcr
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Convert repository name to lowercase
|
||||||
|
run: |
|
||||||
|
echo "IMAGE_NAME=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Log in to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build and push Docker image
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
||||||
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
|
||||||
Binary file not shown.
@@ -0,0 +1,15 @@
|
|||||||
|
- name: Restart Docker Compose services
|
||||||
|
hosts: all
|
||||||
|
# become: yes # <-- больше не нужно, т.к. пользователь уже имеет права Docker
|
||||||
|
tasks:
|
||||||
|
- name: docker compose down
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: docker compose down
|
||||||
|
chdir: /etc/compose/resume
|
||||||
|
- name: prune system
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: docker system prune -a -f
|
||||||
|
- name: docker compose up -d
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: docker compose up -d
|
||||||
|
chdir: /etc/compose/resume
|
||||||
@@ -1,3 +1,2 @@
|
|||||||
flask==3.1.2
|
flask==3.1.2
|
||||||
loguru
|
|
||||||
gunicorn
|
gunicorn
|
||||||
BIN
Binary file not shown.
@@ -14,10 +14,6 @@ pkgs.mkShell {
|
|||||||
|
|
||||||
source .venv/bin/activate
|
source .venv/bin/activate
|
||||||
|
|
||||||
if [ -f "requirements-dev.txt" ]; then
|
|
||||||
pip install -r requirements-dev.txt
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "dependencies.txt" ]; then
|
if [ -f "dependencies.txt" ]; then
|
||||||
pip install -r dependencies.txt
|
pip install -r dependencies.txt
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -237,6 +237,30 @@ h1 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Проекты */
|
||||||
|
.project-item {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
padding: 15px;
|
||||||
|
background-color: rgba(249, 128, 45, 0.05);
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-item:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-title {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--primary);
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-links {
|
||||||
|
margin-top: 8px;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
/* Футер */
|
/* Футер */
|
||||||
.footer {
|
.footer {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|||||||
+78
-48
@@ -22,9 +22,7 @@
|
|||||||
|
|
||||||
<div class="info-section">
|
<div class="info-section">
|
||||||
<h1>Ремизов Кирилл Львович</h1>
|
<h1>Ремизов Кирилл Львович</h1>
|
||||||
<div class="subtitle">Интересующее направление: SRE/DevOps инженер</div>
|
<div class="subtitle">SRE/DevOps инженер</div>
|
||||||
|
|
||||||
<p>Студент 3 курса ННГУ им. Лобачевского по направлению "Программная инженерия" (Средний бал: 3,85). Стремлюсь к профессиональному росту: изучаю новые технологии, алгоритмы и подходы к разработке. Как молодой специалист, подхожу к работе с энтузиазмом и готов вкладываться в сложные проекты.</p>
|
|
||||||
|
|
||||||
<div class="contacts">
|
<div class="contacts">
|
||||||
<div class="contact-item">
|
<div class="contact-item">
|
||||||
@@ -94,7 +92,10 @@
|
|||||||
<i class="fas fa-trophy"></i>
|
<i class="fas fa-trophy"></i>
|
||||||
<span>Достижения</span>
|
<span>Достижения</span>
|
||||||
</div>
|
</div>
|
||||||
<p><strong>2025</strong> Участие в хакатоне от IT-холдинга Т1, 3-е место.</p>
|
<ul class="list">
|
||||||
|
<li><strong>2025</strong> — участие в хакатоне от IT-холдинга Т1, 3-е место. <a href="https://disk.rustprogersteam.ru/shr/kvpwutpbt7tt/%D0%A21_%D0%9A%D0%BE%D0%B4_%D0%9C%D0%B0%D1%80%D1%82_Certificate_2025_04_13_17_33_29_145Z_1_compressed.pdf" target="_blank">Сертификат</a></li>
|
||||||
|
<li><strong>2026</strong> — успешное завершение ИТ-марафона Кейс Лаб по направлению «Облачные сервисы» (18 мая – 29 июня 2026). <a href="https://disk.rustprogersteam.ru/shr/890gdowwch0y/%D0%A0%D0%B5%D0%BC%D0%B8%D0%B7%D0%BE%D0%B2%20%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%20%D0%9B%D1%8C%D0%B2%D0%BE%D0%B2%D0%B8%D1%87.pdf" target="_blank">Сертификат</a></li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Языки -->
|
<!-- Языки -->
|
||||||
@@ -135,8 +136,8 @@
|
|||||||
|
|
||||||
<div class="skill-item">
|
<div class="skill-item">
|
||||||
<div class="skill-header">
|
<div class="skill-header">
|
||||||
<span>C++</span>
|
<span>Linux</span>
|
||||||
<span>5/5</span>
|
<span>продвинутый</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="skill-bar">
|
<div class="skill-bar">
|
||||||
<div class="skill-level" style="width: 100%;"></div>
|
<div class="skill-level" style="width: 100%;"></div>
|
||||||
@@ -145,8 +146,18 @@
|
|||||||
|
|
||||||
<div class="skill-item">
|
<div class="skill-item">
|
||||||
<div class="skill-header">
|
<div class="skill-header">
|
||||||
<span>Rust</span>
|
<span>Docker / Docker Compose</span>
|
||||||
<span>4/5</span>
|
<span>продвинутый</span>
|
||||||
|
</div>
|
||||||
|
<div class="skill-bar">
|
||||||
|
<div class="skill-level" style="width: 100%;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="skill-item">
|
||||||
|
<div class="skill-header">
|
||||||
|
<span>Ansible</span>
|
||||||
|
<span>уверенный</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="skill-bar">
|
<div class="skill-bar">
|
||||||
<div class="skill-level" style="width: 80%;"></div>
|
<div class="skill-level" style="width: 80%;"></div>
|
||||||
@@ -155,18 +166,38 @@
|
|||||||
|
|
||||||
<div class="skill-item">
|
<div class="skill-item">
|
||||||
<div class="skill-header">
|
<div class="skill-header">
|
||||||
<span>SQL</span>
|
<span>Terraform</span>
|
||||||
<span>3/5</span>
|
<span>уверенный</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="skill-bar">
|
<div class="skill-bar">
|
||||||
<div class="skill-level" style="width: 60%;"></div>
|
<div class="skill-level" style="width: 80%;"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="skill-item">
|
<div class="skill-item">
|
||||||
<div class="skill-header">
|
<div class="skill-header">
|
||||||
<span>Python</span>
|
<span>Git</span>
|
||||||
<span>2/5</span>
|
<span>уверенный</span>
|
||||||
|
</div>
|
||||||
|
<div class="skill-bar">
|
||||||
|
<div class="skill-level" style="width: 80%;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="skill-item">
|
||||||
|
<div class="skill-header">
|
||||||
|
<span>GitHub Actions</span>
|
||||||
|
<span>уверенный</span>
|
||||||
|
</div>
|
||||||
|
<div class="skill-bar">
|
||||||
|
<div class="skill-level" style="width: 80%;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="skill-item">
|
||||||
|
<div class="skill-header">
|
||||||
|
<span>Bash</span>
|
||||||
|
<span>основы</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="skill-bar">
|
<div class="skill-bar">
|
||||||
<div class="skill-level" style="width: 40%;"></div>
|
<div class="skill-level" style="width: 40%;"></div>
|
||||||
@@ -175,65 +206,64 @@
|
|||||||
|
|
||||||
<div class="skill-item">
|
<div class="skill-item">
|
||||||
<div class="skill-header">
|
<div class="skill-header">
|
||||||
<span>CI/CD</span>
|
<span>Python</span>
|
||||||
<span>5/5</span>
|
<span>основы</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="skill-bar">
|
<div class="skill-bar">
|
||||||
<div class="skill-level" style="width: 100%;"></div>
|
<div class="skill-level" style="width: 40%;"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="skill-item">
|
<div class="skill-item">
|
||||||
<div class="skill-header">
|
<div class="skill-header">
|
||||||
<span>Linux</span>
|
<span>Kubernetes</span>
|
||||||
<span>5/5</span>
|
<span>основы</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="skill-bar">
|
<div class="skill-bar">
|
||||||
<div class="skill-level" style="width: 100%;"></div>
|
<div class="skill-level" style="width: 40%;"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="skill-item">
|
<div class="skill-item">
|
||||||
<div class="skill-header">
|
<div class="skill-header">
|
||||||
<span>Docker</span>
|
<span>Argo CD</span>
|
||||||
<span>5/5</span>
|
<span>основы</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="skill-bar">
|
<div class="skill-bar">
|
||||||
<div class="skill-level" style="width: 100%;"></div>
|
<div class="skill-level" style="width: 40%;"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<p style="color: var(--text-muted); margin-top: 10px;"><strong>Дополнительно:</strong> понимание архитектуры сети и безопасности, работа с терминалом, Vim, *nix-системы.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Профессиональные навыки -->
|
<!-- Проекты -->
|
||||||
<div class="card">
|
|
||||||
<div class="card-title">
|
|
||||||
<i class="fas fa-tools"></i>
|
|
||||||
<span>Профессиональные навыки</span>
|
|
||||||
</div>
|
|
||||||
<div class="two-column-list">
|
|
||||||
<ul class="list">
|
|
||||||
<li>Работа с терминалом</li>
|
|
||||||
<li>Vim</li>
|
|
||||||
<li>Docker</li>
|
|
||||||
</ul>
|
|
||||||
<ul class="list">
|
|
||||||
<li>Kubernetes</li>
|
|
||||||
<li>*nix системы</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Ссылка на репозиторий -->
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-title">
|
<div class="card-title">
|
||||||
<i class="fas fa-code-branch"></i>
|
<i class="fas fa-code-branch"></i>
|
||||||
<span>Репозиторий проекта</span>
|
<span>Проекты</span>
|
||||||
|
</div>
|
||||||
|
<div class="project-item">
|
||||||
|
<div class="project-title">Terraform (IaC)</div>
|
||||||
|
<p>Автоматизация развёртывания инфраструктуры, инфраструктура как код.</p>
|
||||||
|
<div class="project-links">
|
||||||
|
<a href="https://github.com/BlackCorbeau/final_assessment" target="_blank"><i class="fab fa-github"></i> github.com/BlackCorbeau/final_assessment</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="project-item">
|
||||||
|
<div class="project-title">Argo CD (GitOps)</div>
|
||||||
|
<p>GitOps-доставка и синхронизация приложений в Kubernetes.</p>
|
||||||
|
<div class="project-links">
|
||||||
|
<a href="https://github.com/BlackCorbeau/lab4" target="_blank"><i class="fab fa-github"></i> github.com/BlackCorbeau/lab4</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="project-item">
|
||||||
|
<div class="project-title">Ansible + Docker</div>
|
||||||
|
<p>Конфигурация серверов Ansible и контейнеризация приложений с Docker (исходный код резюме).</p>
|
||||||
|
<div class="project-links">
|
||||||
|
<a href="https://git.rustprogersteam.ru/Black_Raven/MyResume" target="_blank"><i class="fab fa-git-alt"></i> git.rustprogersteam.ru/Black_Raven/MyResume</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p>Исходный код этого резюме доступны в репозитории:</p>
|
|
||||||
<a href="https://git.rustprogersteam.ru/Black_Raven/MyResume" target="_blank" class="repo-link">
|
|
||||||
<i class="fab fa-git-alt"></i>
|
|
||||||
<span>https://git.rustprogersteam.ru/Black_Raven/MyResume</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in new issue
Block a user