mirror of https://github.com/sysown/proxysql
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
7.4 KiB
190 lines
7.4 KiB
name: CI-package-build
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
workflow_call:
|
|
inputs:
|
|
trigger:
|
|
type: string
|
|
|
|
env:
|
|
SHA: ${{ inputs.trigger && fromJson(inputs.trigger).event.workflow_run.head_sha || github.sha }}
|
|
BRANCH: ${{ inputs.trigger && fromJson(inputs.trigger).event.workflow_run.head_branch || github.ref_name }}
|
|
BIN_PKG:
|
|
|
|
jobs:
|
|
clean:
|
|
runs-on: ubuntu-24.04
|
|
outputs:
|
|
gitdescribe: ${{ steps.gitdescribe.outputs.gitdescribe }}
|
|
steps:
|
|
|
|
- name: Git describe
|
|
id: gitdescribe
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
VERS=$(gh api repos/${{ github.repository }}/git/refs/tags/${BRANCH#v} | jq -r '.[-1].ref' | sed -e 's|refs/tags/||g')
|
|
HASH=$(gh api repos/${{ github.repository }}/git/refs/heads/${BRANCH} | jq -r '.object.sha' | cut -c-7)
|
|
CMTS=$(gh api repos/${{ github.repository }}/compare/${VERS}...${BRANCH} | jq -r '.ahead_by')
|
|
echo "GIT_VERSION=${VERS}-${CMTS}-g${HASH}" >> $GITHUB_ENV
|
|
echo "gitdescribe=${VERS}-${CMTS}-g${HASH}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Clean packages
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
# gh release delete-asset ${BRANCH}-head
|
|
gh release delete ${{ env.BRANCH }}-head --repo ${{ github.repository }} --cleanup-tag || true
|
|
gh release create ${{ env.BRANCH }}-head --repo ${{ github.repository }} --title "${{ env.BRANCH }}-head - ${{ env.GIT_VERSION }}" --target ${{ env.SHA }} --draft --prerelease --notes-file - << EOF
|
|
## Development Snapshot
|
|
|
|
GH-Action Package-Build on ${{ env.BRANCH }} merge
|
|
|
|
Version : **${{ env.GIT_VERSION }}**
|
|
|
|
Started : **$(date '+%Y-%m-%d %H:%M:%S %Z')**
|
|
|
|
Status : **Build in progress**
|
|
|
|
[](https://github.com/${{ github.repository }}/actions/workflows/CI-package-build.yml)
|
|
|
|
EOF
|
|
|
|
select:
|
|
runs-on: ubuntu-24.04
|
|
outputs:
|
|
dists: ${{ steps.select.outputs.dists }}
|
|
steps:
|
|
|
|
- name: Select distros
|
|
id: select
|
|
run: |
|
|
set -x
|
|
fn_get_targets () {
|
|
# make -n amd64-packages | grep -i binaries/proxysql | wc -l
|
|
# make -n arm64-packages | grep -i binaries/proxysql | wc -l
|
|
# recursive get targets
|
|
[[ -z ${MKFL} ]] && MKFL=$(curl -sL https://raw.githubusercontent.com/sysown/proxysql/${BRANCH}/Makefile)
|
|
for TRG in ${@}; do
|
|
local SUBTRG=$(echo "${MKFL}" | grep "${TRG}:")
|
|
if [[ "${SUBTRG#*:}" =~ (arm64|amd64) ]]; then
|
|
fn_get_targets ${SUBTRG#*:}
|
|
else
|
|
echo "${SUBTRG#*: }" | sed 's/ /\n/g'
|
|
fi
|
|
done
|
|
}
|
|
echo "dists=$(fn_get_targets amd64-packages | sed 's/-clang//g; s/-dbg//g' | sort | uniq | jq -Rcs 'split("\n") | .[:-1]')" >> $GITHUB_OUTPUT
|
|
#echo "dists=$(fn_get_targets arm64-packages | sed 's/-clang//g; s/-dbg//g' | sort | uniq | jq -Rcs 'split("\n") | .[:-1]')" >> $GITHUB_OUTPUT
|
|
#echo "dists=$(make pkglist | sed 's/proxysql[_0-9.-]*//g; s/[._].*//; s/dbg-//; s/-clang//' | sort | uniq | jq -Rcs 'split("\n") | .[:-1]')" >> $GITHUB_OUTPUT
|
|
|
|
build:
|
|
needs: [ clean, select ]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# # v2.7
|
|
# dist: [ 'almalinux8','almalinux9','centos7','centos8','centos9','debian10','debian11','debian12','fedora38','fedora39','fedora40','fedora41','opensuse15','ubuntu16','ubuntu18','ubuntu20','ubuntu22','ubuntu24' ]
|
|
# # v3.0
|
|
# dist: [ 'almalinux8','almalinux9','centos9','debian12','fedora40','fedora41','opensuse15','ubuntu22','ubuntu24' ]
|
|
arch: [ 'amd64','arm64' ]
|
|
dist: ${{ fromJson(needs.select.outputs.dists) }}
|
|
type: [ '','-dbg','-clang' ]
|
|
exclude:
|
|
# broken - clang too old
|
|
- dist: 'centos7'
|
|
type: '-clang'
|
|
- dist: 'debian10'
|
|
type: '-clang'
|
|
- dist: 'ubuntu16'
|
|
type: '-clang'
|
|
- dist: 'ubuntu18'
|
|
type: '-clang'
|
|
# unneded - not build before v3.0.0
|
|
- arch: 'arm64'
|
|
type: '-clang'
|
|
- arch: 'arm64'
|
|
type: '-dbg'
|
|
|
|
runs-on: ubuntu-24.04${{ matrix.arch == 'arm64' && '-arm' || '' }}
|
|
env:
|
|
ARCH: ${{ matrix.arch }}
|
|
DIST: ${{ matrix.dist }}
|
|
TYPE: ${{ matrix.type }}
|
|
MATRIX: '(${{ matrix.arch }},${{ matrix.dist }},${{ matrix.type }})'
|
|
|
|
steps:
|
|
|
|
- uses: LouisBrunner/checks-action@v2.0.0
|
|
id: checks
|
|
if: always()
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
name: '${{ github.workflow }} / ${{ github.job }} ${{ env.MATRIX }}'
|
|
repo: ${{ github.repository }}
|
|
sha: ${{ env.SHA }}
|
|
status: 'in_progress'
|
|
# action_url: 'https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}'
|
|
details_url: 'https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}'
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ github.repository }}
|
|
ref: ${{ env.SHA }}
|
|
fetch-depth: 0
|
|
|
|
- name: Build package
|
|
run: |
|
|
#[[ $(git describe --long --abbrev=7) == ${{ needs.clean.outputs.gitdescribe }} ]] || exit 1
|
|
make ${{ matrix.dist }}${{ matrix.type }}
|
|
echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV
|
|
echo "BIN_HASH=$(ls -1 binaries/*.id-hash)" >> $GITHUB_ENV
|
|
|
|
- name: Push packages
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
GIT_VERSION=$(gh release --repo ${{ github.repository }} view ${{ env.BRANCH }}-head | tr -d '*' | grep -Po "(?<=Version : ).*")
|
|
[[ ${GIT_VERSION} == ${{ needs.clean.outputs.gitdescribe }} ]] || exit 1
|
|
gh release upload ${{ env.BRANCH }}-head --repo ${{ github.repository }} --clobber ${{ env.BIN_PKG }}
|
|
|
|
- uses: LouisBrunner/checks-action@v2.0.0
|
|
if: always()
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
check_id: ${{ steps.checks.outputs.check_id }}
|
|
repo: ${{ github.repository }}
|
|
sha: ${{ env.SHA }}
|
|
conclusion: ${{ job.status }}
|
|
# action_url: 'https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}'
|
|
details_url: 'https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}'
|
|
|
|
finalize:
|
|
runs-on: ubuntu-24.04
|
|
needs: [ clean, select, build ]
|
|
steps:
|
|
- name: Update release
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
GIT_VERSION=$(gh release --repo ${{ github.repository }} view ${{ env.BRANCH }}-head | tr -d '*' | grep -Po "(?<=Version : ).*")
|
|
[[ ${GIT_VERSION} == ${{ needs.clean.outputs.gitdescribe }} ]] || exit 1
|
|
gh release edit ${{ env.BRANCH }}-head --draft --prerelease --repo ${{ github.repository }} --tag ${{ env.BRANCH }}-head --notes-file - << EOF
|
|
## Development Snapshot
|
|
|
|
GH-Action Package-Build on ${{ env.BRANCH }} merge
|
|
|
|
Version : **${{ needs.clean.outputs.gitdescribe }}**
|
|
|
|
Finished : **$(date '+%Y-%m-%d %H:%M:%S %Z')**
|
|
|
|
Status : **Build is finished**
|
|
|
|
[](https://github.com/${{ github.repository }}/actions/workflows/CI-package-build.yml)
|
|
|
|
EOF
|
|
|
|
|