Compare commits

...

62 Commits

Author SHA1 Message Date
pepe c1126d408f :) 2023-04-12 08:34:56 +00:00
pepe 061c7e17d7 :( 2023-04-12 08:34:56 +00:00
Tristan 9cb0c2eeb7
Update HAProxy 2.8-dev to 6fd2576 2023-04-11 13:25:14 +01:00
Tristan e71e421807
Update HAProxy 2.8-dev to 6bb26d4 2023-04-07 03:29:23 +01:00
Tristan 194563879b
Add dataplaneapi artifact dependency for docker build jobs 2023-04-07 03:12:23 +01:00
Tristan 795f632c9b
Force-override dataplane api git repo build info 2023-04-07 03:08:33 +01:00
Tristan 067ef5336d
Allocate even more memory to the dataplane build 2023-04-07 03:04:39 +01:00
Tristan 817a0079ff
Add exclusion for haring 2023-04-07 02:04:06 +01:00
Tristan 371278e75f
Grant more RAM to the dataplaneapi build 2023-04-07 01:52:26 +01:00
Tristan 9702f96ba0
Add dataplaneapi requirements to GLCI 2023-04-07 01:48:58 +01:00
Tristan 2b26573f1d
Switch to bullseye 2023-04-07 01:30:24 +01:00
Tristan fa1beddbec
Undelete GLCI jobs for now 2023-04-07 01:29:26 +01:00
Tristan 9c1a13681c
Update dist-deb to be slightly less verbose 2023-04-07 01:13:43 +01:00
Tristan 975878b941
Add logs to debian auto-install setup 2023-04-07 00:53:09 +01:00
Tristan 761bccadeb
Remove dataplaneapi go mod caching
shit's fucked
2023-04-07 00:42:57 +01:00
Tristan a26fabe908
Add missing dataplaneapi pull in dist-debian 2023-04-07 00:37:30 +01:00
Tristan 05344aef65
Update dataplaneapi go modules cache key 2023-04-07 00:36:04 +01:00
Tristan ed31dff1c5
Add missing dataplaneapi workflow parameter 2023-04-06 23:25:21 +01:00
Tristan 4888f7c869
Add dataplane API to docker image 2023-04-06 23:23:40 +01:00
Tristan 36e84bc54c
Add dataplane API artifacts to debian package 2023-04-06 23:00:26 +01:00
Tristan d12b1433fe
Add dataplane API build 2023-04-06 22:56:40 +01:00
Tristan 3361b0e4d0
Add dataplane API Makefile 2023-04-06 22:46:06 +01:00
Tristan e64a9c4953
Remove Clang install for good
for now anyway; fuck GCC still but this has been painful enough as-is
2023-04-06 22:17:04 +01:00
Tristan dcecc653c8
Temporarily try without Clang setup 2023-04-06 22:06:32 +01:00
Tristan 64fd603ccc
Do not install native build deps in docker build 2023-04-06 22:05:29 +01:00
Tristan 96b0709507
Fixup docker dist again 2023-04-06 21:51:35 +01:00
Tristan 35f00bcfde
Fixup docker dist 2023-04-06 21:39:14 +01:00
Tristan 22ec656f90
Un-sudo the fetch-deps flow 2023-04-06 21:16:31 +01:00
Tristan ea70b6ee0b
Update setup-os to account for root docker user 2023-04-06 21:03:39 +01:00
Tristan cfc4de3891
Trial managed docker runner OS
I somehow can tell I'll regret it but...
2023-04-06 21:02:11 +01:00
Tristan 5831164ca8
Remove mistaken needs 2023-04-06 18:47:02 +01:00
Tristan af1523246b
Migrate to cached Clang install actions 2023-04-06 18:45:58 +01:00
Tristan a3a77900ff
Ensure all the build steps run on Debian Bullseye
fucking GLibC discrepancies
and fucking dynamic linking stupidity
2023-04-06 18:32:54 +01:00
Tristan 8eea0a2573
Fix composite action usage 2023-04-06 18:00:41 +01:00
Tristan 5cb27769c6
Remove scheduled build
Unnecessary for now
2023-04-06 17:56:43 +01:00
Tristan 46640ccb6a
Extract dependency downloads 2023-04-06 17:56:23 +01:00
Tristan d68227c3a5
Add Docker image build 2023-04-06 17:45:33 +01:00
Tristan 3f862d79f6
Fix filename filter
some days I just fucking hate my life alright
2023-04-05 22:17:30 +01:00
Tristan ebd38fb082
Fix debfile pathnames to be pure filenames
rather than filepaths
2023-04-05 22:06:31 +01:00
Tristan 802995fe61
Try to fix debfile archival 2023-04-05 21:54:16 +01:00
Tristan 13d0df84bc
Debian package archival as debfiles 2023-04-05 21:39:38 +01:00
Tristan 7e948ce854
Guess what? more anti-user tooling
I feel nothing but a deep hatred for this shit
2023-04-05 21:12:07 +01:00
Tristan 354298869c
Disable lintian and list produced artifacts 2023-04-05 21:02:42 +01:00
Tristan 017ecbe2e1
Add missing build before test, and fix debian packaging using dist-bin instead of dist-deb 2023-04-05 19:53:45 +01:00
Tristan 859199f151
Fix workflow call 2023-04-05 19:47:31 +01:00
Tristan e4550c93fa
Split build, test and packaging flows 2023-04-05 19:46:40 +01:00
Tristan 48dc3eaedd
Set UNRELEASED version for debian packaging
See https://nordisch.org/posts/the-debian-changelog-and-obs/

note: this is fucking stupid shit as usual, and making sure that Linux packaging remains as insufferable as possible. Grand indeed.
2023-04-05 19:44:49 +01:00
Tristan f6a0654c4d
Unpack VTest for dist workflow 2023-04-05 19:28:26 +01:00
Tristan c38793fd15
Run full build-test-dpkg cycle 2023-04-05 19:22:37 +01:00
Tristan 9f9e0548b8
Work around Github's yaml parser being incorrect
very cool, yes, very very cool
2023-04-05 18:06:38 +01:00
Tristan f100d93140
Install build dependencies of HAProxy 2023-04-05 18:01:58 +01:00
Tristan 1cfaa656d1
Execute actual HAProxy build 2023-04-05 17:51:42 +01:00
Tristan 26bd931cb6
Uncompress artifact correctly 2023-04-05 17:46:07 +01:00
Tristan 0f430ba122
Debug deps artifact unpacking
oh this is gonna be fun, once again
2023-04-05 17:41:50 +01:00
Tristan 260921b4e2
Use non-include-type matrix 2023-04-05 17:29:24 +01:00
Tristan ae2f85e5c1
Extract dependencies build workflow 2023-04-05 17:21:22 +01:00
Tristan 58c65b11ad
Fix callee workflow clang version arg and ensure secrets passed through 2023-04-05 17:13:26 +01:00
Tristan f374c5e9df
Extra dist workflow 2023-04-05 17:06:52 +01:00
Tristan 51fa92f284
Get away from GCC
GCC being a big pile of shit as usual, see https://github.com/vtest/VTest/issues/12
2023-04-05 16:43:01 +01:00
Tristan 935157a6eb
Start migrating to GHCI 2023-04-05 16:32:48 +01:00
Tristan 197568677e
Tweak Data Plane API build dependency
mdex version flag
2023-04-05 16:00:58 +01:00
Tristan d334db82f7
Add Data Plane API build dependency 2023-04-05 15:56:55 +01:00
19 changed files with 478 additions and 32 deletions

View File

@ -8,7 +8,7 @@ max_line_length = 120
tab_width = 4
trim_trailing_whitespace = true
[*.{md, yaml, yml}]
[*.{md,yaml,yml}]
indent_size = 2
tab_width = 2

70
.github/actions/fetch-deps/action.yml vendored Normal file
View File

@ -0,0 +1,70 @@
name: Fetch HAProxy dependencies
description: "Retrieve previously compiled build-time dependencies"
inputs:
INSTALL_NATIVE_DEPS:
description: Install native build dependencies
required: false
default: "true"
runs:
using: "composite"
steps:
- name: Dependencies - Fetch - LUA
uses: actions/download-artifact@v3
with:
name: lua-dist.tar.gz
path: deps/lua
- name: Dependencies - Unpack - LUA
shell: bash
run: |
mkdir -pv deps/lua/dist
tar -C deps/lua/dist -xf deps/lua/lua-dist.tar.gz
- name: Dependencies - Fetch - PCRE2
uses: actions/download-artifact@v3
with:
name: pcre2-dist.tar.gz
path: deps/pcre2
- name: Dependencies - Unpack - PCRE2
shell: bash
run: |
mkdir -pv deps/pcre2/dist
tar -C deps/pcre2/dist -xf deps/pcre2/pcre2-dist.tar.gz
- name: Dependencies - Fetch - QuicTLS
uses: actions/download-artifact@v3
with:
name: quictls-dist.tar.gz
path: deps/quictls
- name: Dependencies - Unpack - QuicTLS
shell: bash
run: |
mkdir -pv deps/quictls/dist
tar -C deps/quictls/dist -xf deps/quictls/quictls-dist.tar.gz
- name: Dependencies - Fetch - VTest
uses: actions/download-artifact@v3
with:
name: vtest-dist.tar.gz
path: deps/vtest
- name: Dependencies - Unpack - VTest
shell: bash
run: |
mkdir -pv deps/vtest/dist
tar -C deps/vtest/dist -xf deps/vtest/vtest-dist.tar.gz
- name: Install native build dependencies
if: ${{ inputs.INSTALL_NATIVE_DEPS == 'true' }}
shell: bash
run: |
apt update && apt install -y \
bzip2 \
devscripts \
debhelper \
pkg-config \
libpcre2-dev \
libreadline-dev \
libsystemd-dev \
zlib1g-dev

14
.github/actions/setup-os/action.yml vendored Normal file
View File

@ -0,0 +1,14 @@
name: Setup Debian-based OS dependencies
description: |
Because we live in a dumb world where I have to care about the source OS' libc version of the programs I compile...
Fuck static linking forever
runs:
using: "composite"
steps:
- name: Install OS dependencies
shell: bash
run: |
./tool/setup-debian.sh

6
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

39
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,39 @@
on:
push:
branches: [ "*" ]
tags: [ "*" ]
jobs:
haproxy-dependencies:
uses: "./.github/workflows/haproxy-deps.yml"
with:
DEBIAN_CODENAME: "bullseye"
CLANG_VERSION: 14
dist-stable:
needs: [ "haproxy-dependencies" ]
uses: "./.github/workflows/haproxy-dist.yml"
secrets: "inherit" # for Docker image publication
with:
DEBIAN_CODENAME: "bullseye"
CLANG_VERSION: 14
HAPROXY_FLAVOUR: "stable"
# https://git.haproxy.org/?p=haproxy-2.7.git;a=commit;h=4dadaaafb20106619510fd3fc6f2819f47777729
HAPROXY_GITREPO: "https://git.haproxy.org/?p=haproxy-2.7.git"
HAPROXY_VERSION: "2.7-stable"
HAPROXY_GITREF: "4dadaaafb20106619510fd3fc6f2819f47777729"
HAPROXY_DATAPLANEAPI_VERSION: "v2.7"
dist-dev:
needs: [ "haproxy-dependencies" ]
uses: "./.github/workflows/haproxy-dist.yml"
secrets: "inherit" # for Docker image publication
with:
DEBIAN_CODENAME: "bullseye"
CLANG_VERSION: 14
HAPROXY_FLAVOUR: "dev"
# https://git.haproxy.org/?p=haproxy.git;a=commit;h=6fd2576d5ebbe90039cc918d01d0f62970f7cd67
HAPROXY_GITREPO: "https://git.haproxy.org/?p=haproxy.git"
HAPROXY_VERSION: "2.8-dev"
HAPROXY_GITREF: "6fd2576d5ebbe90039cc918d01d0f62970f7cd67"
HAPROXY_DATAPLANEAPI_VERSION: "master"

38
.github/workflows/haproxy-deps.yml vendored Normal file
View File

@ -0,0 +1,38 @@
name: HAProxy dependencies
on:
workflow_call:
inputs:
DEBIAN_CODENAME:
required: true
type: string
CLANG_VERSION:
required: true
type: number
jobs:
dependency:
runs-on: ubuntu-latest
container: "docker.io/library/debian:${{ inputs.DEBIAN_CODENAME }}"
permissions:
contents: read
packages: write
strategy:
matrix:
dependency_name:
- lua
- pcre2
- quictls
- vtest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup OS
uses: "./.github/actions/setup-os"
- name: Build ${{ matrix.dependency_name }}
run: make -C deps/${{ matrix.dependency_name }}
- name: Archive ${{ matrix.dependency_name }} distribution
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.dependency_name }}-dist.tar.gz
path: deps/${{ matrix.dependency_name }}/${{ matrix.dependency_name }}-dist.tar.gz

