327
Sept. 11, 2022, 6:48 p.m.
Шпаргалка по github action
Задача: реализовать простой цикл CI/CD
Предположим, что в репозитории есть Dockerfile с всеми зависимостями и по наступлению события (планировщик или обновление), производить переcборку контейнера, отправку его в hub.docker.com и его дальнейшее развертывание на сервере через ssh.
Пример файла workflow
name: CI\CD_webmail
on:
schedule:
- cron: '16 6 * * *'
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build_and_pub:
runs-on: [ubuntu-latest]
env:
LOGIN: ${{ secrets.DOCKER_LOGIN }}
NAME: ${{ secrets.DOCKER_NAME }}
steps:
- name: Login to docker
run: echo ${{ secrets.DOCKER_TOKEN }} | docker login -u ${{ secrets.DOCKER_LOGIN }} --password-stdin
- uses: actions/checkout@master
- name: Build image
run: docker build -t $LOGIN/$NAME:${GITHUB_REF:11} -f Dockerfile .
- name: Push image to docker
run: docker push $LOGIN/$NAME:${GITHUB_REF:11}
deploy:
environment: stage
runs-on: ubuntu-latest
needs: build_and_pub
steps:
- name: Deploy to own srv via SSH action
uses: appleboy/[email protected]
with:
host: ${{ secrets.SSH_HOST }}
username: root
key: ${{ secrets.SSH_PRIVATE_KEY }}
envs: IMAGE_NAME,REGISTRY,GITHUB_SHA,CONTAINER_NAME
script:
#Если это кибернетис kubectl rollout restart deploy hello
#Если докер docker pull hello:latest docker-compose restart
Настройка сервера
cd ~/.ssh
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Парольную фразу на ключ ставить НЕ нужно.
cat id_rsa.pub >> ~/.ssh/authorized_keys
Далее можно настроить политику сервера ssh