Replace Bamboo SCDF samples build w/ GitHub actions (#159)

Add GitHub actions based CI pipeline

Resolves #155
This commit is contained in:
Chris Bono
2022-01-21 11:31:06 -06:00
committed by GitHub
parent 547f87027b
commit ef1a52efd9
11 changed files with 501 additions and 91 deletions

View File

@@ -5,18 +5,11 @@ on:
jobs:
build:
runs-on: ubuntu-latest
name: CI PR Build
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
with:
distribution: adopt
java-version: 8
cache: maven
- name: Build kafka-samples
run: ./mvnw -B package
working-directory: kafka-samples
- name: Build multio-samples/ticktock
run: ./mvnw -B package
working-directory: multio-samples/ticktock
name: Call Build Workflow
uses: spring-cloud/spring-cloud-dataflow-samples/.github/workflows/ci.yml@main
with:
maven-build-only: true
secrets:
JF_ARTIFACTORY_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}

View File

@@ -1,41 +0,0 @@
name: CI Publish
on:
workflow_call:
secrets:
jfArtifactorySpring:
required: true
jobs:
publish:
runs-on: ubuntu-latest
name: CI Publish
steps:
- uses: actions/checkout@v2
- uses: jvalkeal/setup-maven@v1
with:
maven-version: 3.8.4
- uses: actions/setup-java@v2
with:
distribution: adopt
java-version: 8
- uses: jfrog/setup-jfrog-cli@v1
with:
version: 1.46.4
env:
JF_ARTIFACTORY_SPRING: ${{ secrets.jfArtifactorySpring }}
- name: Configure JFrog Cli
run: |
jfrog rt mvnc \
--server-id-resolve=repo.spring.io \
--server-id-deploy=repo.spring.io \
--repo-resolve-releases=libs-milestone \
--repo-resolve-snapshots=libs-snapshot \
--repo-deploy-releases=release \
--repo-deploy-snapshots=snapshot
echo JFROG_CLI_BUILD_NAME=spring-shell-main >> $GITHUB_ENV
echo JFROG_CLI_BUILD_NUMBER=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
- name: Build and Publish
run: |
jfrog rt mvn -B clean install -DskipTests
jfrog rt build-publish

View File

