Skip to content

Commit

Permalink
ci: Add CI/CD workflow for testing, building and releasing
Browse files Browse the repository at this point in the history
  • Loading branch information
erNail committed Jun 7, 2024
1 parent cd8736b commit 61f43c4
Show file tree
Hide file tree
Showing 3 changed files with 179 additions and 0 deletions.
98 changes: 98 additions & 0 deletions .github/workflows/cicd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
---
name: "CI/CD"

"on":
push:
pull_request:

jobs:
pre-commit-job:
runs-on: "ubuntu-22.04"
steps:
- name: "Check out repository"
uses: "actions/[email protected]"
- name: "Setup python"
uses: "actions/[email protected]"
- name: "Run pre-commit"
uses: "pre-commit/[email protected]"

go-test-job:
runs-on: "ubuntu-22.04"
steps:
- name: "Check out repository"
uses: "actions/[email protected]"
- name: "Setup go"
uses: "actions/[email protected]"
with:
go-version: "1.22.3"
- name: "Run go test"
run: "go test ./..."

go-build-job:
runs-on: "ubuntu-22.04"
steps:
- name: "Check out repository"
uses: "actions/[email protected]"
- name: "Setup go"
uses: "actions/[email protected]"
with:
go-version: "1.22.3"
- name: "Run go build"
run: "go build"

mirror-gitlab-job:
runs-on: "ubuntu-22.04"
steps:
- name: "Check out repository"
uses: "actions/[email protected]"
with:
fetch-depth: 0
- name: "Add Gitlab Remote"
run: |
git remote add gitlab https://oauth2:${{ secrets.GITLAB_LABDOC_MIRROR_TOKEN }}@gitlab.com/erNail/labdoc.git
- name: "Push all branches to GitLab"
run: "git push gitlab --all --force"

- name: "Push all tags to GitLab"
run: "git push gitlab --tags --force"

release-job:
runs-on: "ubuntu-22.04"
needs:
- "go-test-job"
- "go-build-job"
- "pre-commit-job"
- "mirror-gitlab-job"
permissions:
contents: "write"
steps:
- name: "Check out repository"
uses: "actions/[email protected]"
with:
fetch-depth: 0
- name: "Setup go"
uses: "actions/[email protected]"
with:
go-version: "1.22.3"
- name: "Setup node"
uses: "actions/[email protected]"
with:
node-version: "22.2.0"
- name: "Setup goreleaser"
run: "go install github.com/goreleaser/goreleaser/[email protected]"
- name: "Login to Docker Hub"
uses: "docker/[email protected]"
with:
username: "${{ secrets.DOCKER_USERNAME }}"
password: "${{ secrets.DOCKER_LABDOC_GORELEASER_TOKEN }}"
- name: "Run semantic-release"
uses: "cycjimmy/[email protected]"
with:
extra_plugins: |
@semantic-release/[email protected]
@semantic-release/[email protected]
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
DOCKER_LABDOC_GORELEASER_TOKEN: "${{ secrets.DOCKER_LABDOC_GORELEASER_TOKEN }}"
HOMEBREW_TAP_ERNAIL_GITHUB_TOKEN: "${{ secrets.HOMEBREW_TAP_ERNAIL_GITHUB_TOKEN }}"
...
45 changes: 45 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
version: 2

before:
hooks:
- "go mod tidy"

builds:

- env:
- "CGO_ENABLED=0"
goos:
- "darwin"
- "linux"
goarch:
- "amd64"
- "arm64"

# Container Image build
kos:
- repository: "ernail/labdoc"
base_image: "alpine:3.20.0"
tags:
- "{{ .Version }}"
bare: true
preserve_import_paths: false
platforms:
- "linux/amd64"
- "linux/arm64"

brews:
- name: "labdoc"
caveats: "Run `labdoc -h` to get started!"
homepage: "https://github.com/erNail/labdoc"
description: "Automatically generate documentation for GitLab CI/CD components and CI/CD pipelines."
license: "MIT"
commit_msg_template: "chore: Update brew formula for {{ .ProjectName }} version {{ .Tag }}"
repository:
owner: "erNail"
name: "homebrew-tap"
branch: "feature/formula-update"
token: "{{ .Env.HOMEBREW_TAP_ERNAIL_GITHUB_TOKEN }}"
pull_request:
enabled: true
...
36 changes: 36 additions & 0 deletions taskfile.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
version: "3"

tasks:
lint:
cmds:
- "pre-commit run --all-files"

test:
cmds:
- "go test ./..."

run:
cmds:
- "go run main.go {{ .CLI_ARGS }}"

run-generate:
cmds:
- "go run main.go generate --repoUrl gitlab.com/erNail/labdoc {{ .CLI_ARGS }}"

build:
cmds:
- "go build"

build-image:
cmds:
- "ko build --platform all --local"

release-test:
cmds:
- "semantic-release --dry-run"

test-github-actions:
cmds:
- "act"
...

0 comments on commit 61f43c4

Please sign in to comment.