202
.github/workflows/haproxy-dist.yml vendored Normal file
View File

@ -0,0 +1,202 @@
name: Build HAProxy version
on:
workflow_call:
inputs:
DEBIAN_CODENAME:
required: true
type: string
CLANG_VERSION:
required: true
type: number
HAPROXY_FLAVOUR:
required: true
type: string
HAPROXY_GITREPO:
required: true
type: string
HAPROXY_VERSION:
required: true
type: string
HAPROXY_GITREF:
required: true
type: string
HAPROXY_DATAPLANEAPI_VERSION:
required: true
type: string
# For Docker publication
env:
REGISTRY: "ghcr.io"
IMAGE_NAME: "${{ github.repository }}"
jobs:
regtests:
runs-on: ubuntu-latest
container: "docker.io/library/debian:${{ inputs.DEBIAN_CODENAME }}"
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup OS
uses: "./.github/actions/setup-os"
- name: Fetch build-time dependencies
uses: "./.github/actions/fetch-deps"
- name: Build and test
continue-on-error: true
run: |
make -C haproxy \
HAPROXY_GITREPO="${{ inputs.HAPROXY_GITREPO }}" \
HAPROXY_VERSION="${{ inputs.HAPROXY_VERSION }}" \
HAPROXY_GITREF="${{ inputs.HAPROXY_GITREF }}" \
BUILD_PATCHES_DIR="patches-${{ inputs.HAPROXY_FLAVOUR }}" \
build test
dataplaneapi:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v4.0.0
with:
go-version: '1.19'
- name: Build Dataplane API
run: |
make -C deps/dataplaneapi DATAPLANEAPI_VERSION=${{ inputs.HAPROXY_DATAPLANEAPI_VERSION }}
- name: Archive binary tarball
uses: actions/upload-artifact@v3
with:
name: dataplaneapi-${{ inputs.HAPROXY_FLAVOUR }}.tar.gz
path: deps/dataplaneapi/dataplaneapi-dist.tar.gz
dist-binary:
runs-on: ubuntu-latest
container: "docker.io/library/debian:${{ inputs.DEBIAN_CODENAME }}"
permissions:
contents: read
packages: write
needs: [ dataplaneapi, regtests ]
strategy:
matrix:
dist_type: [ bin, deb ]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup OS
uses: "./.github/actions/setup-os"
- name: Fetch build-time dependencies
uses: "./.github/actions/fetch-deps"
# Standalone as it's version-dependent
- name: Dependencies - Fetch - Data Plane API
uses: actions/download-artifact@v3
with:
name: dataplaneapi-${{ inputs.HAPROXY_FLAVOUR }}.tar.gz
path: deps/dataplaneapi
- name: Dependencies - Unpack - Data Plane API
shell: bash
run: |
mkdir -pv deps/dataplaneapi/dist
tar -C deps/dataplaneapi/dist -xf deps/dataplaneapi/dataplaneapi-dist.tar.gz
- name: Build distribution
env:
BUILD_MESSAGE: "${{ github.event.head_commit.message }}"
run: |
make -C haproxy \
HAPROXY_GITREPO="${{ inputs.HAPROXY_GITREPO }}" \
HAPROXY_VERSION="${{ inputs.HAPROXY_VERSION }}" \
HAPROXY_GITREF="${{ inputs.HAPROXY_GITREF }}" \
BUILD_PATCHES_DIR="patches-${{ inputs.HAPROXY_FLAVOUR }}" \
dist-${{ matrix.dist_type }}
ls -l haproxy
- name: Archive binary tarball
if: ${{ matrix.dist_type == 'bin' }}
uses: actions/upload-artifact@v3
with:
name: haproxy-${{ inputs.HAPROXY_FLAVOUR }}.tar.gz
path: haproxy/haproxy-dist.tar.gz
- name: Collect Debian packages
if: ${{ matrix.dist_type == 'deb' }}
run: |
echo "DEB_BIN=$(ls -1 haproxy/haproxy-dbgsym_*.deb | cut -d'/' -f2)" | tee -a $GITHUB_ENV
echo "DEB_DBG=$(ls -1 haproxy/haproxy_*.deb | cut -d'/' -f2)" | tee -a $GITHUB_ENV
- name: Archive Debian packages - binary
if: ${{ matrix.dist_type == 'deb' }}
uses: actions/upload-artifact@v3
with:
name: ${{ env.DEB_BIN }}
path: haproxy/${{ env.DEB_BIN }}
- name: Archive Debian packages - debug symbols
if: ${{ matrix.dist_type == 'deb' }}
uses: actions/upload-artifact@v3
with:
name: ${{ env.DEB_DBG }}
path: haproxy/${{ env.DEB_DBG }}
dist-docker:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
needs: [ dataplaneapi, dist-binary, regtests ]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Fetch build-time dependencies
uses: "./.github/actions/fetch-deps"
with:
INSTALL_NATIVE_DEPS: "false"
# Standalone as it's version-dependent
- name: Dependencies - Fetch - Data Plane API
uses: actions/download-artifact@v3
with:
name: dataplaneapi-${{ inputs.HAPROXY_FLAVOUR }}.tar.gz
path: deps/dataplaneapi
- name: Dependencies - Unpack - Data Plane API
shell: bash
run: |
mkdir -pv deps/dataplaneapi/dist
tar -C deps/dataplaneapi/dist -xf deps/dataplaneapi/dataplaneapi-dist.tar.gz
- name: Fetch HAProxy dist
uses: actions/download-artifact@v3
with:
name: haproxy-${{ inputs.HAPROXY_FLAVOUR }}.tar.gz
path: haproxy
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=sha,event=push,enable=true,prefix=branch-{{ branch }}-${{ inputs.HAPROXY_VERSION }}-git-,format=short
type=sha,event=push,enable={{ is_default_branch }},prefix=${{ inputs.HAPROXY_VERSION }}-git-,format=short
type=raw,event=push,enable={{ is_default_branch }},value=${{ inputs.HAPROXY_VERSION }}
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View File