@@ -1,38 +1,296 @@
name: CI
on:
workflow_dispatch:
# Called when code gets pushed to the main branch
push:
# branches:
# - 'main'
# paths:
# - 'scenario-task'
branches:
- main
paths-ignore:
- '.github/**'
# Called by UI
workflow_dispatch:
# Called by the CI PR workflow (invokes main CI but skips publish and push)
workflow_call:
inputs:
maven-build-only:
type: boolean
description: Skip Artifactory publish and Docker push for all apps
required: false
default: 'false'
secrets:
JF_ARTIFACTORY_SPRING:
description: 'encoded JFrog server id configuration'
required: false
DOCKER_USERNAME:
description: 'docker username'
required: false
DOCKER_TOKEN:
description: 'docker password'
required: false
jobs:
build:
kafka-samples:
runs-on: ubuntu-latest
strategy:
fail-fast: false
name: CI Build
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
- uses: ./.github/actions/build-sample-app
with:
distribution: adopt
java-version: 8
cache: maven
- name: Build kafka-samples
run: ./mvnw -B package
working-directory: kafka-samples
- name: Build multio-samples/ticktock
run: ./mvnw -B package
working-directory: multio-samples/ticktock
app-dir: 'kafka-samples'
mvn-build-commands: '-B clean verify -Pspring'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
# publish:
# needs: [build]
# name: Call Publish Snapshot
# uses: spring-cloud/spring-cloud-dataflow-samples/.github/workflows/ci-publish.yml@main
# secrets:
# jfArtifactorySpring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
multi-io-ticktock:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'multi-io-samples/ticktock'
mvn-build-commands: '-B clean install -Dmaven.javadoc.skip=true jib:dockerBuild -pl multi-output-time-rabbit,multi-input-log-rabbit,multi-output-time-kafka,multi-input-log-kafka'
multi-io-http-purchase-orders:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'multi-io-samples/purchase-orders/http-purchase-orders'
mvn-build-commands: '-B clean install jib:dockerBuild'
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudstream/multi-io-sample-http-purchase-orders:1.0.0-SNAPSHOT
user-clicks-per-region-12x:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'multi-io-samples/kafka-streams/user-clicks-per-region-1.2.x'
mvn-build-commands: '-B clean install jib:dockerBuild -pl http-click-ingest,http-region-ingest,http-clicks-and-region-ingest,user-clicks-per-region-processor,log-user-clicks-per-region'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudstream/multi-io-sample-http-click-ingest:1.2.0-SNAPSHOT
springcloudstream/multi-io-sample-http-region-ingest:1.2.0-SNAPSHOT
springcloudstream/multi-io-sample-http-clicks-and-region-ingest:1.2.0-SNAPSHOT
springcloudstream/multi-io-sample-user-clicks-per-region-processor:1.2.0-SNAPSHOT
springcloudstream/multi-io-sample-log-user-clicks-per-region:1.2.0-SNAPSHOT
function-samples:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'function-samples'
mvn-build-commands: '-B clean verify -Pspring'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
function-samples-uppercase-processor:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'function-samples/uppercase-processor'
mvn-build-commands: '-B clean install jib:dockerBuild'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudstream/uppercase-processor:1.0.0-SNAPSHOT
stream-dev-guides-standalone-stream-kafka:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'dataflow-website/stream-developer-guides/streams/standalone-stream-sample'
mvn-build-commands: '-B clean install jib:dockerBuild'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudstream/usage-detail-sender-kafka:0.0.1-SNAPSHOT
springcloudstream/usage-cost-processor-kafka:0.0.1-SNAPSHOT
springcloudstream/usage-cost-logger-kafka:0.0.1-SNAPSHOT
stream-dev-guides-standalone-stream-rabbitmq:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'dataflow-website/stream-developer-guides/streams/standalone-stream-sample'
mvn-build-commands: '-B clean install -Prabbit jib:dockerBuild'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
jf-mvn-build-commands: '-B clean install -Prabbit -DskipTests'
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudstream/usage-detail-sender-rabbit:0.0.1-SNAPSHOT
springcloudstream/usage-cost-processor-rabbit:0.0.1-SNAPSHOT
springcloudstream/usage-cost-logger-rabbit:0.0.1-SNAPSHOT
batch-dev-guides-batchsamples:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'dataflow-website/batch-developer-guides/batch/batchsamples'
mvn-build-commands: '-B clean install spring-boot:build-image -Dspring-boot.build-image.imageName=springcloudtask/billsetuptask:0.0.1-SNAPSHOT'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudtask/billsetuptask:0.0.1-SNAPSHOT
stream-dev-guides-composed-http-transformer-kafka:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'dataflow-website/stream-developer-guides/feature-guides/streams/function-composition/composed-http-transformer-kafka'
mvn-build-commands: '-B clean install jib:dockerBuild'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudstream/composed-http-transformer-kafka:0.0.1-SNAPSHOT
stream-dev-guides-composed-http-transformer-kotlin-kafka:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'dataflow-website/stream-developer-guides/feature-guides/streams/function-composition/composed-http-transformer-kotlin-kafka'
mvn-build-commands: '-B clean install jib:dockerBuild'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudstream/composed-http-transformer-kotlin-kafka:0.0.1-SNAPSHOT
stream-dev-guides-composed-http-transformer-rabbitmq:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'dataflow-website/stream-developer-guides/feature-guides/streams/function-composition/composed-http-transformer-rabbitmq'
mvn-build-commands: '-B clean install jib:dockerBuild'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudstream/composed-http-transformer-rabbitmq:0.0.1-SNAPSHOT
stream-dev-guides-composed-http-transformer-kotlin-rabbitmq:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'dataflow-website/stream-developer-guides/feature-guides/streams/function-composition/composed-http-transformer-kotlin-rabbitmq'
mvn-build-commands: '-B clean install jib:dockerBuild'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudstream/composed-http-transformer-kotlin-rabbitmq:0.0.1-SNAPSHOT
task-demo-metrics-prometheus:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'monitoring-samples/task-apps/task-demo-metrics-prometheus'
mvn-build-commands: '-B clean install docker:build'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudtask/task-demo-metrics-prometheus:0.0.4-SNAPSHOT
scenario-task:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'scenario-task'
mvn-build-commands: '-B clean install spring-boot:build-image -Dspring-boot.build-image.imageName=springcloudtask/scenario-task:0.0.1-SNAPSHOT'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudtask/scenario-task:0.0.1-SNAPSHOT
timestamp-task:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'timestamp-task'
mvn-build-commands: '-B clean install spring-boot:build-image -Dspring-boot.build-image.imageName=springcloudtask/timestamp-task:1.0.0'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudtask/timestamp-task:1.0.0
timestamp-batch:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/build-sample-app
with:
app-dir: 'timestamp-batch'
mvn-build-commands: '-B clean install spring-boot:build-image -Dspring-boot.build-image.imageName=springcloudtask/timestamp-batch-task:1.0.0'
artifactory-publish: ${{ inputs.maven-build-only != 'true' }}
jf-artifactory-spring: ${{ secrets.JF_ARTIFACTORY_SPRING }}
docker-push: ${{ inputs.maven-build-only != 'true' }}
docker-username: ${{ secrets.DOCKERHUB_USERNAME }}
docker-password: ${{ secrets.DOCKERHUB_TOKEN }}
docker-images: >-
springcloudtask/timestamp-batch-task:1.0.0