name: Builds Linux X86 binary packages into S3 bucket. on: workflow_call: inputs: version: description: The version of Valkey to create. type: string required: true ref: description: The commit, tag or branch of Valkey to checkout for building that creates the version above. type: string required: true build_matrix: description: The build targets to produce as a JSON matrix. type: string required: true region: description: The AWS region to upload the packages to. type: string required: true secrets: bucket_name: description: The name of the S3 bucket to upload the packages to. required: true role_to_assume: description: The role to assume for the S3 bucket. required: true permissions: id-token: write contents: read jobs: build-valkey: # Capture source tarball and generate checksum for it name: Build package ${{ matrix.distro.target }} ${{ matrix.distro.arch }} runs-on: ${{matrix.distro.target}} strategy: fail-fast: false matrix: ${{ fromJSON(inputs.build_matrix) }} steps: - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ inputs.version }} - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-region: ${{ inputs.region }} role-to-assume: ${{ secrets.role_to_assume }} - name: Install dependencies run: sudo apt-get update && sudo apt-get install -y build-essential libssl-dev libsystemd-dev - name: Make Valkey run: make -C src all BUILD_TLS=yes USE_SYSTEMD=yes - name: Create Tarball and SHA256sums run: | TAR_FILE_NAME=valkey-${{inputs.version}}-${{matrix.distro.platform}}-${{ matrix.distro.arch}} mkdir -p "$TAR_FILE_NAME/bin" "$TAR_FILE_NAME/share" rsync -av --exclude='*.c' --exclude='*.d' --exclude='*.o' src/valkey-* "$TAR_FILE_NAME/bin/" cp -v /home/runner/work/valkey/valkey/COPYING "$TAR_FILE_NAME/share/LICENSE" tar -czvf $TAR_FILE_NAME.tar.gz $TAR_FILE_NAME sha256sum $TAR_FILE_NAME.tar.gz > $TAR_FILE_NAME.tar.gz.sha256 mkdir -p packages-files cp -rfv $TAR_FILE_NAME.tar* packages-files/ - name: Sync to S3 run: aws s3 sync packages-files s3://${{ secrets.bucket_name }}/releases/