| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- ---
-
- name: CI
-
- permissions:
- actions: read
- checks: read
- contents: read
- deployments: read
- issues: read
- discussions: read
- pull-requests: read
- repository-projects: read
- security-events: read
- statuses: read
-
- on:
- push:
- tags:
- - v*
- branches:
- - master
- - stable
- - v1
- release:
- types:
- - published
- - released
- pull_request:
- types:
- - opened
- - edited
- - reopened
- - synchronize
- - ready_for_review
-
- jobs:
- test:
- name: Test
- runs-on: ubuntu-latest
- timeout-minutes: 5
- strategy:
- matrix:
- go_version:
- - ^1.17
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- with:
- submodules: recursive
-
- - name: Setup Go
- uses: actions/setup-go@v2
- with:
- go-version: ${{ matrix.go_version }}
-
- - name: Cache dependencies
- uses: actions/cache@v2
- with:
- path: ~/go/pkg/mod
- key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
- restore-keys: ${{ runner.os }}-go-
-
- - name: Run tests
- run: go test -coverprofile=./coverage.txt -covermode=atomic -v ./...
-
- - name: Collect coverage
- uses: codecov/codecov-action@v1
- with:
- file: ./coverage.txt
-
- lint:
- name: Lint
- runs-on: ubuntu-latest
- timeout-minutes: 5
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- with:
- submodules: recursive
-
- - name: Run linter
- uses: golangci/golangci-lint-action@v2
- with:
- version: v1.44.2
-
- docker:
- name: Docker
- runs-on: ubuntu-latest
- timeout-minutes: 20
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- with:
- submodules: recursive
-
- - name: Get Docker meta
- id: docker_meta
- uses: crazy-max/ghaction-docker-meta@v1
- with:
- images: nineseconds/mtg,ghcr.io/9seconds/mtg
- tag-semver: "{{version}},{{major}},{{major}}.{{minor}}"
-
- - name: Setup QEMU
- uses: docker/setup-qemu-action@v1
-
- - name: Setup BuildX
- uses: docker/setup-buildx-action@v1
-
- - name: Setup cache
- uses: actions/cache@v2
- with:
- path: /tmp/buildx-cache
- key: ${{ runner.os }}-buildx-${{ github.sha }}
- restore-keys: |
- ${{ runner.os }}-buildx-
-
- - name: Login to DockerHub
- if: github.event_name != 'pull_request'
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_PASSWORD }}
-
- - name: Login to GHCR.io
- if: github.event_name != 'pull_request'
- uses: docker/login-action@v1
- with:
- registry: ghcr.io
- username: ${{ github.repository_owner }}
- password: ${{ secrets.GH_PAT }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- pull: true
- context: .
- platforms: linux/amd64,linux/arm64,linux/386,linux/arm/v7,linux/arm/v6
- push: ${{ github.event_name != 'pull_request' }}
- tags: ${{ steps.docker_meta.outputs.tags }}
- labels: ${{ steps.docker_meta.outputs.labels }}
- cache-from: type=local,src=/tmp/buildx-cache
- cache-to: type=local,dest=/tmp/buildx-cache
|