- .github/workflows/<workflow_name>.yml
- Бесплатно для открытых репозиториев
- Есть Экшены - готовые скрипты
- Подходит для различных учебных и пет-проектов
Пример Github Actions для проекта на Laravel (PHP)
name: PHP CI
on:
- push
- pull_request
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
- name: Install
run: make install
- name: Run linter
run: make lint
- name: Run test & publish code coverage
uses: paambaati/[email protected]
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
with:
coverageCommand: make test-coverage
coverageLocations: ${{github.workplace}}/build/logs/clover.xml:clover
debug: true
https://github.com/Hexlet/hexlet-sicp https://github.com/Hexlet/hexlet-cv/blob/master/.github/workflows/push.yml https://github.com/hexlet-boilerplates/php-package/blob/master/.github/workflows/workflow.yml
- Конфиг для CI берется из .gitlab-ci.yml
- Позволяет использовать шаблоны
- Можно развернуть на своей инфраструктуре
Код справа и изображение выше не связаны между собой
default:
image: docker/compose:debian-1.29.1
services:
- docker:dind
variables:
COMPOSE_PROJECT_NAME: xsolla-summer-school-backend-2021-ci
COMPOSE_FILE: docker-compose.yml
stages:
- build
- deploy
build:
stage: build
script:
- docker-compose build
- docker-compose run app make setup
- docker-compose up --abort-on-container-exit
deploy:
stage: deploy
dependencies:
- build
when: on_success
only:
- master
script:
- echo "RUN DEPLOY"
https://gitlab.com/feycot/xsolla-summer-school-backend-2021
- A/B testing - деление трафика по определенному признаку
- Shadow - дублирование трафика на новую версию без влияния на основное приложение
- Могут возникнуть сложности - например задвоение платежных запросов
- Shared hosting - хостинги с веб-панелькой с предустановленным софтом
- Clouds - облачные провайдеры и выделенные сервера
- Github Pages - подойдет для статики и документации.
- Surge.sh и тд - для документации и статики. Эта презентация задеплоена на surge.sh :)
- Remote server - железный сервер, который находится где-то удаленно или под столом админа
- PaaS, serverless - типа Heroku. Максимально далеко уходим от администрирования.
-
Бесплатно для маленьких проектов
-
Можно подключить домен
-
Можно подключить базу, редис и тд
-
CLI для управления приложением
-
Можно автоматизировать деплой, добавив в CI-скрипт шаг с деплоем на хероку.
-
Heroku может интегрироваться с Github, тогда будет автодеплой по коммиту в нужной ветке (коммит должен быть в Github)
- Создание чистых или преднастроенных машин (С докером, приложениями)
- Создание базы данных, кластеров Kubernetes
- Парковка домена
- При регистрации по ссылке выдают 100$ на 60 дней
- Достаточно простой интерфейс и тарификация. Можно создать приложение по типу как в Heroku (но стоит это дороже), вместо ручной конфигурации сервера
Альтернативы DO: Amazom Web Services, Linode и другие облачные провайдеры