@ -31,6 +31,10 @@ variables: &default-variables
KUBERNETES_MEMORY_REQUEST: 2Gi
KUBERNETES_MEMORY_LIMIT: 2Gi
.build-resources-l: &build-resources-l
KUBERNETES_MEMORY_REQUEST: 4Gi
KUBERNETES_MEMORY_LIMIT: 4Gi
.haproxy_stable: &haproxy-stable
HAPROXY_GITREPO: "https://git.haproxy.org/?p=haproxy-2.7.git"
HAPROXY_VERSION: 2.7-stable
@ -41,12 +45,12 @@ variables: &default-variables
.haproxy_dev: &haproxy-dev
HAPROXY_GITREPO: "https://git.haproxy.org/?p=haproxy.git"
HAPROXY_VERSION: 2.8-dev
# https://git.haproxy.org/?p=haproxy.git;a=commit;h=7d6270a84554283557c2707d6df2c275e81c8bf1
HAPROXY_GITREF: "7d6270a84554283557c2707d6df2c275e81c8bf1"
# https://git.haproxy.org/?p=haproxy.git;a=commit;h=6fd2576d5ebbe90039cc918d01d0f62970f7cd67
HAPROXY_GITREF: "6fd2576d5ebbe90039cc918d01d0f62970f7cd67"
BUILD_PATCHES_DIR: "patches-dev"
.build-job: &build-job
image: registry.gitlab.com/mangadex-pub/debuilder/buster:main
image: ghcr.io/mangadex-pub/debuilder:main-bullseye
needs: [ ]
before_script:
- apt -qq update
@ -57,6 +61,18 @@ variables: &default-variables
# Common dependencies
#----------------------
dataplaneapi:
<<: *build-job
image: docker.io/library/golang:1.19-bullseye
stage: dependencies
script: make -C deps/dataplaneapi
variables:
<<: *default-variables
<<: *build-resources-l
artifacts:
expire_in: 7 days
paths: [ "deps/dataplaneapi/dataplaneapi-dist.tar.gz" ]
lua:
<<: *build-job
stage: dependencies
@ -102,6 +118,8 @@ vtest:
paths: [ "deps/vtest/dist/vtest" ]
.needs-dependencies: &needs-dependencies
- job: dataplaneapi
artifacts: true
- job: lua
artifacts: true
- job: pcre2
@ -118,9 +136,9 @@ vtest:
stage: build
script:
- apt install -y --no-install-recommends -qq bzip2 git
- mkdir deps/lua/dist && tar -C deps/lua/dist -xf deps/lua/lua-dist.tar.gz
- mkdir deps/pcre2/dist && tar -C deps/pcre2/dist -xf deps/pcre2/pcre2-dist.tar.gz
- mkdir deps/quictls/dist && tar -C deps/quictls/dist -xf deps/quictls/quictls-dist.tar.gz
- mkdir deps/lua/dist && tar -C deps/lua/dist -xf deps/lua/lua-dist.tar.gz
- mkdir deps/pcre2/dist && tar -C deps/pcre2/dist -xf deps/pcre2/pcre2-dist.tar.gz
- mkdir deps/quictls/dist && tar -C deps/quictls/dist -xf deps/quictls/quictls-dist.tar.gz
- make -C haproxy HAPROXY_GITREPO="$HAPROXY_GITREPO" HAPROXY_VERSION="$HAPROXY_VERSION" HAPROXY_GITREF="$HAPROXY_GITREF" BUILD_PATCHES_DIR="$BUILD_PATCHES_DIR"
needs: *needs-dependencies
artifacts:
@ -132,9 +150,9 @@ vtest:
stage: test
script:
- apt install -y --no-install-recommends -qq bzip2 git
- mkdir deps/lua/dist && tar -C deps/lua/dist -xf deps/lua/lua-dist.tar.gz
- mkdir deps/pcre2/dist && tar -C deps/pcre2/dist -xf deps/pcre2/pcre2-dist.tar.gz
- mkdir deps/quictls/dist && tar -C deps/quictls/dist -xf deps/quictls/quictls-dist.tar.gz
- mkdir deps/lua/dist && tar -C deps/lua/dist -xf deps/lua/lua-dist.tar.gz
- mkdir deps/pcre2/dist && tar -C deps/pcre2/dist -xf deps/pcre2/pcre2-dist.tar.gz
- mkdir deps/quictls/dist && tar -C deps/quictls/dist -xf deps/quictls/quictls-dist.tar.gz
- make -C haproxy HAPROXY_GITREPO="$HAPROXY_GITREPO" HAPROXY_VERSION="$HAPROXY_VERSION" HAPROXY_GITREF="$HAPROXY_GITREF" BUILD_PATCHES_DIR="$BUILD_PATCHES_DIR" build test
needs:
- *needs-dependencies
@ -146,9 +164,10 @@ vtest:
stage: publish
script:
- apt install -y --no-install-recommends -qq bzip2 devscripts debhelper pkg-config
- mkdir deps/lua/dist && tar -C deps/lua/dist -xf deps/lua/lua-dist.tar.gz
- mkdir deps/pcre2/dist && tar -C deps/pcre2/dist -xf deps/pcre2/pcre2-dist.tar.gz
- mkdir deps/quictls/dist && tar -C deps/quictls/dist -xf deps/quictls/quictls-dist.tar.gz
- mkdir deps/dataplaneapi/dist && tar -C deps/dataplaneapi/dist -xf deps/dataplaneapi/dataplaneapi-dist.tar.gz
- mkdir deps/lua/dist && tar -C deps/lua/dist -xf deps/lua/lua-dist.tar.gz
- mkdir deps/pcre2/dist && tar -C deps/pcre2/dist -xf deps/pcre2/pcre2-dist.tar.gz
- mkdir deps/quictls/dist && tar -C deps/quictls/dist -xf deps/quictls/quictls-dist.tar.gz
- export BUILD_MESSAGE="$CI_COMMIT_MESSAGE"
- make -C haproxy dist-deb HAPROXY_GITREPO="$HAPROXY_GITREPO" HAPROXY_VERSION="$HAPROXY_VERSION" HAPROXY_GITREF="$HAPROXY_GITREF" BUILD_PATCHES_DIR="$BUILD_PATCHES_DIR"
- |
@ -320,6 +339,8 @@ docker:stable:
<<: *build-resources-m
<<: *haproxy-stable
needs:
- job: "dataplaneapi"
artifacts: true
- job: "quictls"
artifacts: true
- job: "regtests:stable"
@ -334,6 +355,8 @@ docker:dev:
<<: *build-resources-m
<<: *haproxy-dev
needs:
- job: "dataplaneapi"
artifacts: true
- job: "quictls"
artifacts: true
- job: "regtests:dev"

