-appleboy/scp-action #20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: go ci-cd | |
| on: | |
| push: | |
| branches: | |
| - main # Запускать пайплайн при пуше в ветку main | |
| workflow_dispatch: | |
| jobs: | |
| tests: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| - name: Set up Go | |
| uses: actions/setup-go@v4 | |
| with: | |
| go-version: '1.22' # Указываем версию Go | |
| - name: Run port check (+install JQ) | |
| run: | | |
| sudo apt-get install -y jq # Установка зависимости для работы с JSON | |
| chmod +x tests/port_check.sh # Даем права на выполнение скрипта | |
| ./tests/port_check.sh # Запускаем скрипт проверки портов | |
| - name: Run tests | |
| run: | | |
| cd go/ | |
| go test -v | |
| deploy: | |
| runs-on: ubuntu-latest | |
| needs: tests | |
| env: | |
| REMOTE_DIR: "/tmp/ans" | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| - name: Resolve DNS | |
| run: | | |
| echo "Проверка DNS:" | |
| nslookup ${{ secrets.SERVER_DNS }} | |
| - name: Create remote directory # Создаем директорию на сервере | |
| uses: appleboy/ssh-action@v1 | |
| with: | |
| host: ${{ secrets.SERVER_DNS }} | |
| username: deployer | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| script: | | |
| mkdir -p ${{ env.REMOTE_DIR }} # -p гарантирует создание вложенных путей | |
| chmod 755 ${{ env.REMOTE_DIR }} # Выставляем корректные права | |
| - name: Copy files to server | |
| run: | | |
| scp -o StrictHostKeyChecking=no \ | |
| -i ${{ secrets.SSH_PRIVATE_KEY }} \ | |
| deploy-docker.yml ansible.cfg \ | |
| deployer@${{ secrets.SERVER_DNS }}:${{ env.REMOTE_DIR }} | |
| - name: executing remote ssh commands using key | |
| uses: appleboy/ssh-action@v1 | |
| with: | |
| host: ${{ secrets.SERVER_DNS }} | |
| username: deployer | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| script: | | |
| sudo apt update && \ | |
| { dpkg -s ansible &> /dev/null && sudo apt install --only-upgrade -y ansible || sudo apt install -y ansible; } | |
| ANSIBLE_CONFIG=${{ env.REMOTE_DIR }}/ansible.cfg ansible-playbook ${{ env.REMOTE_DIR }}/deploy-docker.yml | |
| # Хочу запустить ansible-playbook | |
| # Для этого надо: | |
| # 0. Подключиться к серверу - uses: appleboy/ssh-action@v1 - готово | |
| # 1. установить/проверить ansible на сервере - внутри пункта 0 - готово | |
| # 2. Передать плейбук и его конфиг на сервер - через scp или новый шаг? | |
| # 3. Запустить плейбук - | |
| # | |
| # | |
| # | |
| # | |
| # |