Skip to content
Snippets Groups Projects
Unverified Commit 2a5e4139 authored by Jonas Stoehr's avatar Jonas Stoehr Committed by GitHub
Browse files

Merge pull request #61 from JonasProgrammer/devops/github-actions-ci

devops(ci): added basic GitHub Actions
parents 55964bfe 31c30702
No related branches found
No related tags found
No related merge requests found
name: Go-CI
on:
push:
branches: [ master ]
tags: [ '**' ]
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
lint:
name: lint
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: golangci-lint
uses: golangci/golangci-lint-action@v2
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16
- name: Build
run: go build -v ./...
release:
runs-on: ubuntu-20.04
needs: [ lint, build ]
if: ${{ startsWith(github.ref, 'refs/tags/') && contains(fromJSON('["mxschmitt", "JonasProgrammer"]'), github.actor) }}
steps:
- uses: actions/checkout@v2
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
builds:
- goos:
- darwin
- linux
- windows
goarch:
- amd64
env:
- CGO_ENABLED=0
# Builds the docker-machine-driver-hetzner and releases it, if the build is a tag
# (due to the deploy.on.tags=true below).
#
# To make it work, create and encrypt an OAuth token for the Github API as follows:
# (1) Go to https://github.com/settings/tokens and create a new private token
# with scope "public_repo".
# (2) Convert the token into a Travis secret as described at
# https://docs.travis-ci.com/user/encryption-keys/:
# * (assuming you are on a shell with the current working directory being
# inside a local working copy of your Github project)
# * gem install travis
# * travis encypt <the token created in step (1)>
# * add the secure: "<encrypted token>" to the travis.yml file as a key
# below the api_key
language: go
go:
- stable
env:
global:
- GO111MODULE=on
- CGO_ENABLED=0
before_deploy:
# Create binaries for many OSs and architures as tarballs.
# the -osarch="!a/b !c/d" option is used to exclude OS-arch pairs
# a/b and c/d from the build. OS-arch pairs might e.g. be excluded
# they failed to build.
- go get github.com/mitchellh/gox
- mkdir releases
- gox -osarch='!netbsd/arm !openbsd/386 !openbsd/amd64 !netbsd/386 !netbsd/amd64 !darwin/386' -output="releases/{{.Dir}}_`git describe --tags --abbrev=0`_{{.OS}}_{{.Arch}}/{{.Dir}}" -ldflags "-X main.Version=`git describe --tags --abbrev=0`"
# Loop through the built architecture directories and create their corresponding tar.gz archives with the binary in it.
- find releases -maxdepth 2 -mindepth 2 -type f -exec bash -c 'tar -cvzf "$(dirname {}).tar.gz" -C "$(dirname {})" $(basename {})' \;
deploy:
# See https://docs.travis-ci.com/user/deployment/releases/
provider: releases
api_key:
secure: "Hnpq64pZL+CFaaqjQfxdAHWK3Hk+9F6CgzjaIo3K9puNAySsA1XVQHsqCV4P9v6hE5o3TjgQJZwpqLN/h53JPeZ1xwybj6sVyWwzQzNr99QGJH6Pr7g3mgVIIHyzy+4VqQ9Kw9PoNZEnq3y7wupNCjI+vN6WYWT9+gpMr4CsMyn3KEnpGREGgg964wMrBTdYoQxgNGLJtAkYwnHdYyVQaEA/9KZZUFhU8JwF0RzkBcXwgOzt9UhR9R7WgA+N2yLDFjlhmRtyTYsd2/4PX2FcsoEdUAAQBMBgw1fzBaIbUuhpT2/iNhQGs+ln/DHFPb5mUzG+JKDPEfdAAcT+h4tmIeND8gmKIspMAKsqXXZxkmi4PjobLE+rG0cUkMmnP879+ECB0buH4L8Aaxae0dMeURLxxfWhr7ytR4P93uC8KcSXrzXkx1BgqT6BasTxrxvdQQJUOCYtdWKV3w+ZsVi9YSvIoQTEL7Hy0F120mWTLYDtqtGr+VjdptUAwIi/ft8vniRimTV582Ry3v2gIstt9Wauyou8O+SA85wqpxCFJZNWX/2z8PhpHF02658ZLWpycHfwRjILwHl1c6THIyA56IZffj+8Y0yntbsFBm5nnrgGaStH/ln/N/ykWy80QzZlLfSZ2AkBC0m1qctebixmE4ekR+rF/z1mCIcRhrTaErM="
file_glob: true # enables wildcards in file names
file: "releases/*.tar.gz"
skip_cleanup: true
on:
tags: true
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment