Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
6defc83568 | |||
7c354b46e0 | |||
4cdb49bc38 |
39
README.md
39
README.md
@ -1,31 +1,44 @@
|
||||
# Go CI/CD Composite Action
|
||||
# ⚙️ Go CI/CD Composite Action
|
||||
|
||||
A reusable GitHub Action for Go projects, forged to handle various CI/CD scenarios like a true warrior of code. Supports protected branches, tagged releases, and minimal development flows — with optional Docker image publishing for applications.
|
||||
|
||||
> “We don’t just build software — we forge legacy.”
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Features
|
||||
|
||||
- Multiple workflow modes: `protected`, `tag`, and `minimal`
|
||||
- Go version configuration
|
||||
- Automatic test execution with code coverage
|
||||
- Automatic test execution with coverage reporting
|
||||
- Build support for both libraries and applications
|
||||
- Conditional Docker image creation and publishing
|
||||
- Composable and easy to integrate in any Go project
|
||||
- Full registry authentication support
|
||||
- Easy integration across all Go-based grimoires
|
||||
|
||||
---
|
||||
|
||||
## 📥 Inputs
|
||||
|
||||
| Input Name | Description | Required | Default |
|
||||
|---------------------|-------------------------------------------------------------------------|----------|---------------|
|
||||
| `workflow-type` | Type of CI/CD flow (`protected`, `minimal`, `tag`) | Yes | `protected` |
|
||||
| `go-version` | Go version to install and use | No | `1.24` |
|
||||
| `build-type` | Type of build (`application`, `library`) | No | `application` |
|
||||
| `container-registry`| Container registry URL (used if publishing Docker image) | Yes | — |
|
||||
| `publish-docker` | Whether to build and push Docker image (`true` / `false`) | No | `true` |
|
||||
| Input Name | Description | Required | Default |
|
||||
|----------------------|-----------------------------------------------------------|----------|---------------|
|
||||
| `workflow-type` | Type of CI/CD flow (`protected`, `minimal`, `tag`) | Yes | `protected` |
|
||||
| `go-version` | Go version to install and use | No | `1.24` |
|
||||
| `build-type` | Type of build (`application`, `library`) | No | `application` |
|
||||
| `container-registry` | Container registry URL (used if publishing Docker image) | Yes | — |
|
||||
| `registry-username` | Your container registry username | Yes | — |
|
||||
| `registry-token` | Access token or password for container registry | Yes | — |
|
||||
| `publish-docker` | Whether to build and push Docker image (`true` / `false`) | No | `true` |
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Workflow Types
|
||||
|
||||
- **protected**: Full CI/CD pipeline for mainline branches. Runs tests, builds the binary, and optionally publishes a Docker image.
|
||||
- **minimal**: Lean setup for pull requests or early development. Runs tests and builds only.
|
||||
- **tag**: Triggered on Git tags. Behaves like `protected`, ideal for versioned releases.
|
||||
- **protected** – Full battle mode. Ideal for `main`/`release` branches. Tests, builds, and publishes.
|
||||
- **minimal** – Light mode for PRs and early dev. Just tests and builds.
|
||||
- **tag** – Triggered on Git tags. Behaves like `protected`, meant for releases.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 How to Use
|
||||
|
||||
|
14
action.yml
14
action.yml
@ -17,6 +17,12 @@ inputs:
|
||||
container-registry:
|
||||
description: 'Container registry url'
|
||||
required: true
|
||||
registry-username:
|
||||
description: 'The registry username'
|
||||
required: true
|
||||
registry-token:
|
||||
description: 'The registry authentication token'
|
||||
required: true
|
||||
publish-docker:
|
||||
description: 'Publish Docker image (true/false)'
|
||||
required: false
|
||||
@ -43,8 +49,8 @@ runs:
|
||||
- name: Run tests
|
||||
shell: bash
|
||||
run: |
|
||||
go test -json > test-report.out
|
||||
go test -coverprofile=coverage.out
|
||||
go test -json > test-report.out ./...
|
||||
go test -coverprofile=coverage.out ./...
|
||||
|
||||
- name: Build library
|
||||
if: inputs.build-type == 'library'
|
||||
@ -87,8 +93,8 @@ runs:
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ inputs.container-registry }}
|
||||
username: ${{ env.DEPLOYER_USERNAME }}
|
||||
password: ${{ secrets.DEPLOYER_TOKEN }}
|
||||
username: ${{ inputs.registry-username }}
|
||||
password: ${{ inputs.registry-token }}
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
if: inputs.publish-docker == 'true' && inputs.build-type == 'application' && (inputs.workflow-type == 'protected' || inputs.workflow-type == 'tag')
|
||||
|
Loading…
x
Reference in New Issue
Block a user