Skip to content

Commit

Permalink
Separate GHA build and package steps
Browse files Browse the repository at this point in the history
  • Loading branch information
growse committed Jan 23, 2024
1 parent 422375e commit 5f962b9
Showing 1 changed file with 135 additions and 29 deletions.
164 changes: 135 additions & 29 deletions .github/workflows/make-deb-and-publish.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
---
env:
PACKAGE_NAME: promtail
APT_DEPENDENCIES: "libsystemd-dev gccgo-aarch64-linux-gnu gccgo-arm-linux-gnueabi"
PACKAGE_VERSION: v2.9.3
APT_DEPENDENCIES: "git build-essential libsystemd-dev gccgo-aarch64-linux-gnu gccgo-arm-linux-gnueabi"

name: Build, package and publish
"on":
push:
paths-ignore:
- "*.md"
- LICENSE
- .github/renovate.json
- .gitignore
branches:
- main
pull_request:
Expand All @@ -15,53 +21,153 @@ name: Build, package and publish
jobs:
build:
name: Build & Package
# Check GLIBC versioning on clients if you upgrade this
runs-on: ubuntu-latest
strategy:
matrix:
goarch:
- amd64
- arm64
- arm
fail-fast: true
container: debian:bookworm-slim
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Install build dependencies
run: apt-get update && apt-get install -y ${APT_DEPENDENCIES}
if: ${{ env.APT_DEPENDENCIES != '' }}
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
with:
repository: grafana/loki.git
ref: ${{ env.PACKAGE_VERSION }}
- name: Set up Golang
uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5
with:
go-version: 1.21
- name: Set up Ruby
uses: ruby/setup-ruby@v1
cache: false
architecture: ${{ matrix.goarch }}
- name: Golang cache
uses: actions/cache@v4
with:
bundler-cache: true
- name: Make deb package
run: make -j$(nproc) package
path: |
${{ env.HOME }}/.cache/go-build
${{ env.HOME }}/.cache/go-mod
key: ${{ runner.os }}-go-${{ matrix.goarch }}-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-${{ matrix.goarch }}-
- name: Build
run: |
case ${ARCH} in
amd64)
export CC=gcc;;
arm64)
export CC=aarch64-linux-gnu-gcc;;
arm)
export CC=arm-linux-gnueabi-gcc;;
esac
git config --global --add safe.directory '*'
export GIT_REVISION=$(git rev-parse --short HEAD)
echo $GIT_REVISION
export GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo $GIT_BRANCH
export IMAGE_TAG=$(./tools/image-tag)
echo $IMAGE_TAG
export DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
GOOS=linux GOARCH=${ARCH} go build -ldflags '-s -w -X ${VPREFIX}.Branch=${GIT_BRANCH} -X ${VPREFIX}.Version=${IMAGE_TAG} -X ${VPREFIX}.Revision=${GIT_REVISION} -X ${VPREFIX}.BuildUser=$(whoami)@$(hostname) -X ${VPREFIX}.BuildDate=${DATE}' -tags netgo -mod vendor --tags=promtail_journal_enabled -o dist/${PACKAGE_NAME}_linux_${ARCH} ./clients/cmd/promtail
env:
BUILD_NUMBER: ${{ github.run_number }}
- name: Upload deb file
ARCH: ${{ matrix.goarch }}
VPREFIX: github.com/grafana/loki/pkg/util/build
CGO_ENABLED: 1
GOARM: 6
- name: Upload artifact
uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4
with:
name: deb
path: "*.deb"
publish:
name: Publish
name: binary-${{ matrix.goarch }}
path: dist/${{ env.PACKAGE_NAME }}_linux_${{ matrix.goarch }}

