📦 Pack and publish 46b0a4c21df0ac80291156c485d92fae74f72f2c #1
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
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: 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: roots_apr15 | |
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') | |
) | |
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/[email protected] | |
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/[email protected] | |
with: | |
image: ${{ matrix.image }} | |
test_prefix: test/clt-tests/installation/deb-dev- | |
run_args: -e TELEMETRY=0 |