Install libatomic for Oracle Linux 9 release build #5
This file contains hidden or 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: One-shot KeyDB 6.3.6 Oracle Linux 9 release | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - .github/workflows/one-shot-release-v6.3.6-oraclelinux9.yml | |
| - .github/release-v6.3.6-oraclelinux9 | |
| permissions: | |
| contents: write | |
| concurrency: | |
| group: keydb-v6.3.6-oraclelinux9-release | |
| cancel-in-progress: false | |
| jobs: | |
| build-and-upload: | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 90 | |
| env: | |
| SOURCE_COMMIT: e78a02c171d04f7221630cbfce977ec999134656 | |
| RELEASE_TAG: v6.3.6 | |
| PACKAGE_DIR: keydb-6.3.6-oraclelinux-9-x86_64 | |
| ARCHIVE: keydb-6.3.6-oraclelinux-9-x86_64.tar.gz | |
| steps: | |
| - name: Check out release source | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ env.SOURCE_COMMIT }} | |
| fetch-depth: 0 | |
| - name: Create READY notification listener | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| cat > "$GITHUB_WORKSPACE/verify-systemd-ready.py" <<'PY' | |
| import os | |
| import socket | |
| path = "/tmp/keydb-notify.sock" | |
| try: | |
| os.unlink(path) | |
| except FileNotFoundError: | |
| pass | |
| sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) | |
| sock.bind(path) | |
| sock.settimeout(30) | |
| messages = [] | |
| while True: | |
| data = sock.recv(65535).decode("utf-8", "replace") | |
| messages.append(data) | |
| if "READY=1" in data: | |
| break | |
| print("\n".join(messages)) | |
| PY | |
| - name: Build and validate inside Oracle Linux 9 | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| docker run --rm \ | |
| -v "$GITHUB_WORKSPACE:/src" \ | |
| -w /src \ | |
| oraclelinux:9 \ | |
| bash -euxo pipefail -c ' | |
| dnf -y install \ | |
| gcc \ | |
| gcc-c++ \ | |
| libatomic \ | |
| make \ | |
| pkgconf-pkg-config \ | |
| openssl-devel \ | |
| systemd-devel \ | |
| zlib-devel \ | |
| bzip2-devel \ | |
| lz4-devel \ | |
| libzstd-devel \ | |
| libuuid-devel \ | |
| libcurl-devel \ | |
| python3 \ | |
| procps-ng \ | |
| findutils \ | |
| tar \ | |
| gzip \ | |
| which | |
| rpm -q libatomic | |
| test -e /usr/lib64/libatomic.so.1.2.0 | |
| ldconfig -p | grep libatomic | |
| make distclean || true | |
| make BUILD_TLS=yes USE_SYSTEMD=yes -j"$(nproc)" | |
| src/keydb-server --version | tee /tmp/keydb-version.txt | |
| grep -Eq "v=6\.3\.6([[:space:]]|$)" /tmp/keydb-version.txt | |
| ldd src/keydb-server | tee /tmp/keydb-ldd.txt | |
| grep -q "libsystemd.so.0" /tmp/keydb-ldd.txt | |
| grep -q "libatomic.so.1" /tmp/keydb-ldd.txt | |
| rm -f \ | |
| /tmp/keydb-notify.sock \ | |
| /tmp/keydb-notify.log \ | |
| /tmp/keydb-release.log \ | |
| /tmp/keydb-release.pid | |
| python3 /src/verify-systemd-ready.py \ | |
| >/tmp/keydb-notify.log 2>&1 & | |
| notify_pid=$! | |
| for i in $(seq 1 100); do | |
| test -S /tmp/keydb-notify.sock && break | |
| sleep 0.05 | |
| done | |
| test -S /tmp/keydb-notify.sock | |
| NOTIFY_SOCKET=/tmp/keydb-notify.sock \ | |
| src/keydb-server \ | |
| --bind 127.0.0.1 \ | |
| --port 6399 \ | |
| --save "" \ | |
| --appendonly no \ | |
| --daemonize no \ | |
| --supervised systemd \ | |
| --dir /tmp \ | |
| --pidfile /tmp/keydb-release.pid \ | |
| --logfile /tmp/keydb-release.log & | |
| server_pid=$! | |
| if ! wait "$notify_pid"; then | |
| cat /tmp/keydb-notify.log || true | |
| cat /tmp/keydb-release.log || true | |
| kill "$server_pid" 2>/dev/null || true | |
| exit 1 | |
| fi | |
| grep -q "READY=1" /tmp/keydb-notify.log | |
| src/keydb-cli -h 127.0.0.1 -p 6399 PING | grep -qx PONG | |
| src/keydb-cli -h 127.0.0.1 -p 6399 SHUTDOWN NOSAVE | |
| wait "$server_pid" || true | |
| mkdir -p /src/release-info | |
| cat /etc/oracle-release > /src/release-info/oracle-release.txt | |
| gcc --version > /src/release-info/gcc-version.txt | |
| src/keydb-server --version > /src/release-info/keydb-version.txt | |
| ldd src/keydb-server > /src/release-info/ldd-keydb-server.txt | |
| ' | |
| sudo chown -R "$(id -u):$(id -g)" "$GITHUB_WORKSPACE" | |
| - name: Package Oracle Linux 9 binaries | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| rm -rf "$PACKAGE_DIR" | |
| mkdir -p "$PACKAGE_DIR/bin" | |
| install -m 0755 src/keydb-server "$PACKAGE_DIR/bin/keydb-server" | |
| install -m 0755 src/keydb-cli "$PACKAGE_DIR/bin/keydb-cli" | |
| install -m 0755 src/keydb-benchmark "$PACKAGE_DIR/bin/keydb-benchmark" | |
| install -m 0755 src/keydb-check-aof "$PACKAGE_DIR/bin/keydb-check-aof" | |
| install -m 0755 src/keydb-check-rdb "$PACKAGE_DIR/bin/keydb-check-rdb" | |
| ln -s keydb-server "$PACKAGE_DIR/bin/keydb-sentinel" | |
| cp README.md COPYING "$PACKAGE_DIR/" | |
| cp release-info/oracle-release.txt "$PACKAGE_DIR/" | |
| cp release-info/gcc-version.txt "$PACKAGE_DIR/" | |
| cp release-info/keydb-version.txt "$PACKAGE_DIR/" | |
| cp release-info/ldd-keydb-server.txt "$PACKAGE_DIR/" | |
| cat > "$PACKAGE_DIR/BUILD-INFO.txt" <<EOF | |
| KeyDB version: 6.3.6 | |
| Git commit: $SOURCE_COMMIT | |
| Target OS: Oracle Linux 9 | |
| Architecture: x86_64 | |
| TLS: enabled | |
| systemd support: enabled and READY=1 validated | |
| Build workflow run: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID | |
| EOF | |
| tar -czf "$ARCHIVE" "$PACKAGE_DIR" | |
| sha256sum "$ARCHIVE" > "$ARCHIVE.sha256" | |
| cat "$ARCHIVE.sha256" | |
| tar -tzf "$ARCHIVE" | |
| - name: Upload assets to existing v6.3.6 release | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| gh release view "$RELEASE_TAG" | |
| gh release upload "$RELEASE_TAG" \ | |
| "$ARCHIVE" \ | |
| "$ARCHIVE.sha256" \ | |
| --clobber | |
| - name: Remove one-shot workflow after successful release | |
| if: success() | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| sudo chown -R "$(id -u):$(id -g)" "$GITHUB_WORKSPACE" | |
| git reset --hard | |
| git clean -fdx | |
| git fetch origin main | |
| git checkout -B main origin/main | |
| rm -f \ | |
| .github/workflows/one-shot-release-v6.3.6-oraclelinux9.yml \ | |
| .github/release-v6.3.6-oraclelinux9 | |
| git config user.name "github-actions[bot]" | |
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| git add -A | |
| if git diff --cached --quiet; then | |
| echo "Nothing to clean up" | |
| exit 0 | |
| fi | |
| git commit -m "Remove one-shot Oracle Linux 9 release workflow" | |
| git push origin main |