Github actions (#3299)

* Move CI to github actions

Signed-off-by: Jan Fajerski <jfajersk@redhat.com>

* Skip email test in github action

Signed-off-by: Jan Fajerski <jfajersk@redhat.com>

* build before lint

Signed-off-by: Jan Fajerski <jfajersk@redhat.com>

---------

Signed-off-by: Jan Fajerski <jfajersk@redhat.com>
This commit is contained in:
Jan Fajerski 2023-09-21 18:22:17 +02:00 committed by GitHub
parent 5a462df83a
commit b517645d95
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 137 additions and 0 deletions

30
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,30 @@
---
name: CI
on: # yamllint disable-line rule:truthy
pull_request:
workflow_call:
jobs:
test_frontend:
name: Test alertmanager frontend
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: make clean
- run: make all
working-directory: ./ui/app
- run: make assets
- run: make apiv2
- run: git diff --exit-code
test:
name: Test
runs-on: ubuntu-latest
# Whenever the Go version is updated here, .promu.yml
# should also be updated.
container:
image: quay.io/prometheus/golang-builder:1.19-base
steps:
- uses: actions/checkout@v3
- uses: prometheus/promci@v0.0.2
- uses: ./.github/promci/actions/setup_environment
- run: make

27
.github/workflows/golangci-lint.yml vendored Normal file
View File

@ -0,0 +1,27 @@
name: golangci-lint
on:
pull_request:
paths:
- "go.sum"
- "go.mod"
- "**.go"
- "scripts/errcheck_excludes.txt"
- ".github/workflows/golangci-lint.yml"
- ".golangci.yml"
jobs:
golangci:
name: lint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: install Go
uses: actions/setup-go@v2
with:
go-version: 1.19.x
- run: make build
- name: Lint
uses: golangci/golangci-lint-action@v3.4.0
with:
version: v1.51.2

22
.github/workflows/mixin.yml vendored Normal file
View File

@ -0,0 +1,22 @@
name: mixin
on:
pull_request:
paths:
- "doc/alertmanager-mixin/**"
jobs:
mixin:
name: mixin-lint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: install Go
uses: actions/setup-go@v2
with:
go-version: 1.19.x
# pin the mixtool version until https://github.com/monitoring-mixins/mixtool/issues/135 is merged.
- run: go install github.com/monitoring-mixins/mixtool/cmd/mixtool@2282201396b69055bb0f92f187049027a16d2130
- run: go install github.com/google/go-jsonnet/cmd/jsonnetfmt@latest
- run: go install github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest
- run: make -C doc/alertmanager-mixin lint

24
.github/workflows/publish.yml vendored Normal file
View File

@ -0,0 +1,24 @@
---
name: Publish
on: # yamllint disable-line rule:truthy
push:
branches:
- main
jobs:
ci:
name: Run ci
uses: ./.github/workflows/ci.yml
publish_main:
name: Publish main branch artefacts
runs-on: ubuntu-latest
needs: ci
steps:
- uses: actions/checkout@v3
- uses: prometheus/promci@v0.0.2
- uses: ./.github/promci/actions/publish_main
with:
docker_hub_login: ${{ secrets.docker_hub_login }}
docker_hub_password: ${{ secrets.docker_hub_password }}
quay_io_login: ${{ secrets.quay_io_login }}
quay_io_password: ${{ secrets.quay_io_password }}

25
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,25 @@
---
name: Release
on: # yamllint disable-line rule:truthy
push:
tags:
- v*
jobs:
ci:
name: Run ci
uses: ./.github/workflows/ci.yml
publish_release:
name: Publish release arfefacts
runs-on: ubuntu-latest
needs: ci
steps:
- uses: actions/checkout@v3
- uses: prometheus/promci@v0.0.2
- uses: ./.github/promci/actions/publish_release
with:
docker_hub_login: ${{ secrets.docker_hub_login }}
docker_hub_password: ${{ secrets.docker_hub_password }}
quay_io_login: ${{ secrets.quay_io_login }}
quay_io_password: ${{ secrets.quay_io_password }}
github_token: ${{ secrets.PROMBOT_GITHUB_TOKEN }}

1
.gitignore vendored
View File

@ -20,3 +20,4 @@
!/.travis.yml !/.travis.yml
!/.promu.yml !/.promu.yml
!/api/v2/openapi.yaml !/api/v2/openapi.yaml
!.github/workflows/*.yml

View File

@ -78,3 +78,11 @@ clean:
template/email.tmpl \ template/email.tmpl \
api/v2/models api/v2/restapi api/v2/client api/v2/models api/v2/restapi api/v2/client
- @cd $(FRONTEND_DIR) && $(MAKE) clean - @cd $(FRONTEND_DIR) && $(MAKE) clean
# In github actions we skip the email test for now. Service containers in github
# actions currently have a bug, see https://github.com/prometheus/alertmanager/pull/3299
# So define a test target, that skips the email test for now.
.PHONY: test
test: $(GOTEST_DIR)
@echo ">> running all tests, except notify/email"
$(GOTEST) $(test-flags) $(GOOPTS) `go list ./... | grep -v notify/email`