Skip to content

Commit

Permalink
chore: use GitHub Actions.
Browse files Browse the repository at this point in the history
  • Loading branch information
ldez committed Dec 5, 2020
1 parent 9378a1e commit 6516f0a
Show file tree
Hide file tree
Showing 8 changed files with 155 additions and 69 deletions.
45 changes: 45 additions & 0 deletions .github/workflows/go-cross.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Go Matrix
on: [push, pull_request]

jobs:

cross:
name: Go
runs-on: ${{ matrix.os }}
env:
CGO_ENABLED: 0

strategy:
matrix:
go-version: [ 1.14, 1.15, 1.x ]
os: [ubuntu-latest, macos-latest, windows-latest]

steps:
# https://github.com/marketplace/actions/setup-go-environment
- name: Set up Go ${{ matrix.go-version }}
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go-version }}

# https://github.com/marketplace/actions/checkout
- name: Checkout code
uses: actions/checkout@v2

# https://github.com/marketplace/actions/cache
- name: Cache Go modules
uses: actions/cache@v2
with:
path: |
~/go/pkg/mod # Module download cache
~/.cache/go-build # Build cache (Linux)
~/Library/Caches/go-build # Build cache (Mac)
'%LocalAppData%\go-build' # Build cache (Windows)
key: ${{ runner.os }}-${{ matrix.go-version }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-${{ matrix.go-version }}-go-
- name: Test
run: go test -v -cover ./...

- name: Build
run: go build -v -ldflags "-s -w" -trimpath
81 changes: 81 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Main

on:
push:
branches:
- master
tags:
- v*
pull_request:

jobs:

main:
name: Main Process
runs-on: ubuntu-latest
env:
GO_VERSION: 1.15
GOLANGCI_LINT_VERSION: v1.33.0
SEIHON_VERSION: v0.5.1
CGO_ENABLED: 0

steps:

# https://github.com/marketplace/actions/setup-go-environment
- name: Set up Go ${{ env.GO_VERSION }}
uses: actions/setup-go@v2
with:
go-version: ${{ env.GO_VERSION }}

# https://github.com/marketplace/actions/checkout
- name: Check out code
uses: actions/checkout@v2
with:
fetch-depth: 0

# https://github.com/marketplace/actions/cache
- name: Cache Go modules
uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Check and get dependencies
run: |
go mod tidy
git diff --exit-code go.mod
git diff --exit-code go.sum
go mod download
# https://golangci-lint.run/usage/install#other-ci
- name: Install golangci-lint ${{ env.GOLANGCI_LINT_VERSION }}
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin ${GOLANGCI_LINT_VERSION}
golangci-lint --version
- name: Make
run: make

- name: Make Image
run: make image

# Install Docker image multi-arch builder
- name: Install seihon ${{ env.SEIHON_VERSION }}
if: startsWith(github.ref, 'refs/tags/v')
run: |
curl -sSfL https://raw.githubusercontent.com/ldez/seihon/master/godownloader.sh | sh -s -- -b $(go env GOPATH)/bin ${SEIHON_VERSION}
seihon --version
- name: Docker Login
if: startsWith(github.ref, 'refs/tags/v')
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: |
echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
- name: Deploy Docker Images (seihon)
if: startsWith(github.ref, 'refs/tags/v')
run: make publish-images
8 changes: 7 additions & 1 deletion .golangci.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,14 @@
"gochecknoinits",
"gomnd",
"wsl",
"goerr113",
"nlreturn",
"testpackage",
"paralleltest",
"tparallel",
"goerr113",
"wrapcheck",
"exhaustive",
"exhaustivestruct",
]

[issues]
Expand Down
53 changes: 0 additions & 53 deletions .travis.yml

This file was deleted.

16 changes: 9 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,21 @@

TAG_NAME := $(shell git tag -l --contains HEAD)

default: check test build
IMAGE_NAME := traefik/whoami

test:
go test -v -cover ./...
default: check test build

build:
CGO_ENABLED=0 go build -a --installsuffix cgo --ldflags="-s" -o whoami
CGO_ENABLED=0 go build -a --trimpath --installsuffix cgo --ldflags="-s" -o whoami

image:
docker build -t traefik/whoami .
test:
go test -v -cover ./...

check:
golangci-lint run

image:
docker build -t $(IMAGE_NAME) .

publish-images:
seihon publish -v "$(TAG_NAME)" -v "latest" --image-name traefik/whoami --dry-run=false
seihon publish -v "$(TAG_NAME)" -v "latest" --image-name $(IMAGE_NAME) --dry-run=false
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# whoami

[![Docker Pulls](https://img.shields.io/docker/pulls/traefik/whoami.svg)](https://hub.docker.com/r/traefik/whoami/)
[![Build Status](https://travis-ci.com/traefik/whoami.svg?branch=master)](https://travis-ci.com/traefik/whoami)
[![Build Status](https://github.com/traefik/whoami/workflows/Main/badge.svg?branch=master)](https://github.com/traefik/whoami/actions)

Tiny Go webserver that prints os information and HTTP request to output

Expand Down
18 changes: 11 additions & 7 deletions app.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,12 @@ const (
TB
)

var cert string
var key string
var port string
var name string
var (
cert string
key string
port string
name string
)

func init() {
flag.StringVar(&cert, "cert", "", "give me a certificate")
Expand Down Expand Up @@ -130,7 +132,7 @@ func dataHandler(w http.ResponseWriter, r *http.Request) {
content := fillContent(size)

if attachment {
w.Header().Add("Content-Disposition", "Attachment")
w.Header().Set("Content-Disposition", "Attachment")
http.ServeContent(w, r, "data.txt", time.Now(), content)
return
}
Expand Down Expand Up @@ -231,8 +233,10 @@ type healthState struct {
StatusCode int
}

var currentHealthState = healthState{http.StatusOK}
var mutexHealthState = &sync.RWMutex{}
var (
currentHealthState = healthState{http.StatusOK}
mutexHealthState = &sync.RWMutex{}
)

func healthHandler(w http.ResponseWriter, req *http.Request) {
if req.Method == http.MethodPost {
Expand Down
1 change: 1 addition & 0 deletions tmpl.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ COPY go.sum .
RUN GO111MODULE=on GOPROXY=https://proxy.golang.org go mod download

COPY . .

RUN GOARCH={{ .GoARCH }} GOARM={{ .GoARM }} make build

FROM scratch
Expand Down

0 comments on commit 6516f0a

Please sign in to comment.