Skip to content

📦 Pack and publish 78e8fc1726946e74257079eaa0ada551a33e4a7e #2685

📦 Pack and publish 78e8fc1726946e74257079eaa0ada551a33e4a7e

📦 Pack and publish 78e8fc1726946e74257079eaa0ada551a33e4a7e #2685

Workflow file for this run

name: 📦 Pack and publish
run-name: 📦 Pack and publish ${{ github.sha }}
#on: workflow_call
on:
workflow_run:
workflows: [ 🔬 Test ]
types: [ completed ]
branches: [ master ]
pull_request:
branches: [ master ]
types: [opened, synchronize, reopened, labeled, unlabeled]
paths-ignore:
- 'manual/**'
- 'cmake/GetGALERA.cmake'
- 'galera_packaging/**'
push:
branches:
- manticore-*
paths-ignore:
- 'manual/**'
- 'cmake/GetGALERA.cmake'
- 'galera_packaging/**'
# cancels the previous workflow run when a new one appears in the same branch (e.g. master or a PR's branch)
concurrency:
group: pack_${{ github.ref }}
cancel-in-progress: true
jobs:
pack:
name: OK to pack?
runs-on: ubuntu-22.04
if: |
(
github.event_name == 'pull_request'
&&
(
contains(
github.event.pull_request.labels.*.name, 'pack'
)
||
contains(
github.event.pull_request.labels.*.name, 'publish'
)
)
)
||
(
github.event_name == 'workflow_run'
&&
github.event.workflow_run.conclusion == 'success'
&&
github.ref == 'refs/heads/master'
)
||
(
github.event_name == 'push'
&&
startsWith(
github.ref, 'refs/heads/manticore-'
)
)
steps:
- run: echo "All set to build packages"
- run: |
echo '# Packing and publishing all for commit ${{ github.sha }}' >> $GITHUB_STEP_SUMMARY
echo '* Commit URL: [${{ github.sha }}](/${{ github.repository }}/commit/${{ github.sha }})' >> $GITHUB_STEP_SUMMARY
echo '* Initiated by: [@${{ github.actor }}](https://github.com/${{ github.actor }})' >> $GITHUB_STEP_SUMMARY
echo '* Ref: ${{ github.ref_type }} "${{ github.ref_name }}"' >> $GITHUB_STEP_SUMMARY
echo '* Attempt: ${{ github.run_attempt }}' >> $GITHUB_STEP_SUMMARY
pack_debian_ubuntu:
name: Debian/Ubuntu packages
uses: ./.github/workflows/build_template.yml
needs: pack
strategy:
fail-fast: false
matrix:
DISTR: [bionic, focal, jammy, buster, bullseye, bookworm]
arch: [x86_64, aarch64]
with:
DISTR: ${{ matrix.DISTR }}
arch: ${{ matrix.arch }}
cmake_command: |
mkdir build
cd build
cmake -DPACK=1 ..
cmake --build . --target package
cache_key: pack_${{ matrix.DISTR }}_${{ matrix.arch }}
artifact_list: "build/manticore*deb"
pack_rhel:
name: RHEL packages
uses: ./.github/workflows/build_template.yml
needs: pack
strategy:
fail-fast: false
matrix:
DISTR: [rhel7, rhel8, rhel9]
arch: [x86_64, aarch64]
with:
DISTR: ${{ matrix.DISTR }}
arch: ${{ matrix.arch }}
boost_url_key: boost_rhel_feb17
cmake_command: |
ln -s $(pwd) /builds_manticoresearch_dev_usr_src_debug_manticore_component_src_0
cd /builds_manticoresearch_dev_usr_src_debug_manticore_component_src_0
mkdir build
cd build
cmake -DPACK=1 ..
cmake --build . --target package
cache_key: pack_${{ matrix.DISTR }}_${{ matrix.arch }}
artifact_list: "build/manticore*rpm"
pack_macos:
name: MacOS packages
uses: ./.github/workflows/build_template.yml
needs: pack
strategy:
fail-fast: false
matrix:
DISTR: [macos]
arch: [x86_64, arm64]
with:
DISTR: ${{ matrix.DISTR }}
arch: ${{ matrix.arch }}
HOMEBREW_PREFIX: /opt/homebrew
cmake_command: |
mkdir build
cd build
cmake -DPACK=1 ..
cmake --build . --target package
cache_key: pack_${{ matrix.DISTR }}_${{ matrix.arch }}
artifact_list: "build/manticore*tar.gz"
pack_windows:
name: Windows x64 package
uses: ./.github/workflows/build_template.yml
needs: pack
with:
DISTR: windows
arch: x64
sysroot_url_key: roots_mysql83_jul29
boost_url_key: boost80_zstd_zlib
cmake_command: |
mkdir build
cd build
cmake -DPACK=1 ..
cmake --build . --target package
cache_key: pack_windows_x64
artifact_list: "build/manticore*exe build/manticore*zip"
build_nsis:
name: Making Windows NSIS installer
needs: pack_windows
runs-on: ubuntu-22.04
container:
image: manticoresearch/build_nsis:1.0.0
env:
CI_COMMIT_SHA: ${{ github.sha }}
steps:
- name: Checkout repository # We have to checkout to access .github/workflows/ in further steps
uses: actions/checkout@v3
- name: Initialization
# without adding the safe.directory the script fails to do git show ...
run: git config --global --add safe.directory /__w/manticoresearch/manticoresearch
- name: Make installer
# TODO: remove the hardcoded paths /builds/ below
run: |
mkdir -p /builds/manticoresearch/dev/build/
/bin/bash dist/build_dockers/nsis/nsis_src_parser.sh
shell: bash
- run: mv /builds/manticoresearch/dev/build build
- name: Upload artifact
uses: manticoresoftware/upload_artifact_with_retries@main
with:
name: win_installer
path: build/manticore-*.exe
# virtual job to simplify the CI
# This job depends on all the package preparation jobs that have to pass before we can start publishing packages
publish:
name: OK to publish?
runs-on: ubuntu-22.04
needs: [pack_debian_ubuntu, pack_rhel, pack_macos, pack_windows]
if: |
(github.repository == 'manticoresoftware/manticoresearch')
&& (
(github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'publish')))
|| (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success')
|| (github.event_name == 'push' && startsWith(github.ref, 'refs/heads/manticore-'))
)
steps:
- run: echo "Ready to publish"
publish_debian_ubuntu:
needs: publish
strategy:
fail-fast: true
matrix:
DISTR: [bionic, focal, jammy, buster, bullseye, bookworm]
arch: [x86_64, aarch64]
runs-on: ubuntu-22.04
name: ${{ matrix.DISTR }} ${{ matrix.arch }} publishing
steps:
- uses: manticoresoftware/publish_to_repo@main
with:
ssh_key: ${{ secrets.REPO_SSH_KEY }}
distr: ${{ matrix.DISTR }}
arch: ${{ matrix.arch }}
artifact: build_${{ matrix.DISTR }}_RelWithDebInfo_${{ matrix.arch }}
type: deb
delimiter: "-"
publish_rhel:
needs: publish
strategy:
fail-fast: true
matrix:
DISTR: [7, 8, 9]
arch: [x86_64, aarch64]
runs-on: ubuntu-22.04
name: RHEL ${{ matrix.DISTR }} ${{ matrix.arch }} publishing
steps:
- uses: manticoresoftware/publish_to_repo@main
with:
ssh_key: ${{ secrets.REPO_SSH_KEY }}
distr: ${{ matrix.DISTR }}
arch: ${{ matrix.arch }}
artifact: build_rhel${{ matrix.DISTR }}_RelWithDebInfo_${{ matrix.arch }}
type: rpm
delimiter: "_"
publish_macos:
name: Publishing MacOS
needs: publish
strategy:
fail-fast: true
matrix:
arch: [x86_64, arm64]
runs-on: ubuntu-22.04
steps:
- uses: manticoresoftware/publish_to_repo@main
with:
ssh_key: ${{ secrets.REPO_SSH_KEY }}
distr: macos
arch: ${{ matrix.arch }}
artifact: build_macos_RelWithDebInfo_${{ matrix.arch }}
type: arc
delimiter: "-"
publish_windows:
name: Publishing Windows packages to repo.manticoresearch.com
needs: publish
runs-on: ubuntu-22.04
steps:
- uses: manticoresoftware/publish_to_repo@main
with:
ssh_key: ${{ secrets.REPO_SSH_KEY }}
distr: windows
arch: x64
artifact: build_windows_RelWithDebInfo_x64
type: arc
delimiter: "-"
publish_nsis:
name: Publishing Windows NSIS installer
needs: publish_windows
runs-on: ubuntu-22.04
steps:
- uses: manticoresoftware/publish_to_repo@main
with:
ssh_key: ${{ secrets.REPO_SSH_KEY }}
distr:
arch:
artifact: win_installer
type: arc
delimiter: "-"
build_docker:
name: Building and pushing docker
needs: publish_debian_ubuntu
runs-on: ubuntu-22.04
env:
DOCKER_USER: ${{ secrets.DOCKER_USER }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
GHCR_USER: ${{ secrets.GHCR_USER }}
GHCR_PASSWORD: ${{ secrets.GHCR_PASSWORD }}
steps:
- name: Checkout repository # We have to checkout to access .github/workflows/ in further steps
uses: actions/checkout@v3
- name: Calculate short commit hash
id: sha
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Building docker
run: CI_COMMIT_SHORT_SHA=${{ steps.sha.outputs.sha_short }} /bin/bash dist/dockerhub_deploy.sh
clt_rhel_dev_installation:
name: Testing RHEL dev packages installation
needs: publish_rhel
strategy:
fail-fast: false
matrix:
image: [ "centos:7", "almalinux:8", "almalinux:9", "oraclelinux:9", "amazonlinux:latest" ]
runs-on: ubuntu-22.04
steps:
- uses: manticoresoftware/clt@0.1.21
with:
image: ${{ matrix.image }}
test_prefix: test/clt-tests/installation/rhel-dev-
run_args: -e TELEMETRY=0
clt_deb_dev_installation:
name: Testing DEB dev packages installation
needs: publish_debian_ubuntu
strategy:
fail-fast: false
matrix:
image: [ "ubuntu:bionic", "ubuntu:focal", "ubuntu:jammy", "debian:buster", "debian:bullseye", "debian:bookworm" ]
runs-on: ubuntu-22.04
steps:
- uses: manticoresoftware/clt@0.1.21
with:
image: ${{ matrix.image }}
test_prefix: test/clt-tests/installation/deb-dev-
run_args: -e TELEMETRY=0