No name

Links

GitHub
Шпаргалка по github action

Шпаргалка по github action


visibility216 2022-09-11 18:48:35
Задача: реализовать простой цикл 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


Источники:
1) Deploying to a server via SSH and Rsync in a Github Action
2) SSH авторизация по ключу в Debian

http://wiki.pro-voip.ru/debian/ssh-avtorizatsiya-po-klyuchu.html

Back