View File

@ -5,6 +5,10 @@ FROM base as dists
RUN apt -qq update && apt install -qq -y bzip2
WORKDIR /tmp/dataplaneapi
COPY ./deps/dataplaneapi/dataplaneapi-dist.tar.gz /tmp/dataplaneapi/dataplaneapi.tar.gz
RUN ls -alh && tar xf dataplaneapi.tar.gz
WORKDIR /tmp/quictls
COPY ./deps/quictls/quictls-dist.tar.gz /tmp/quictls/quictls.tar.gz
RUN ls -alh && tar xf quictls.tar.gz
@ -22,6 +26,7 @@ MAINTAINER MangaDex <opensource@mangadex.org>
ARG CANONICAL_VERSION="local-SNAPSHOT"
LABEL Version=${CANONICAL_VERSION}
COPY --chown=root:root --from=dists /tmp/dataplaneapi/usr /usr
COPY --chown=root:root --from=dists /tmp/quictls/opt /opt
COPY --chown=root:root --from=dists /tmp/haproxy/usr /usr

View File

@ -1,6 +1,9 @@
all: deps haproxy
deps: deps/lua deps/pcre2 deps/quictls deps/vtest
deps: deps/dataplaneapi deps/lua deps/pcre2 deps/quictls deps/vtest
deps/dataplaneapi:
$(MAKE) -C "deps/dataplaneapi"
deps/lua:
$(MAKE) -C "deps/lua"