build-package:
name: Build Deb Package
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
strategy:
matrix:
goarch:
- amd64
- arm64
- arm
fail-fast: true
needs: build
steps:
- name: Check out code
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Download deb artifact
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Download build artifact
uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4
with:
name: deb
- name: Upload to Apt repo
env:
APT_CREDENTIALS: ${{ secrets.APT_CREDENTIALS }}
APT_KEY_PASSPHRASE: ${{ secrets.APT_KEY_PASSPHRASE }}
name: binary-${{ matrix.goarch }}
- name: Package
run: |
echo $APT_CREDENTIALS > aptly-auth
find -type f -name "*.deb" -exec curl -f --netrc-file aptly-auth -XPOST -F file=@{} https://apttoo.growse.com/api/files/${PACKAGE_NAME} \;
export result=$(curl -f --netrc-file aptly-auth -X POST https://apttoo.growse.com/api/repos/defaultrepo/file/${PACKAGE_NAME})
echo $result
export failed=$(echo $result | jq '.FailedFiles | length')
if [[ "$failed" != "0" ]]; then exit 1; fi
curl -f --netrc-file aptly-auth -X PUT -H"Content-type: application/json" --data '{"Signing":{"Passphrase":"'"$APT_KEY_PASSPHRASE"'","Batch":true}}' https://apttoo.growse.com/api/publish/:./stablish
case ${ARCH} in
amd64)
export DEB_ARCH=amd64;;
arm)
export DEB_ARCH=armhf;;
arm64)
export DEB_ARCH=aarch64;;
esac
ls -laht
bundle exec fpm -f \
--license Apache \
--deb-priority optional \
--deb-systemd-enable \
--deb-systemd-restart-after-upgrade \
--deb-systemd-auto-start \
--maintainer [email protected] \
--vendor https://grafana.com/ \
-n $(DEBNAME) \
--description "$(APPDESCRIPTION)" \
--url $(APPURL) \
--deb-changelog $(APPHOME)/CHANGELOG.md \
--prefix / \
-a $(DEB_$*_ARCH) \
-v $(DEBVERSION) \
--before-install deb_scripts/before_install.sh \
--before-upgrade deb_scripts/before_upgrade.sh \
--after-remove deb_scripts/after_remove.sh \
--deb-systemd deb_scripts/promtail.service \
--config-files /etc/promtail/promtail.yml \
promtail.yml=/etc/promtail/promtail.yml \
promtail=/usr/bin/promtail
env:
DEB_NAME: ${{ env.PACKAGE_NAME }}
APP_DESCRIPTION: ${{ env.PACKAGE_DESCRIPTION }}
APP_URL: https://github.com/grafana/loki/blob/master/docs/clients/promtail/
ARCH: ${{ matrix.goarch }}
PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }}
- name: Upload build artifact
uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4
with:
name: deb-package-${{ matrix.goarch }}
path: "*.deb"
# publish:
# name: Publish
# runs-on: ubuntu-latest
# if: github.event_name != 'pull_request'
# needs: build
# steps:
# - name: Download deb artifact
# uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4
# with:
# name: deb-package-*
# - name: Upload to Apt repo
# env:
# APT_CREDENTIALS: ${{ secrets.APT_CREDENTIALS }}
# APT_KEY_PASSPHRASE: ${{ secrets.APT_KEY_PASSPHRASE }}
# run: |
# echo $APT_CREDENTIALS > aptly-auth
# find -type f -name "*.deb" -exec curl -f --netrc-file aptly-auth -XPOST -F file=@{} https://apttoo.growse.com/api/files/${PACKAGE_NAME} \;
# export result=$(curl -f --netrc-file aptly-auth -X POST https://apttoo.growse.com/api/repos/defaultrepo/file/${PACKAGE_NAME})
# echo $result
# export failed=$(echo $result | jq '.FailedFiles | length')
# if [[ "$failed" != "0" ]]; then exit 1; fi
# curl -f --netrc-file aptly-auth -X PUT -H"Content-type: application/json" --data '{"Signing":{"Passphrase":"'"$APT_KEY_PASSPHRASE"'","Batch":true}}' https://apttoo.growse.com/api/publish/:./stablish

0 comments on commit 5f962b9

Please sign in to comment.