Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/actions/tagged_release/docker/codesign/action.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: "Sign Osctrl Docker images"
description: "Sign Osctrl Docker images"
name: "Sign osctrl Docker images"
description: "Sign osctrl Docker images"
inputs:
osctrl_component:
required: true
Expand Down
74 changes: 74 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Release

on:
push:
tags:
- "v*"

permissions:
contents: write
packages: write

env:
GOLANG_VERSION: 1.24.3

jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0

- name: Set up Go
uses: actions/setup-go@8e57b58e57be52ac95949151e2777ffda8501267 # v5.5.0
with:
go-version: ${{ env.GOLANG_VERSION }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@af1b253b8dc984466d22633f04ef341c1520ed2f # v3.11.1

- name: Log in to Docker Hub
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v5.0.0
with:
distribution: goreleaser
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCKER_HUB_ORG: ${{ secrets.DOCKER_HUB_ORG }}

# Optional: Sign Docker images with cosign
sign:
needs: goreleaser
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

- name: Install cosign
uses: sigstore/cosign-installer@v3.9.2

- name: Log in to Docker Hub
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

- name: Sign Docker images
run: |
for component in tls admin api cli; do
cosign sign --yes docker.io/${{ secrets.DOCKER_HUB_ORG }}/osctrl-$component:${{ github.ref_name }}
cosign verify \
--certificate-identity-regexp="https://github.com/${{ github.repository }}/.github/workflows/.*" \
--certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
docker.io/${{ secrets.DOCKER_HUB_ORG }}/osctrl-$component:${{ github.ref_name }}
done
43 changes: 43 additions & 0 deletions .github/workflows/test-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Test Release

on:
push:
branches:
- main
pull_request:
branches:
- main

permissions:
contents: read

env:
GOLANG_VERSION: 1.24.3

jobs:
test-build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0

- name: Set up Go
uses: actions/setup-go@8e57b58e57be52ac95949151e2777ffda8501267 # v5.5.0
with:
go-version: ${{ env.GOLANG_VERSION }}

- name: Run GoReleaser build
uses: goreleaser/goreleaser-action@v5.0.0
with:
distribution: goreleaser
version: latest
args: build --snapshot --clean --single-target

- name: Upload build artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: osctrl-binaries
path: dist/
retention-days: 1
242 changes: 242 additions & 0 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
# vim: set ts=2 sw=2 tw=0 fo=cnqoj

version: 2

dist: "./dist"

before:
hooks:
- go mod tidy
- go mod download

builds:
- id: osctrl-tls
main: ./cmd/tls
binary: "osctrl-tls-{{ .Os }}-{{ .Arch }}"
no_unique_dist_dir: true
env:
- CGO_ENABLED=0
goos:
- linux
- darwin
goarch:
- amd64
- arm64
ldflags:
- -s -w
- -X main.version={{.Version}}
- -X main.commit={{.Commit}}
- -X main.date={{.Date}}

- id: osctrl-admin
main: ./cmd/admin
binary: "osctrl-admin-{{ .Os }}-{{ .Arch }}"
no_unique_dist_dir: true
env:
- CGO_ENABLED=0
goos:
- linux
- darwin
goarch:
- amd64
- arm64
ldflags:
- -s -w
- -X main.version={{.Version}}
- -X main.commit={{.Commit}}
- -X main.date={{.Date}}

- id: osctrl-api
main: ./cmd/api
binary: "osctrl-api-{{ .Os }}-{{ .Arch }}"
no_unique_dist_dir: true
env:
- CGO_ENABLED=0
goos:
- linux
- darwin
goarch:
- amd64
- arm64
ldflags:
- -s -w
- -X main.version={{.Version}}
- -X main.commit={{.Commit}}
- -X main.date={{.Date}}

- id: osctrl-cli
main: ./cmd/cli
binary: "osctrl-cli-{{ .Os }}-{{ .Arch }}"
no_unique_dist_dir: true
env:
- CGO_ENABLED=0
goos:
- linux
- darwin
- windows
goarch:
- amd64
- arm64
ldflags:
- -s -w
- -X main.version={{.Version}}
- -X main.commit={{.Commit}}
- -X main.date={{.Date}}

archives:
- name_template: >-
{{ .ProjectName }}-
{{- title .Os }}-
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
files:
- README.md
- LICENSE
- CHANGELOG.md

checksum:
name_template: "checksums.txt"

snapshot: {}

changelog:
sort: asc
filters:
exclude:
- "^docs:"
- "^test:"
- "^ci:"
- Merge pull request
- Merge branch

dockers:
- image_templates:
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-tls:{{ .Version }}"
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-tls:latest"
dockerfile: deploy/cicd/docker/Dockerfile-osctrl-tls
use: buildx
build_flag_templates:
- "--platform=linux/amd64"
- "--platform=linux/arm64"
extra_files:
- osctrl-tls-linux-amd64
- osctrl-tls-linux-arm64

- image_templates:
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-admin:{{ .Version }}"
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-admin:latest"
dockerfile: deploy/cicd/docker/Dockerfile-osctrl-admin
use: buildx
build_flag_templates:
- "--platform=linux/amd64"
- "--platform=linux/arm64"
extra_files:
- osctrl-admin-linux-amd64
- osctrl-admin-linux-arm64

- image_templates:
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-api:{{ .Version }}"
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-api:latest"
dockerfile: deploy/cicd/docker/Dockerfile-osctrl-api
use: buildx
build_flag_templates:
- "--platform=linux/amd64"
- "--platform=linux/arm64"
extra_files:
- osctrl-api-linux-amd64
- osctrl-api-linux-arm64

- image_templates:
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-cli:{{ .Version }}"
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-cli:latest"
dockerfile: deploy/cicd/docker/Dockerfile-osctrl-cli
use: buildx
build_flag_templates:
- "--platform=linux/amd64"
- "--platform=linux/arm64"
extra_files:
- osctrl-cli-linux-amd64
- osctrl-cli-linux-arm64

nfpms:
- id: osctrl-tls
maintainer: jmpsec/osctrl
description: osctrl TLS component
homepage: https://github.com/jmpsec/osctrl
license: MIT
formats:
- deb
bindir: /usr/bin
contents:
- src: osctrl-tls-linux-amd64
dst: /usr/bin/osctrl-tls
- src: osctrl-tls-linux-arm64
dst: /usr/bin/osctrl-tls
overrides:
deb:
scripts:
postinstall: deploy/cicd/deb/post-install.sh
preremove: deploy/cicd/deb/pre-remove.sh

- id: osctrl-admin
maintainer: jmpsec/osctrl
description: osctrl Admin component
homepage: https://github.com/jmpsec/osctrl
license: MIT
formats:
- deb
bindir: /usr/bin
contents:
- src: osctrl-admin-linux-amd64
dst: /usr/bin/osctrl-admin
- src: osctrl-admin-linux-arm64
dst: /usr/bin/osctrl-admin
overrides:
deb:
scripts:
postinstall: deploy/cicd/deb/post-install.sh
preremove: deploy/cicd/deb/pre-remove.sh

- id: osctrl-api
maintainer: jmpsec/osctrl
description: osctrl API component
homepage: https://github.com/jmpsec/osctrl
license: MIT
formats:
- deb
bindir: /usr/bin
contents:
- src: osctrl-api-linux-amd64
dst: /usr/bin/osctrl-api
- src: osctrl-api-linux-arm64
dst: /usr/bin/osctrl-api
overrides:
deb:
scripts:
postinstall: deploy/cicd/deb/post-install.sh
preremove: deploy/cicd/deb/pre-remove.sh

- id: osctrl-cli
maintainer: jmpsec/osctrl
description: osctrl CLI component
homepage: https://github.com/jmpsec/osctrl
license: MIT
formats:
- deb
bindir: /usr/bin
contents:
- src: osctrl-cli-linux-amd64
dst: /usr/bin/osctrl-cli
- src: osctrl-cli-linux-arm64
dst: /usr/bin/osctrl-cli
overrides:
deb:
scripts:
postinstall: deploy/cicd/deb/post-install.sh
preremove: deploy/cicd/deb/pre-remove.sh

release:
draft: false
prerelease: false
Loading