pcmt/.drone.yml
leo 6ebf092b9f
All checks were successful
continuous-integration/drone/push Build is passing
ci,just,pre-commit: add Containerfile
* lint in pre-commit, ci, justfile
* build on feature branches and PRs and publish on tags.
* add a symlink to Dockerfile
2023-05-20 18:05:26 +02:00

278 lines
5.9 KiB
YAML

---
kind: pipeline
type: docker
name: test archlinux
platform:
os: linux
arch: amd64
node:
r: as
trigger:
branch: [development, "feature-**"]
event: push
environment:
CGO_ENABLED: 0
GOPATH: /go
steps:
- name: pull
image: docker.io/immawanderer/archlinux-go:linux-amd64
pull: always
depends_on: [clone]
commands:
- go version
- name: go mod tidy
image: docker.io/immawanderer/archlinux-go:linux-amd64
depends_on: [pull]
volumes:
- name: gopath
path: /go
commands:
- go mod tidy
- git diff-index HEAD :^package-lock.json
# run Go mod tidy prior to committing
- test -z "$(git diff-index HEAD :^package-lock.json)"
- name: frontend
image: docker.io/immawanderer/archlinux-go:linux-amd64
depends_on: [pull]
volumes:
- name: gopath
path: /go
commands:
- pacman -Sy && pacman -S --noconfirm --needed npm
- npm i
- npx tailwindcss -i ./assets/input/css/tailwind.css -o ./tmp/pcmt.css --minify
# ignore whitespace changes.
- diff -Nsb ./assets/public/css/pcmt.css ./tmp/pcmt.css || ( echo files differ; exit 1 )
- name: go build
image: docker.io/immawanderer/archlinux-go:linux-amd64
depends_on: [go mod tidy, frontend]
volumes:
- name: gopath
path: /go
commands:
- go build -v .
- name: go test
image: docker.io/immawanderer/archlinux-go:linux-amd64
depends_on: [pull]
volumes:
- name: gopath
path: /go
commands:
- go test -cover ./...
volumes:
- name: gopath
temp: {}
---
kind: pipeline
type: docker
name: test alpine
platform:
os: linux
arch: amd64
node:
r: as
trigger:
branch: [development, "feature-**"]
event: push
environment:
CGO_ENABLED: 0
steps:
- name: pull
image: docker.io/library/golang:1.20.4-alpine3.17
depends_on: [clone]
commands:
- go version
- name: go mod tidy
image: docker.io/library/golang:1.20.4-alpine3.17
depends_on: [pull]
volumes:
- name: gopath
path: /go
commands:
- go mod tidy
- apk update -q && apk add -q --no-cache git
- git diff-index HEAD :^package-lock.json
# run Go mod tidy prior to committing
- test -z "$(git diff-index HEAD :^package-lock.json)"
- name: frontend
image: docker.io/library/golang:1.20.4-alpine3.17
depends_on: [pull]
volumes:
- name: gopath
path: /go
commands:
- apk update -q && apk add -q --no-cache npm
- npm i
- npx tailwindcss -i ./assets/input/css/tailwind.css -o ./tmp/pcmt.css --minify
# ignore whitespace changes.
- diff -Nsb ./assets/public/css/pcmt.css ./tmp/pcmt.css || ( echo files differ; exit 1 )
- name: go build
image: docker.io/library/golang:1.20.4-alpine3.17
depends_on: [go mod tidy, frontend]
volumes:
- name: gopath
path: /go
commands:
- go build -v .
- name: go test
image: docker.io/library/golang:1.20.4-alpine3.17
depends_on: [pull]
volumes:
- name: gopath
path: /go
commands:
- go test -cover ./...
volumes:
- name: gopath
temp: {}
---
kind: pipeline
type: docker
name: golangci-lint|godocs
platform:
os: linux
arch: amd64
node:
r: as
steps:
- name: golangci-lint
image: docker.io/library/golang:1.20.4-alpine3.17
pull: always
environment:
CGO_ENABLED: 0
commands:
- go install -v github.com/golangci/golangci-lint/cmd/golangci-lint@v1.52.2
- golangci-lint version
- golangci-lint run -v --timeout 5m
- name: goreportcard refresh
image: docker.io/curlimages/curl:8.00.1
depends_on: [golangci-lint]
pull: if-not-exists
trigger:
ref:
include:
- "refs/tags/**"
- refs/heads/development
exclude:
- "refs/pull/**"
commands:
- uname -r
- curl --version
- curl -sS -X POST -F \"repo=git.dotya.ml/${DRONE_REPO}\" https://goreportcard.com/checks -o /dev/null
- name: godocs refresh
image: docker.io/curlimages/curl:8.00.1
pull: if-not-exists
depends_on: [golangci-lint]
trigger:
ref:
include:
- "refs/tags/**"
- refs/heads/development
exclude: ["refs/pull/**"]
commands:
- uname -r
- curl --version
- curl -sS -X POST https://godocs.io/git.dotya.ml/${DRONE_REPO}/refresh -o /dev/null
---
kind: pipeline
type: docker
name: container
platform:
os: linux
arch: amd64
node:
r: as
trigger:
event: [push, pull_request, cron, tag]
steps:
- name: hadolint
pull: always
image: ghcr.io/hadolint/hadolint:v2.12.0-alpine
commands:
- hadolint --version
- hadolint Containerfile
when:
ref:
- refs/heads/development
- "refs/heads/feature-**"
- "refs/pull/**"
- "refs/tags/**"
event:
exclude: [cron]
- name: kaniko-build
pull: always
image: docker.io/immawanderer/drone-kaniko:linux-amd64
settings:
dockerfile: Containerfile
context: .
args:
- BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
- VCS_REF=${DRONE_COMMIT_SHA:0:8}
when:
ref:
- "refs/heads/feature-**"
- "refs/pull/**"
event:
exclude: [cron]
- name: kaniko publish
pull: always
image: docker.io/immawanderer/drone-kaniko:linux-amd64
settings:
dockerfile: Containerfile
context: .
args:
- BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
- VCS_REF=${DRONE_COMMIT_SHA:0:8}
tags:
- latest
- linux-amd64
- ${DRONE_COMMIT_SHA:0:8}
- ${DRONE_TAG}
- ${DRONE_TAG}-linux-amd64
- ${DRONE_TAG}-g${DRONE_COMMIT_SHA:0:8}
repo: immawanderer/mt-${DRONE_REPO_NAME}
username: immawanderer
password:
from_secret: dh_token
when:
ref:
include:
- "refs/tags/**"
...