40
deps/dataplaneapi/Makefile vendored Normal file
View File

@ -0,0 +1,40 @@
DATAPLANEAPI_VERSION = v2.7
DATAPLANEAPI_SOURCES = https://codeload.github.com/haproxytech/dataplaneapi/tar.gz/$(DATAPLANEAPI_VERSION)
DATAPLANEAPI_TARBALL = dataplaneapi-$(DATAPLANEAPI_VERSION).tar.gz
DATAPLANEAPI_BUILDIR = src
DATAPLANEAPI_DESTDIR = dist
DATAPLANEAPI_DESTDIR_ABS = $(shell realpath $(DATAPLANEAPI_DESTDIR))
DATAPLANEAPI_ARCHIVE = dataplaneapi-dist.tar.gz
BUILD_VERSION_REPOSHA = $(shell git rev-parse --short HEAD)
all: build $(DATAPLANEAPI_DESTDIR) $(DATAPLANEAPI_ARCHIVE)
$(DATAPLANEAPI_TARBALL):
curl -fsSL -o "$(DATAPLANEAPI_TARBALL)" "$(DATAPLANEAPI_SOURCES)"
$(DATAPLANEAPI_BUILDIR): $(DATAPLANEAPI_TARBALL)
@if ! [ -d "$(DATAPLANEAPI_BUILDIR)" ]; then mkdir -v "$(DATAPLANEAPI_BUILDIR)"; fi
tar -C $(DATAPLANEAPI_BUILDIR) --strip-components=1 -xf "$(DATAPLANEAPI_TARBALL)"
build: $(DATAPLANEAPI_BUILDIR)
cd "$(DATAPLANEAPI_BUILDIR)" && make \
GIT_HEAD_COMMIT="$(DATAPLANEAPI_VERSION)" \
GIT_MODIFIED="+mangadex-$(BUILD_VERSION_REPOSHA)" \
GIT_REPO="mangadex-pub/haproxy@git{hub, lab}"
"$(DATAPLANEAPI_BUILDIR)/build/dataplaneapi" --version
$(DATAPLANEAPI_DESTDIR): build
if ! [ -d "$(DATAPLANEAPI_DESTDIR)/usr/sbin" ]; then mkdir -pv "$(DATAPLANEAPI_DESTDIR)/usr/sbin"; fi
cp -fv "$(DATAPLANEAPI_BUILDIR)/build/dataplaneapi" "$(DATAPLANEAPI_DESTDIR)/usr/sbin/dataplaneapi"
$(DATAPLANEAPI_ARCHIVE): $(DATAPLANEAPI_DESTDIR)
tar -C "$(DATAPLANEAPI_DESTDIR)" -cjf "$(DATAPLANEAPI_ARCHIVE)" "usr"
clean:
rm -fv "$(DATAPLANEAPI_TARBALL)"
rm -rf "$(DATAPLANEAPI_BUILDIR)"
rm -rf "$(DATAPLANEAPI_DESTDIR)"
rm -fv "$(DATAPLANEAPI_ARCHIVE)"
.PHONY: clean build

