GoProg

 
Топ хэштегов


Архив

GitHub Actions — это CI/CD система, интегрированная в GitHub. Сервис бесплатен для открытых проектов, и даже для закрытых, если ваши билды собираются не слишком долго и/или не слишком часто. Более экшенс обеспечивают очень простой способ для конвейеров GitOps, так как вам не нужен дополнительный инструмент CI/CD. Вы можете просто создать или использовать существующие GitHub Actions и настроить его на запуск при каждом обновлении определенной ветви.

GitHub Actions определяются с использованием workflow, которые можно создавать в виде yaml-файлов в вашем репозитории в папке .github/workflows или с помощью пользовательского интерфейса и меню Actions. Пример ci.yaml для сервиса на языке Go ниже:

on: [push, pull_request]
name: test
jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        go-version: [1.15.x]
        platform: [ubuntu-latest]
    runs-on: ${{ matrix.platform }}
    steps:
    - name: Install Go
      uses: actions/setup-go@v2
      with:
        go-version: ${{ matrix.go-version }}
    - name: Checkout code
      uses: actions/checkout@v2
    - name: Run tests
      run: go test -v ./... -covermode=count -coverprofile=coverage.out -coverpkg=./...
    - name: Send coverage
      if: "matrix.platform == 'ubuntu-latest'"
      env:
        COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      run: |
        GO111MODULE=off go get github.com/mattn/goveralls
        $(go env GOPATH)/bin/goveralls -coverprofile=coverage.out -service=github

В данном примере запускается test, когда происходит push или случается pull request. В качестве версии языка Go используется 1.15.x, а в качестве операционной системы образ ubuntu-lastest. При необходимости список версия и ОС можно расширить. Тогда тесты работать для всей матрицы.

В steps описываем все выполняемые шаги. В нашем случае, сначала устанавливает Go, после чего делаем checkout репозитория, далее запускает тесты и вычисляет покрытие ими кода, а результаты публикуем на coveralls.io

Кроме этого для вашего проекта можно добавить бейджик с состоянием успешного выполнения экшена, включив в README.md следующий фрагмент с заменой username и project на свои значения:

![test](https://github.com/<username>/<project>/workflows/test/badge.svg)

Само собой разумеется, GitHub Actions можно использовать не только для прогона тестов, но также и для сборки релизов, автоматического деплоя на прод, да и вообще чего пожелаете. Главное это делать аккуратно. Подробности ищите в официальной документации сервиса.

#CI #cicd #continuousintegration #github #githubactions #Go #IT



Новый комментарий: