Skip to content

Commit

Permalink
Adding dev flows
Browse files Browse the repository at this point in the history
  • Loading branch information
mirzakaracic committed Nov 22, 2024
1 parent 3a77e18 commit 0421aa4
Show file tree
Hide file tree
Showing 10 changed files with 440 additions and 21 deletions.
53 changes: 53 additions & 0 deletions .github/actions/release-to-jfrog/actions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Publish artifacts to JFrog
description: Publishes artifacts to Sonatype

inputs:
version:
description: "Version of client to build"
required: true
crypto-type:
description: Crypto type. This should either be bouncycastle or gnu
required: true
maven-username:
description: Maven repo username
required: true
maven-token:
description: Maven repo password
required: true
gpg-signing-key:
description: GPG private signing key
required: true
gpg-signing-key-password:
description: GPG private signing key password
required: true
module:
description: Module to publish
required: true

runs:
using: "composite"
steps:
- name: Set version
shell: bash
run: mvn versions:set -DnewVersion=${{ inputs.version }}

- name: Build
shell: bash
run: |
echo "-${{ inputs.crypto-type }}-"
mvn clean install -Dcrypto.type=${{ inputs.crypto-type }}
- name: Build source jar
run: mvn source:jar -Dcrypto.type=${{ inputs.crypto-type }}
shell: bash
working-directory: ${{ inputs.module }}

- name: Build docs
run: mvn javadoc:jar -Dcrypto.type=${{ inputs.crypto-type }}
shell: bash
working-directory: ${{ inputs.module }}

- name: Debug list content
shell: bash
run: |
ls -R | grep ".*.jar"
44 changes: 44 additions & 0 deletions .github/actions/run-ee-server/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: "Run EE Server"
description: "Run EE server. Returns once server is ready. Only tested on Linux and macOS"

inputs:
# All inputs in composite actions are strings
use-server-rc:
description: Flag for rc candidates
required: true
default: "false"
server-tag:
description: Server version to use
required: true
default: "latest"
# Github Composite Actions can't access secrets
# so we need to pass them in as inputs
docker-hub-username:
description: Dockerhub username
required: false
docker-hub-password:
description: Dockerhub password
required: false
container-repo-url:
required: false
description: Container repo url
default: aerospike.jfrog.io/docker/

runs:
using: "composite"
steps:
- name: Log into Docker Hub to get server RC
if: ${{ inputs.use-server-rc == 'true' }}
run: docker login ${{ inputs.container-repo-url }} --username ${{ inputs.docker-hub-username }} --password ${{ inputs.docker-hub-password }}
shell: bash

- run: echo IMAGE_NAME=${{ inputs.use-server-rc == 'true' && inputs.container-repo-url || '' }}aerospike/aerospike-server-enterprise${{ inputs.use-server-rc == 'true' && '-rc' || '' }}:${{ inputs.server-tag }} >> $GITHUB_ENV
shell: bash

- run: docker run -d --name aerospike -p 3000:3000 ${{ env.IMAGE_NAME }}
shell: bash

- uses: ./.github/actions/wait-for-as-server-to-start
with:
container-name: aerospike
is-security-enabled: true
46 changes: 46 additions & 0 deletions .github/actions/upload-to-jfrog/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Publish artifacts to JFrog
description: "Publishes artifacts to JFrog"

inputs:
version:
description: ""
required: true
jdk-version:
description: ""
required: true
jfrog-repo-name:
description: ""
required: false
default: aerospike-maven-dev-local
jfrog-platform-url:
description: ""
required: false
default: https://aerospike.jfrog.io/
oidc-provider:
description: ""
required: false
default: gh-aerospike-clients
oidc-audience:
description: ""
required: false
default: aerospike/clients

runs:
using: "composite"
steps:
- name: Set up JFrog credentials
uses: jfrog/setup-jfrog-cli@v3
env:
JF_URL: ${{ inputs.jfrog-platform-url }}
with:
oidc-provider-name: ${{ inputs.oidc-provider }}
oidc-audience: ${{ inputs.oidc-audience }}

- name: Upload from branches to JFrog
shell: bash
# Only interested in `aerospike-proxy-client-x.x.x....` and `aerospike-client-jdkx-x.x.x....`
run: jf rt upload --regexp=true --dry-run "aerospike-(client-(jdk\d+))-\d+\.\d+\.\d+(-jar-with-dependencies)?\.jar" "${{ inputs.jfrog-repo-name }}"

- name: Publish build info
shell: bash
run: jf rt build-publish --dry-run ${{ inputs.jdk-version == 'jdk8' && 'aerospike-client-jdk8' || 'aerospike-client-jdk21' }} ${{ inputs.version }}
22 changes: 22 additions & 0 deletions .github/actions/wait-for-as-server-to-start/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: "Wait for Aerospike server to start"
description: Only tested on Linux and macOS
inputs:
container-name:
description: Container name
required: true
is-security-enabled:
description: Flag to toggle docker hub creds use. With this flag enabled before attempting to pull image we will attempt to log in do docker hub.
required: false
default: "false"

