Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

*BSD #4

Merged
merged 17 commits into from
Nov 26, 2023
145 changes: 145 additions & 0 deletions .github/workflows/REUSABLE-bsd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
name: Build

on:
workflow_call:
inputs:

machine_host:
required: true
type: string

osname:
required: true
type: string

osversion:
required: true
type: string

# short version of the OS (ubuntu20.04, rhel7, etc)
osnick:
required: true
type: string

deps:
required: true
type: string

outside_deps:
required: false
type: string
default: "echo"

##### optioanl inputs #####

# architecture
arch:
required: false
type: string
default: x86_64

build_script:
required: false
type: string
default: scripts/build-bsd.sh

jobs:

build:
runs-on: ${{inputs.machine_host}}

steps:

- uses: actions/checkout@v3
with:
path: redis-builder

- name: load envvars
id: get_config_versions
run: |
. redis-builder/vars
echo VERSION=$REDISVERSION >> $GITHUB_OUTPUT
echo PACKAGEDREDISVERSION=$PACKAGEDREDISVERSION >> $GITHUB_OUTPUT
echo S3BASE=$S3BASE >> $GITHUB_OUTPUT
echo HTTPS3BASE=$HTTPS3BASE >> $GITHUB_OUTPUT

- name: check if already built
id: redis-already-built
continue-on-error: true
run: |
wget -q ${{steps.get_config_versions.outputs.HTTPS3BASE}}/redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}.tgz

- uses: actions/checkout@v3
if: steps.redis-already-built.outcome != 'success'
with:
repository: redis/redis
path: redis
ref: ${{steps.get_config_versions.outputs.VERSION}}

