opengist/.github/workflows/go.yml

94 lines
2.5 KiB
YAML
Raw Normal View History

2023-04-26 21:20:06 +00:00
name: "Go"
on:
push:
branches:
- master
pull_request:
jobs:
2023-06-09 13:01:14 +00:00
checks:
2023-04-26 21:20:06 +00:00
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macOS-latest"]
go: ["1.19", "1.20"]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
2023-04-26 21:55:37 +00:00
uses: actions/checkout@v3
2023-04-26 21:20:06 +00:00
- name: Set up Go ${{ matrix.go }}
uses: WillAbides/setup-go-faster@v1.8.0
with:
go-version: ${{ matrix.go }}
- name: Cache Go modules
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Cache Go build cache
uses: actions/cache@v3
with:
path: ~/.cache/go-build
key: ${{ runner.os }}-go-build-${{ matrix.go }}
restore-keys: |
${{ runner.os }}-go-build-
- name: Run go vet
run: "go vet ./..."
- name: Run Staticcheck
uses: dominikh/staticcheck-action@v1.3.0
with:
version: "2023.1.1"
install-go: false
cache-key: ${{ matrix.go }}
2023-06-09 13:01:14 +00:00
docker-build-latest:
if: ${{ github.event_name == 'push' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }}
needs:
- checks
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
ghcr.io/thomiceli/opengist
tags: |
2023-06-18 10:54:33 +00:00
type=raw,value=dev,enable=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }}
2023-06-09 13:01:14 +00:00
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max