runs:
using: "composite"
steps:
# Composite actions doesn't support step-level timeout-minutes
# Use timeout command and store polling logic in file to make it easier to read
# Call bash shell explicitly since timeout uses "sh" shell by default, for some reason
# Also, we don't want to fail if we timeout in case the server *did* finish starting up but the script couldn't detect it due to a bug
# Effectively, this composite action is like calling "sleep" that is optimized to exit early when it detects an ok from the server
- name: Wait for EE server to start
run: timeout 30 bash ./.github/workflows/scripts/wait-for-as-server-to-start.sh ${{ inputs.container-name }} ${{ inputs.is-security-enabled }} || true
shell: bash
87 changes: 87 additions & 0 deletions .github/workflows/build-dev.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
on:
workflow_call:
inputs:
branch:
type: string
required: true
source-branch:
type: string
required: false
use-server-rc:
type: boolean
required: false
default: false
description: "Test against server release candidate?"
server-tag:
type: string
required: false
default: "latest"
description: "Server docker image tag"
upload-artifacts:
type: boolean
required: false
default: false
description: "Upload built artifacts to github?"
bump-version:
type: boolean
required: false
default: false
description: "Bump artifact version"
run-tests:
type: boolean
required: false
default: false
description: Spin up aerospike enterprise server and run tests

jobs:
debug-job:
runs-on: ubuntu-latest
steps:
- name: debug
run: |
echo "${{ inputs.branch }}"
echo "${{ github.base_ref }}"
java-version:
needs: debug-job
runs-on: ubuntu-latest
outputs:
java-version: ${{ steps.get-java-version.outputs.java-version }}
steps:
- name: Checkout client
uses: actions/checkout@v4
with:
ref: ${{ inputs.branch }}

- name: Get java version
id: get-java-version
run: |
echo java-version="$(grep '<java.version>' pom.xml | sed -e 's/<[^>]*>//g' | awk '{$1=$1};1')" >> $GITHUB_OUTPUT
- name: debug - print java-version
run: |
echo ${{ steps.get-java-version.outputs.java-version }}
debug-java-version-job:
runs-on: ubuntu-latest
needs: java-version
steps:
- name: debug
run: |
echo "${{ needs.java-version.outputs.java-version }}"
build:
uses: ./.github/workflows/build.yaml
needs: java-version
strategy:
matrix:
crypto-type: ["bouncycastle", "gnu"]
with:
java-version: ${{ needs.java-version.outputs.java-version }}
branch: ${{ inputs.branch }}
use-server-rc: ${{ inputs.use-server-rc }}
run-tests: ${{ inputs.run-tests }}
server-tag: ${{ inputs.server-tag }}
upload-artifacts: ${{ inputs.upload-artifacts }}
crypto-type: ${{ matrix.crypto-type }}
secrets: inherit
101 changes: 101 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Build artifacts

permissions:
# This is required for requesting the OIDC token
id-token: write

on:
workflow_call:
inputs:
branch:
type: string
required: true
java-version:
type: string
required: true
use-server-rc:
type: boolean
required: false
default: false
description: "Test against server release candidate?"
server-tag:
type: string
required: false
default: "latest"
description: "Server docker image tag"
upload-artifacts:
type: boolean
required: false
default: false
description: "Upload built artifacts to github?"
run-tests:
type: boolean
required: false
default: false
description: Spin up aerospike enterprise server and run tests
crypto-type:
type: string
required: true

secrets:
JFROG_USERNAME:
required: true
JFROG_DOCKER_TOKEN:
required: true
GPG_SECRET_KEY:
required: true
GPG_PASS:
required: true

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout client
uses: actions/checkout@v4
with:
ref: ${{ inputs.branch }}

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "semeru" # See 'Supported distributions' for available options
java-version: ${{ inputs.java-version }}
gpg-private-key: ${{ secrets.GPG_SECRET_KEY }}
gpg-passphrase: ${{ secrets.GPG_PASS }}

- name: Build
run: mvn install -Dcrypto.type=${{ inputs.client-type == 'bouncycastle' && '-bc' || '' }}

- name: Run EE server
if: ${{ inputs.run-tests == true }}
uses: ./.github/actions/run-ee-server
with:
use-server-rc: ${{ inputs.use-server-rc }}
server-tag: ${{ inputs.server-tag }}
docker-hub-username: ${{ secrets.JFROG_USERNAME }}
docker-hub-password: ${{ secrets.JFROG_DOCKER_TOKEN }}

- name: Test
if: ${{ inputs.run-tests == true }}
working-directory: test
run: mvn test -DskipTests=false

- name: Generate docs jar
if: ${{ !cancelled() && inputs.upload-artifacts == true }}
working-directory: client
run: |
mvn javadoc:jar
- name: Generate sources jar
if: ${{ !cancelled() && inputs.upload-artifacts == true }}
working-directory: client
run: |
mvn source:jar
- name: Upload to JFrog
if: ${{ !cancelled() && inputs.upload-artifacts == true }}
uses: ./.github/actions/upload-to-jfrog
with:
version: ${{ steps.get-new-version.outputs.new_version }}
jdk-version: "jdk${{ inputs.java-version }}"
21 changes: 0 additions & 21 deletions .github/workflows/build.yml

This file was deleted.

Loading

0 comments on commit 0421aa4

Please sign in to comment.