Files
certman/.gitea/workflows/build.yml
Steven Tracey e0f68788c0
Some checks failed
Build (artifact) / build (push) Failing after 1m3s
Major Refactoring, Client can now be used as a library
2026-03-16 21:48:32 +01:00

92 lines
3.2 KiB
YAML

name: Build (artifact)
on:
workflow_dispatch:
push:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[CI-SKIP]')"
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Setup Go
uses: https://github.com/actions/setup-go@v5
with:
go-version: "1.25"
- name: Install protoc
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
- name: Install Go protobuf plugins
run: |
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
- name: Read VERSION from Makefile
shell: bash
run: |
VERSION="$(awk -F':=' '/^VERSION[[:space:]]*:=/ {gsub(/[[:space:]]/,"",$2); print $2; exit}' Makefile)"
if [ -z "$VERSION" ]; then
echo "Failed to read VERSION from Makefile" >&2
exit 1
fi
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Get latest commit message
run: echo "COMMIT_MSG=$(git log -1 --pretty=%s)" >> $GITHUB_ENV
- name: Build
run: make build
- name: Upload artifact
uses: https://github.com/actions/upload-artifact@v3
with:
name: certman-${{ env.VERSION }}-amd64.zip
path: bin/
if-no-files-found: error
- name: Create release and upload binary
run: |
BODY=$(jq -n --arg tag "v${{ env.VERSION }}" --arg msg "$COMMIT_MSG" \
'{tag_name: $tag, name: $tag, body: $msg, draft: false, prerelease: false}')
# Create the release
RELEASE_RESPONSE=$(curl --fail --silent --show-error \
-X POST \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{
"tag_name": "v${{ env.VERSION }}",
"name": "v${{ env.VERSION }}",
"body": $BODY,
"draft": false,
"prerelease": false
}' \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases")
# Extract the release ID
RELEASE_ID=$(echo "$RELEASE_RESPONSE" | jq -r '.id')
if [ -z "$RELEASE_ID" ] || [ "$RELEASE_ID" = "null" ]; then
echo "Failed to create release" >&2
echo "$RELEASE_RESPONSE" >&2
exit 1
fi
# Upload the binaries as release attachments
for binary in bin/*; do
FILENAME=$(basename "$binary")
echo "Uploading $FILENAME..."
curl --fail --silent --show-error \
-X POST \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
-H "Content-Type: application/octet-stream" \
--upload-file "$binary" \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/$RELEASE_ID/assets?name=$FILENAME"
done