All checks were successful
Build (artifact) / build (push) Successful in 25s
85 lines
2.9 KiB
YAML
85 lines
2.9 KiB
YAML
name: Build (artifact)
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches: [ "master" ]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
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: certman-${{ env.VERSION }}-amd64
|
|
if-no-files-found: error
|
|
|
|
- name: Create release and upload binary
|
|
run: |
|
|
# 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": "${{ env.COMMIT_MSG }}",
|
|
"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 binary as a release attachment
|
|
curl --fail --silent --show-error \
|
|
-X POST \
|
|
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
|
|
-H "Content-Type: application/octet-stream" \
|
|
--upload-file "certman-${{ env.VERSION }}-amd64" \
|
|
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/$RELEASE_ID/assets?name=certman-${{ env.VERSION }}-amd64" |