- name: Cache dependencies
uses: actions/cache@v3
with:
path: |
/var/cache/apt/archives/**.deb
/var/cache/yum
key: cache-${{hashFiles('.github/workflows/*.yml')}}-${{inputs.arch}}-build

- name: make
uses: cross-platform-actions/[email protected]
if: steps.redis-already-built.outcome != 'success'
with:
operating_system: ${{inputs.osname}}
version: ${{inputs.osversion}}
shell: bash
architecture: ${{inputs.arch}}
run: |
${{inputs.deps}}
bash redis-builder/${{inputs.build_script}}

- name: package redis for s3
if: steps.redis-already-built.outcome != 'success'
run: |
mkdir redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}
cp redis/src/redis-server \
redis/src/redis-sentinel \
redis/src/redis-check-aof \
redis/src/redis-check-rdb \
redis/src/redis-benchmark \
redis/src/redis-cli \
redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}
tar -czvf redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}.tgz \
redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}

- name: perist redis
if: steps.redis-already-built.outcome != 'success'
uses: actions/upload-artifact@v3
with:
name: redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.arch}}
path: |
redis/src/redis-server
redis/src/redis-sentinel
redis/src/redis-check-aof
redis/src/redis-check-rdb
redis/src/redis-benchmark
redis/src/redis-cli

- name: install s3cmd
if: steps.redis-already-built.outcome != 'success'
run: |
pip3 install s3cmd

- name: install dependencies
run: ${{inputs.outside_deps}}

- name: determine if in fork
id: iamafork
run: |
amfork=`jq '.pull_request.head.repo.fork' $GITHUB_EVENT_PATH`
echo "am I fork: ${amfork}"
echo "IAMAFORK=$amfork" >> $GITHUB_OUTPUT

- name: persist redis to s3
if: steps.redis-already-built.outcome != 'success' && steps.iamafork.outputs.IAMAFORK != 'false'
run: |
s3cmd --access_key=${{secrets.AWS_ACCESS_KEY_ID}} --secret_key=${{secrets.AWS_SECRET_ACCESS_KEY}} --region=us-east-1 put -P redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}.tgz \
${{steps.get_config_versions.outputs.S3BASE}}/redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}.tgz
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build and Publish
name: Build

on:
workflow_call:
Expand Down Expand Up @@ -26,15 +26,10 @@ on:
type: string
default: x86_64

osname:
required: false
type: string
default: Linux

build_script:
required: false
type: string
default: build.sh
default: scripts/build.sh

jobs:

Expand Down
123 changes: 123 additions & 0 deletions .github/workflows/REUSABLE-osx.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: Build Mac

on:

workflow_call:
inputs:

macos_type:
required: true
type: string

# short version of the OS (ubuntu20.04, rhel7, etc)
osnick:
required: true
type: string

deps:
required: true
type: string

##### optioanl inputs #####

# architecture
arch:
required: false
type: string
default: x86_64

osname:
required: false
type: string
default: macos

build_script:
required: false
type: string
default: scripts/build-osx.sh

jobs:
build:
runs-on: ${{inputs.macos_type}}

steps:
- name: install dependencies
run: ${{inputs.deps}}

- name: determine if in fork
id: iamafork
run: |
amfork=`jq '.pull_request.head.repo.fork' $GITHUB_EVENT_PATH`
echo "am I fork: ${amfork}"
echo "IAMAFORK=$amfork" >> $GITHUB_OUTPUT
- uses: actions/checkout@v3
with:
path: redis-builder

- name: load envvars
id: get_config_versions
run: |
. redis-builder/vars
echo VERSION=$REDISVERSION >> $GITHUB_OUTPUT
echo PACKAGEDREDISVERSION=$PACKAGEDREDISVERSION >> $GITHUB_OUTPUT
echo S3BASE=$S3BASE >> $GITHUB_OUTPUT
echo HTTPS3BASE=$HTTPS3BASE >> $GITHUB_OUTPUT
- name: check if already built
id: redis-already-built
continue-on-error: true
run: |
wget -q ${{steps.get_config_versions.outputs.HTTPS3BASE}}/redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}.tgz
- uses: actions/checkout@v3
if: steps.redis-already-built.outcome != 'success'
with:
repository: redis/redis
path: redis
ref: ${{steps.get_config_versions.outputs.VERSION}}

- name: make
if: steps.redis-already-built.outcome != 'success'
run: bash redis-builder/${{inputs.build_script}}

- name: package redis for s3
if: steps.redis-already-built.outcome != 'success'
run: |
mkdir redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}
cp redis/src/redis-server \
redis/src/redis-sentinel \
redis/src/redis-check-aof \
redis/src/redis-check-rdb \
redis/src/redis-benchmark \
redis/src/redis-cli \
redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}
tar -czvf redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}.tgz \
redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}
- name: perist redis
if: steps.redis-already-built.outcome != 'success'
uses: actions/upload-artifact@v3
with:
name: redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.arch}}
path: |
redis/src/redis-server
redis/src/redis-sentinel
redis/src/redis-check-aof
redis/src/redis-check-rdb
redis/src/redis-benchmark
redis/src/redis-cli
- name: install s3cmd
if: steps.redis-already-built.outcome != 'success'
run: |
pip3 install s3cmd
- name: persist redis to s3
if: steps.redis-already-built.outcome != 'success' && steps.iamafork.outputs.IAMAFORK != 'false'
run: |
s3cmd --access_key=${{secrets.AWS_S3_ACCESS_KEY_ID}} \
--secret_key=${{secrets.AWS_S3_SECRET_ACCESS_KEY}} \
--region=us-east-1 \
put -P redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}.tgz \
${{steps.get_config_versions.outputs.S3BASE}}/redis-${{steps.get_config_versions.outputs.PACKAGEDREDISVERSION}}-${{inputs.osnick}}-${{inputs.arch}}.tgz
46 changes: 46 additions & 0 deletions .github/workflows/build-bsd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Build (bsd) redis

on:
push:
paths-ignore:
- 'docs/**'
- 'README.md'
branches:
- master
- '[0-9].[0-9]'
- '[0-9].[0-9].[0-9]'
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-bsd
cancel-in-progress: true

permissions:
contents: read
packages: write

jobs:

freebsd-13_2-x86-64:
uses: ./.github/workflows/REUSABLE-bsd.yml
secrets: inherit
with:
osversion: 13.2
osname: freebsd
machine_host: ubuntu-latest
osnick: freebsd13.2
outside_deps: sudo apt-get update -qq && sudo apt-get install -qqy jq
deps: sudo pkg install -y bash gmake

freebsd-13_2-arm64:
uses: ./.github/workflows/REUSABLE-bsd.yml
secrets: inherit
with:
osversion: 13.2
osname: freebsd
machine_host: ubuntu-latest
arch: arm64
osnick: freebsd13.2
outside_deps: sudo apt-get update -qq && sudo apt-get install -qqy jq
deps: sudo pkg install -y bash gmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: arm flow
name: Build (arm64) redis

on:
push:
Expand Down Expand Up @@ -42,13 +42,13 @@ jobs:
mode: start
github-token: ${{ secrets.GH_ACCESS_TOKEN }}
ec2-image-id: ${{ secrets.AWS_AMI_ID }}
ec2-instance-type: t4g.medium
ec2-instance-type: t4g.small
subnet-id: ${{ secrets.AWS_SUBNET_ID }}
security-group-id: ${{ secrets.AWS_SECGROUP_ID }}

ubuntu-bionic-arm64:
needs: start-arm64-runner
uses: ./.github/workflows/BUILD-REUSABLE.yml
uses: ./.github/workflows/REUSABLE-linux.yml
with:
docker_image: ubuntu:18.04
deps: apt-get update -qq && apt-get install -qqy build-essential libssl-dev python3 python3-pip jq wget
Expand All @@ -58,7 +58,7 @@ jobs:

ubuntu-focal-arm64:
needs: start-arm64-runner
uses: ./.github/workflows/BUILD-REUSABLE.yml
uses: ./.github/workflows/REUSABLE-linux.yml
with:
docker_image: ubuntu:20.04
deps: apt-get update -qq && apt-get install -qqy build-essential libssl-dev python3 python3-pip jq wget
Expand Down
Loading
Loading