2
deps/lua/Makefile vendored
View File

@ -9,7 +9,7 @@ LUA_ARCHIVE = lua-dist.tar.gz
all: build $(LUA_DESTDIR) $(LUA_ARCHIVE)
$(LUA_TARBALL):
curl -fsSL -o "$(LUA_TARBALL)" "$(LUA_SOURCES)"
xbps-fetch -o "$(LUA_TARBALL)" "$(LUA_SOURCES)"
$(LUA_BUILDIR): $(LUA_TARBALL)
@if ! [ -d "$(LUA_BUILDIR)" ]; then mkdir -v "$(LUA_BUILDIR)"; fi

2
deps/pcre2/Makefile vendored
View File

@ -9,7 +9,7 @@ PCRE2_ARCHIVE = pcre2-dist.tar.gz
all: build $(PCRE2_DESTDIR) $(PCRE2_ARCHIVE)
$(PCRE2_TARBALL):
curl -fsSL -o "$(PCRE2_TARBALL)" "$(PCRE2_SOURCES)"
xbps-fetch -o "$(PCRE2_TARBALL)" "$(PCRE2_SOURCES)"
$(PCRE2_BUILDIR): $(PCRE2_TARBALL)
@if ! [ -d "$(PCRE2_BUILDIR)" ]; then mkdir -v "$(PCRE2_BUILDIR)"; fi

