-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Separate GHA build and package steps
- Loading branch information
Showing
1 changed file
with
134 additions
and
29 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 |
---|---|---|
@@ -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: | ||
|
@@ -15,53 +21,152 @@ 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 | ||
- 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 |