-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add: All project files and release automation
- Loading branch information
0 parents
commit 2e898af
Showing
850 changed files
with
590,973 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
name: build | ||
|
||
on: | ||
pull_request: | ||
push: | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-go@v3 | ||
with: | ||
go-version: 1.19 | ||
- uses: actions/cache@v3 | ||
with: | ||
path: ~/go/pkg/mod | ||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | ||
restore-keys: | | ||
${{ runner.os }}-go- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# | ||
# Releaser workflow setup | ||
# https://goreleaser.com/ci/actions/ | ||
# | ||
name: release | ||
|
||
on: | ||
workflow_dispatch: | ||
push: | ||
tags: | ||
- 'v*' | ||
|
||
permissions: | ||
contents: write # needed to write releases | ||
id-token: write # needed for keyless signing | ||
packages: write # needed for ghcr access | ||
|
||
jobs: | ||
release: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 # this is important, otherwise it won't checkout the full tree (i.e. no previous tags) | ||
- uses: actions/setup-go@v3 | ||
with: | ||
go-version: 1.19 | ||
- uses: actions/cache@v3 | ||
with: | ||
path: ~/go/pkg/mod | ||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | ||
restore-keys: | | ||
${{ runner.os }}-go- | ||
- uses: sigstore/[email protected] # installs cosign | ||
- uses: anchore/sbom-action/[email protected] # installs syft | ||
|
||
- name: ghcr login | ||
uses: docker/login-action@v2 # login to ghcr | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.repository_owner }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
- uses: goreleaser/goreleaser-action@v4 # run goreleaser | ||
with: | ||
version: latest | ||
args: release --rm-dist | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# Binaries for programs and plugins | ||
*.exe | ||
*.exe~ | ||
*.dll | ||
*.so | ||
*.dylib | ||
|
||
# Test binary, built with `go test -c` | ||
*.test | ||
|
||
# Output of the go coverage tool, specifically when used with LiteIDE | ||
*.out |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
FROM scratch | ||
COPY hivelime /usr/local/bin/hivelime | ||
ENTRYPOINT [ "/usr/local/bin/hivelime" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
builds: | ||
- env: | ||
- CGO_ENABLED=0 | ||
goos: | ||
- linux | ||
- darwin | ||
goarch: | ||
- amd64 | ||
- arm64 | ||
# ensures mod timestamp to be the commit timestamp | ||
mod_timestamp: '{{ .CommitTimestamp }}' | ||
binary: hivelime | ||
flags: | ||
# trims path | ||
- -trimpath | ||
ldflags: | ||
# use commit date instead of current date as main.date | ||
# only needed if you actually use those things in your main package, otherwise can be ignored. | ||
- -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{ .CommitDate }} | ||
|
||
# proxies from the go mod proxy before building | ||
# https://goreleaser.com/customization/gomod | ||
#gomod: | ||
# proxy: true | ||
|
||
# config the checksum filename | ||
# https://goreleaser.com/customization/checksum | ||
checksum: | ||
name_template: 'checksums.txt' | ||
|
||
# create a source tarball | ||
# https://goreleaser.com/customization/source/ | ||
source: | ||
enabled: true | ||
|
||
# creates SBOMs of all archives and the source tarball using syft | ||
# https://goreleaser.com/customization/sbom | ||
sboms: | ||
- artifacts: archive | ||
- id: source # Two different sbom configurations need two different IDs | ||
artifacts: source | ||
|
||
# signs the checksum file | ||
# all files (including the sboms) are included in the checksum, so we don't need to sign each one if we don't want to | ||
# https://goreleaser.com/customization/sign | ||
signs: | ||
- cmd: cosign | ||
env: | ||
- COSIGN_EXPERIMENTAL=1 | ||
certificate: '${artifact}.pem' | ||
args: | ||
- sign-blob | ||
- '--output-certificate=${certificate}' | ||
- '--output-signature=${signature}' | ||
- '${artifact}' | ||
artifacts: checksum | ||
output: true | ||
|
||
|
||
dockers: | ||
- image_templates: | ||
- "ghcr.io/kaansk/hivelime:{{ .Tag }}" | ||
- "ghcr.io/kaansk/hivelime:latest" | ||
dockerfile: .goreleaser.Dockerfile | ||
build_flag_templates: | ||
- "--pull" | ||
- "--label=org.opencontainers.image.created={{.Date}}" | ||
- "--label=org.opencontainers.image.name={{.ProjectName}}" | ||
- "--label=org.opencontainers.image.revision={{.FullCommit}}" | ||
- "--label=org.opencontainers.image.version={{.Version}}" | ||
- "--label=org.opencontainers.image.source={{.GitURL}}" | ||
|
||
|
||
docker_signs: | ||
- cmd: cosign | ||
env: | ||
- COSIGN_EXPERIMENTAL=1 | ||
artifacts: images | ||
output: true | ||
args: | ||
- 'sign' | ||
- '${artifact}' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# Taken from https://github.com/chemidy/smallest-secured-golang-docker-image | ||
|
||
FROM golang:alpine as builder | ||
|
||
# Install git + SSL ca certificates. | ||
# Git is required for fetching the dependencies. | ||
# Ca-certificates is required to call HTTPS endpoints. | ||
RUN apk update && apk add --no-cache git ca-certificates tzdata && update-ca-certificates | ||
|
||
# Create appuser | ||
ENV USER=appuser | ||
ENV UID=10001 | ||
|
||
# See https://stackoverflow.com/a/55757473/12429735 | ||
RUN adduser \ | ||
--disabled-password \ | ||
--gecos "" \ | ||
--home "/nonexistent" \ | ||
--shell "/sbin/nologin" \ | ||
--no-create-home \ | ||
--uid "${UID}" \ | ||
"${USER}" | ||
WORKDIR $GOPATH/src/mypackage/myapp/ | ||
COPY . . | ||
|
||
# Fetch dependencies. | ||
RUN go get -d -v | ||
|
||
# Build the binary | ||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ | ||
-ldflags='-w -s -extldflags "-static"' -a \ | ||
-o /go/bin/hivelime . | ||
|
||
############################ | ||
# STEP 2 build a small image | ||
############################ | ||
FROM scratch | ||
|
||
# Import from builder. | ||
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo | ||
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ | ||
COPY --from=builder /etc/passwd /etc/passwd | ||
COPY --from=builder /etc/group /etc/group | ||
|
||
# Copy our static executable | ||
COPY --from=builder /go/bin/hivelime /go/bin/hivelime | ||
|
||
# Use an unprivileged user. | ||
USER appuser:appuser | ||
WORKDIR /go/bin/ | ||
# Run the hivelime binary. | ||
ENTRYPOINT ["/go/bin/hivelime"] |
Oops, something went wrong.