View File

@ -1,6 +1,5 @@
OPENSSL_VERSION = 1.1.1t
BUILD_VERSION_REPOSHA = $(shell git rev-parse --short HEAD)
QUICTLS_BUILD_VERSION = quic-mangadex-$(BUILD_VERSION_REPOSHA)
QUICTLS_TAG = OpenSSL_$(subst .,_,$(OPENSSL_VERSION))-quic1
QUICTLS_SOURCES = https://codeload.github.com/quictls/openssl/tar.gz/$(QUICTLS_TAG)
@ -13,16 +12,15 @@ QUICTLS_ARCHIVE = quictls-dist.tar.gz
all: build $(QUICTLS_DESTDIR) $(QUICTLS_ARCHIVE)
$(QUICTLS_TARBALL):
curl -sfS -o "$(QUICTLS_TARBALL)" "$(QUICTLS_SOURCES)"
xbps-fetch -o "$(QUICTLS_TARBALL)" "$(QUICTLS_SOURCES)"
$(QUICTLS_BUILDIR): $(QUICTLS_TARBALL)
@if ! [ -d "$(QUICTLS_BUILDIR)" ]; then mkdir -v "$(QUICTLS_BUILDIR)"; fi
tar -C $(QUICTLS_BUILDIR) --strip-components=1 -xf "$(QUICTLS_TARBALL)"
build: $(QUICTLS_BUILDIR)
cd "$(QUICTLS_BUILDIR)" && sed -i 's/^# define OPENSSL_VERSION_TEXT.*$\/# define OPENSSL_VERSION_TEXT "OpenSSL $(OPENSSL_VERSION)+$(QUICTLS_BUILD_VERSION) $(shell date -u +'%e %b %Y')"/g' "include/openssl/opensslv.h"
cd "$(QUICTLS_BUILDIR)" && CC=cc ./config --prefix="/opt/quictls" --openssldir="/opt/quictls" --libdir="lib" no-shared
$(MAKE) -C "$(QUICTLS_BUILDIR)" -j "$(shell nproc)" VERSION=$(OPENSSL_VERSION)+quic-mangadex-$(BUILD_VERSION_REPOSHA)
$(MAKE) -C "$(QUICTLS_BUILDIR)" -j "$(shell nproc)"
"$(QUICTLS_BUILDIR)/apps/openssl" version
$(MAKE) buildinfo_$(shell uname -s)
@ -42,7 +40,7 @@ $(QUICTLS_DESTDIR): build
$(QUICTLS_DESTDIR_ABS)/opt/quictls/bin/openssl version
$(QUICTLS_ARCHIVE): $(QUICTLS_DESTDIR)
tar -C "$(QUICTLS_DESTDIR)" -cjf "$(QUICTLS_ARCHIVE)" "opt"
tar -C "$(QUICTLS_DESTDIR)" --owner=root:0 --group=root:0 -czf "$(QUICTLS_ARCHIVE)" "opt"
clean:
rm -fv "$(QUICTLS_TARBALL)"

8
deps/vtest/Makefile vendored
View File

@ -3,11 +3,12 @@ VTEST_SOURCES = https://codeload.github.com/vtest/vtest/tar.gz/master
VTEST_TARBALL = VTEST-$(VTEST_VERSION).tar.gz
VTEST_BUILDIR = src
VTEST_DESTDIR = dist
VTEST_ARCHIVE = vtest-dist.tar.gz
all: build $(VTEST_DESTDIR) $(VTEST_DESTDIR)
all: build $(VTEST_DESTDIR) $(VTEST_ARCHIVE)
$(VTEST_TARBALL):
curl -sfS -o "$(VTEST_TARBALL)" "$(VTEST_SOURCES)"
xbps-fetch -o "$(VTEST_TARBALL)" "$(VTEST_SOURCES)"
$(VTEST_BUILDIR): $(VTEST_TARBALL)
@if ! [ -d "$(VTEST_BUILDIR)" ]; then mkdir -v "$(VTEST_BUILDIR)"; fi
@ -31,6 +32,9 @@ $(VTEST_DESTDIR): build
cp -fv "$(VTEST_BUILDIR)/vtest" "$(VTEST_DESTDIR)/vtest"
chmod -v +x "$(VTEST_DESTDIR)/vtest"
$(VTEST_ARCHIVE): $(VTEST_DESTDIR)
tar -C "$(VTEST_DESTDIR)" -cjf "$(VTEST_ARCHIVE)" "."
clean:
rm -fv "$(VTEST_TARBALL)"
rm -rf "$(VTEST_BUILDIR)"

View File

