-
Notifications
You must be signed in to change notification settings - Fork 53
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
297 additions
and
12 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 |
---|---|---|
|
@@ -11,34 +11,79 @@ permissions: | |
|
||
jobs: | ||
build: | ||
name: "build" | ||
strategy: | ||
matrix: | ||
go: [stable] | ||
os: | ||
- ubuntu-latest | ||
- macos-latest | ||
arch: | ||
- arm64 | ||
- amd64 | ||
runs-on: ${{ matrix.os }} | ||
targets: | ||
- name: linux-amd64 | ||
runner: ubuntu-latest | ||
goos: linux | ||
goarch: amd64 | ||
- name: linux-arm64 | ||
runner: ubuntu-latest | ||
goos: linux | ||
goarch: arm64 | ||
goenvs: CC=aarch64-linux-gnu-gcc CXX=x86_64-linux-gnu-g++ | ||
preinstall: sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu | ||
- name: darwin-amd64 | ||
runner: macos-latest | ||
goos: darwin | ||
goarch: amd64 | ||
- name: darwin-arm64 | ||
runner: macos-latest | ||
goos: darwin | ||
goarch: arm64 | ||
name: ${{ matrix.targets.name }} | ||
runs-on: ${{ matrix.targets.runner }} | ||
env: | ||
GOPRIVATE: "github.com/humanlogio/humanlog-pro" | ||
GH_ACCESS_TOKEN_FOR_HUMANLOGPRO: ${{ secrets.GH_ACCESS_TOKEN_FOR_HUMANLOGPRO }} | ||
GOARCH: ${{ matrix.arch }} | ||
CGO_ENABLED: 1 | ||
GOBIN: /usr/local/bin/ | ||
steps: | ||
- name: Set up Go 1 | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version: ${{ matrix.go }} | ||
go-version: stable | ||
cache: true | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
- if: ${{ matrix.targets.preinstall != '' }} | ||
run: ${{ matrix.targets.preinstall }} | ||
- run: echo "${HOME}/.humanlog/bin" >> $GITHUB_PATH | ||
- run: curl https://humanlog.io/install_apictl.sh | bash | ||
- run: git config --global --add safe.directory '*' | ||
- run: git config --global url.https://[email protected]/.insteadOf https://github.com/ | ||
- run: go install github.com/goware/modvendor@latest | ||
- run: go mod vendor | ||
- run: modvendor -copy="**/*.a **/*.h" -v | ||
- run: go build -tags pro -o /tmp/humanlog-${{ matrix.os }}-${{ matrix.arch }} ./cmd/humanlog | ||
- run: mkdir -p dist/${{ matrix.targets.goos }}-${{ matrix.targets.goarch }} | ||
- run: ${{ matrix.targets.goenvs }} ./script/build.sh | ||
env: | ||
GOOS: ${{ matrix.targets.goos }} | ||
GOARCH: ${{ matrix.targets.goarch }} | ||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: humanlog-bins-${{ matrix.targets.goos }}-${{ matrix.targets.goarch }} | ||
path: dist/* | ||
|
||
publish: | ||
name: "publish" | ||
needs: build | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
- run: echo "${HOME}/.humanlog/bin" >> $GITHUB_PATH | ||
- run: curl https://humanlog.io/install_apictl.sh | bash | ||
- uses: actions/upload-artifact/merge@v4 | ||
with: | ||
name: humanlog-bins | ||
pattern: humanlog-bins-* | ||
separate-directories: true | ||
delete-merged: true | ||
- uses: actions/download-artifact@v4 | ||
with: | ||
name: humanlog-bins | ||
- run: ./script/publish.sh |
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 |
---|---|---|
|
@@ -10,9 +10,49 @@ permissions: | |
contents: write | ||
|
||
jobs: | ||
build: | ||
name: "build" | ||
strategy: | ||
matrix: | ||
go: [stable] | ||
os: | ||
- ubuntu-latest | ||
- macos-latest | ||
arch: | ||
- arm64 | ||
- amd64 | ||
runs-on: ${{ matrix.os }} | ||
env: | ||
GOPRIVATE: "github.com/humanlogio/humanlog-pro" | ||
GH_ACCESS_TOKEN_FOR_HUMANLOGPRO: ${{ secrets.GH_ACCESS_TOKEN_FOR_HUMANLOGPRO }} | ||
GOARCH: ${{ matrix.arch }} | ||
steps: | ||
- name: Set up Go 1 | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version: ${{ matrix.go }} | ||
cache: true | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
- run: git config --global --add safe.directory '*' | ||
- run: git config --global url.https://[email protected]/.insteadOf https://github.com/ | ||
- run: git fetch --force --tags | ||
- run: echo "${HOME}/.humanlog/bin" >> $GITHUB_PATH | ||
- run: curl https://humanlog.dev/install_apictl.sh | bash | ||
- run: go install github.com/goware/modvendor@latest | ||
- run: go mod vendor | ||
- run: modvendor -copy="**/*.a **/*.h" -v | ||
- run: go | ||
env: | ||
|
||
|
||
|
||
create_a_dev_release: | ||
name: create a dev release | ||
runs-on: ubuntu-latest | ||
container: | ||
image: ghcr.io/goreleaser/goreleaser-cross:v1.23.2 | ||
env: | ||
GOPRIVATE: "github.com/humanlogio/humanlog-pro" | ||
GH_ACCESS_TOKEN_FOR_HUMANLOGPRO: ${{ secrets.GH_ACCESS_TOKEN_FOR_HUMANLOGPRO }} | ||
|
Binary file added
BIN
+5.83 MB
humanlog-bins-darwin-arm64/humanlog_0.7.9-next.1730802218+cb244d3_darwin_arm64.tar.gz
Binary file not shown.
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,115 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -euox pipefail | ||
|
||
root=$(git rev-parse --show-toplevel) | ||
|
||
gotags="${HUMANLOG_GOTAGS:-}" | ||
goos="${GOOS:-$(go env GOOS)}" | ||
goarch="${GOARCH:-$(go env GOARCH)}" | ||
is_prod_build="${HUMANLOG_IS_PROD_BUILD:-}" | ||
output_dir="${HUMANLOG_OUTDIR:-${root}/dist}" | ||
output_bin="${HUMANLOG_OUTBIN:-humanlog}" | ||
output_path="${output_dir}/${output_bin}" | ||
|
||
function latest_git_tag() { | ||
git describe --tags $(git rev-list --tags --max-count=1) | ||
} | ||
|
||
function git_commit_timestamp() { | ||
git show --no-patch --format=%ct | ||
} | ||
|
||
function git_short_commit() { | ||
git rev-parse --short HEAD | ||
} | ||
|
||
function current_version() { | ||
apictl version to-json --version $(latest_git_tag) | | ||
apictl version math build set $(git_short_commit) | ||
} | ||
|
||
function next_patch_version() { | ||
current_version | | ||
apictl version math patch add 1 | | ||
apictl version math pre add next | | ||
apictl version math pre add $(git_commit_timestamp) | ||
} | ||
|
||
function get_major() { | ||
jq -r '.major // 0' | ||
} | ||
|
||
function get_minor() { | ||
jq -r '.minor // 0' | ||
} | ||
|
||
function get_patch() { | ||
jq -r '.patch // 0' | ||
} | ||
|
||
function get_pre() { | ||
jq -r '.prereleases // [] | join(".")' | ||
} | ||
|
||
function get_build() { | ||
jq -r '.build // ""' | ||
} | ||
|
||
function main() { | ||
local major="" | ||
local minor="" | ||
local patch="" | ||
local pre="" | ||
local build="" | ||
local version="" | ||
if [[ "${is_prod_build}" != "true" ]]; then | ||
echo "setting version to $(next_patch_version | apictl version from-json)" | ||
major=$(next_patch_version | get_major) | ||
minor=$(next_patch_version | get_minor) | ||
patch=$(next_patch_version | get_patch) | ||
pre=$(next_patch_version | get_pre) | ||
build=$(next_patch_version | get_build) | ||
version=$(next_patch_version | apictl version from-json) | ||
else | ||
major=$(current_version | get_major) | ||
minor=$(current_version | get_minor) | ||
patch=$(current_version | get_patch) | ||
build=$(current_version | get_build) | ||
version=$(current_version | apictl version from-json) | ||
fi | ||
local tarname="humanlog_${version}_${goos}_${goarch}.tar.gz" | ||
|
||
local flags="-o ${output_path} -trimpath" | ||
if [[ ! -z "${gotags}" ]]; then | ||
flags+=" -tags ${gotags}" | ||
fi | ||
|
||
ldflags="-s -w" | ||
|
||
if [[ "${goos}" == "linux" ]]; then | ||
ldflags+=$" -extldflags '-lc -lrt -lpthread --static'" | ||
fi | ||
|
||
ldflags+=" -X main.versionMajor=${major}" | ||
ldflags+=" -X main.versionMinor=${minor}" | ||
ldflags+=" -X main.versionPatch=${patch}" | ||
ldflags+=" -X main.versionBuild=${build}" | ||
if [[ "${is_prod_build}" != "true" ]]; then | ||
ldflags+=" -X main.versionPrerelease=${pre}" | ||
ldflags+=" -X main.defaultApiAddr=https://api.humanlog.dev" | ||
ldflags+=" -X main.defaultBaseSiteAddr=https://humanlog.dev" | ||
else | ||
ldflags+=" -X main.defaultApiAddr=https://api.humanlog.io" | ||
ldflags+=" -X main.defaultBaseSiteAddr=https://humanlog.io" | ||
fi | ||
|
||
flags+=" -ldflags=\"${ldflags}\"" | ||
|
||
eval go build ${flags} ./cmd/humanlog | ||
|
||
cd ${output_dir} | ||
tar -zcvf ${tarname} humanlog | ||
} | ||
|
||
main |
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,85 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -euox pipefail | ||
|
||
root=$(git rev-parse --show-toplevel) | ||
|
||
is_prod_build="${HUMANLOG_IS_PROD_BUILD:-}" | ||
|
||
function latest_git_tag() { | ||
git describe --tags $(git rev-list --tags --max-count=1) | ||
} | ||
|
||
function git_commit_timestamp() { | ||
git show --no-patch --format=%ct | ||
} | ||
|
||
function git_short_commit() { | ||
git rev-parse --short HEAD | ||
} | ||
|
||
function current_version() { | ||
apictl version to-json --version $(latest_git_tag) | | ||
apictl version math build set $(git_short_commit) | ||
} | ||
|
||
function next_patch_version() { | ||
current_version | | ||
apictl version math patch add 1 | | ||
apictl version math pre add next | | ||
apictl version math pre add $(git_commit_timestamp) | ||
} | ||
|
||
function get_major() { | ||
jq -r '.major // 0' | ||
} | ||
|
||
function get_minor() { | ||
jq -r '.minor // 0' | ||
} | ||
|
||
function get_patch() { | ||
jq -r '.patch // 0' | ||
} | ||
|
||
function get_pre() { | ||
jq -r '.prereleases // [] | join(".")' | ||
} | ||
|
||
function get_build() { | ||
jq -r '.build // ""' | ||
} | ||
|
||
function main() { | ||
for dir in $(find . -type d -name "humanlog-bins-*-*"); do | ||
local os=$(echo "${dir}" | sed 's/\.\/humanlog-bins-\(.*\)-\(.*\)/\1/') | ||
local arch=$(echo "${dir}" | sed 's/\.\/humanlog-bins-\(.*\)-\(.*\)/\2/') | ||
local version="" | ||
local env="prod" | ||
if [[ "${is_prod_build}" != "true" ]]; then | ||
env="dev" | ||
version=$(next_patch_version | apictl version from-json) | ||
else | ||
version=$(current_version | apictl version from-json) | ||
fi | ||
|
||
ls -lha ${dir} | ||
|
||
local bucketdir="humanlog/${env}/$(git_commit_timestamp)/$(git_short_commit)" | ||
local filename="humanlog_${version}_${os}_${arch}.tar.gz" | ||
local bucketpath="${bucketdir}/${filename}" | ||
ls -lha ${dir}/${filename} | ||
local artifact=$(apictl create s3-artifact \ | ||
--filepath ${dir}/${filename} \ | ||
--s3.access_key $S3_BINARIES_BUCKET_KEY_ID \ | ||
--s3.secret_key $S3_BINARIES_BUCKET_ACCESS_KEY \ | ||
--s3.endpoint "https://humanlog-binaries.sfo3.digitaloceanspaces.com" \ | ||
--s3.region "sfo3" \ | ||
--s3.bucket "humanlog-binaries" \ | ||
--s3.directory ${bucketpath}) | ||
echo ${artifact} | ||
|
||
done | ||
} | ||
|
||
main |