@ -27,11 +27,9 @@ DEBUG_CFLAGS = -ggdb3 -gdwarf-4
MAKEARGS = DEBUG="-DDEBUG_MEMORY_POOLS -DDEBUG_STRICT" \
DEBUG_CFLAGS="$(DEBUG_CFLAGS)"\
DEFINE="-DMAX_SESS_STKCTR=5" \
IGNOREGIT=true \
ADDLIB="-Wl,-rpath,/opt/quictls/lib" \
TARGET="linux-glibc" \
EXTRAVERSION="+mangadex-$(BUILD_VERSION_REPOSHA)" \
VERDATE="$(shell date -u -I'minutes')" \
USE_LIBCRYPT=1 \
USE_LUA=1 \
@ -54,7 +52,7 @@ MAKEARGS_LINUX = $(MAKEARGS) \
USE_PCRE2_JIT=1 \
USE_STATIC_PCRE2=1 \
USE_NS=1 \
USE_SYSTEMD=1 \
SBINDIR=/usr/local/bin
TARGET=linux-glibc
MAKEARGS_DARWIN = $(MAKEARGS) \
@ -68,7 +66,7 @@ dist-bin: build $(HAPROXY_DESTDIR) $(HAPROXY_ARCHIVE)
dist-deb: build-deb
$(HAPROXY_TARBALL):
curl -sfS -o "$(HAPROXY_TARBALL)" "$(HAPROXY_SOURCES)"
xbps-fetch -o "$(HAPROXY_TARBALL)" "$(HAPROXY_SOURCES)"
$(HAPROXY_BUILDIR): $(HAPROXY_TARBALL)
@if ! [ -d "$(HAPROXY_BUILDIR)" ]; then mkdir -v "$(HAPROXY_BUILDIR)"; fi
@ -105,7 +103,7 @@ $(HAPROXY_DESTDIR):
$(HAPROXY_DESTDIR_ABS)/usr/local/sbin/haproxy -vv
$(HAPROXY_ARCHIVE): $(HAPROXY_DESTDIR)
tar -C "$(HAPROXY_DESTDIR)" -cjf "$(HAPROXY_ARCHIVE)" "usr"
tar -C "$(HAPROXY_DESTDIR)" --owner=root:0 --group=root:0 -czf "$(HAPROXY_ARCHIVE)" "usr"
$(HAPROXY_DEBORIG): $(HAPROXY_TARBALL)
cp -fv "$(HAPROXY_TARBALL)" "$(HAPROXY_DEBORIG)"
@ -121,7 +119,7 @@ prepare-deb: $(HAPROXY_DEBORIG) $(HAPROXY_BUILDIR)
cat debian/changelog >> "$(HAPROXY_BUILDIR)/debian/changelog"
build-deb: prepare-deb
cd $(HAPROXY_BUILDIR) && debuild -us -uc
cd $(HAPROXY_BUILDIR) && debuild -us -uc --lintian-opts --no-lintian
rm -fv $(HAPROXY_TARBALL)
rm -rf $(HAPROXY_BUILDIR)

View File

@ -1,4 +1,4 @@
haproxy ($BUILD_VERSION) experimental; urgency=medium
haproxy ($BUILD_VERSION) UNRELEASED; urgency=medium
* $BUILD_MESSAGE

View File

@ -1,5 +1,6 @@
#!/usr/bin/make -f
DEP_DIST_ROOT_DATAPLANEAPI = $(shell realpath ../../deps/dataplaneapi/dist)
DEP_DIST_ROOT_LUA = $(shell realpath ../../deps/lua/dist)
DEP_DIST_ROOT_PCRE2 = $(shell realpath ../../deps/pcre2/dist)
DEP_DIST_ROOT_QUICTLS = $(shell realpath ../../deps/quictls/dist)
@ -60,10 +61,12 @@ override_dh_auto_clean:
override_dh_auto_install-arch:
cp -rf $(DEP_DIST_ROOT_QUICTLS)/opt debian/haproxy/opt
cp -rf $(DEP_DIST_ROOT_DATAPLANEAPI)/usr debian/haproxy/usr
$(MAKE) -j $(shell nproc) $(MAKEARGS) install
if [ -f "dev/haring/haring" ]; then install -m 0755 -D dev/haring/haring debian/haproxy/usr/sbin/haring; fi
install -m 0644 -D debian/rsyslog.conf debian/haproxy/etc/rsyslog.d/49-haproxy.conf
install -m 0644 -D debian/logrotate.conf debian/haproxy/etc/logrotate.d/haproxy
ls -1 debian/haproxy
override_dh_auto_install-indep:
@ -85,4 +88,8 @@ override_dh_strip:
# see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=933541, still not shipped in buster
# and don't want to update to bullseye because of GCC version diff with Ubuntu 20.04... *sigh*
override_dh_dwz:
dh_dwz --no-dwz-multifile --exclude="openssl"
dh_dwz \
--no-dwz-multifile \
--exclude="dataplaneapi" \
--exclude="haring" \
--exclude="openssl"

View File

@ -6,7 +6,6 @@ export DEBIAN_FRONTEND=noninteractive
apt -qq update
apt -qq -y --no-install-recommends install apt-utils apt-transport-https ca-certificates
sed -i -e 's/http\:/https\:/g' /etc/apt/sources.list
apt -qq update
apt -qq -y --no-install-recommends install \
build-essential \