Skip to content

Instantly share code, notes, and snippets.

@amitastreait
Created August 2, 2025 09:33
Show Gist options
  • Select an option

  • Save amitastreait/76a29034e088d0d6f4eaa5687c46cdff to your computer and use it in GitHub Desktop.

Select an option

Save amitastreait/76a29034e088d0d6f4eaa5687c46cdff to your computer and use it in GitHub Desktop.
name: Build and Deploy to Sandbox in Cloudhub
on:
push:
branches:
- feature/*
- developer
paths:
- 'src/**'
pull_request:
branches:
- master
- main
types:
- closed
paths:
- 'src/**'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
env:
NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }}
NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
ANYPOINT_USERNAME: ${{ secrets.ANYPOINT_USERNAME }}
ANYPOINT_PASSWORD: ${{ secrets.ANYPOINT_PASSWORD }}
SANDBOX_CLIENT_ID: ${{ secrets.SANDBOX_CLIENT_ID }}
SANDBOX_CLIENT_SECRET: ${{ secrets.SANDBOX_CLIENT_SECRET }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SECURE_KEY: ${{ secrets.SECURE_KEY}}
SETTINGS_FILE: ${{ secrets.SETTINGS_FILE}}
steps:
- uses: act10ns/slack@v2
with:
status: starting
channel: '#workflows'
message: Buliding {{ env.GITHUB_REF_NAME }} branch with Maven build
if: always()
- uses: actions/checkout@v3
id: checkout-code
with:
fetch-depth: 0
- uses: actions/cache@v3.2.1
id: prepare-chache
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Set up Java JDK
id: setup-jdk
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 8
- name: Build with Maven
id: maven-build
run: mvn clean -B package -s .maven/settings.xml
# run: mvn -B package --file pom.xml
- name: Stamp artifact file name with commit hash
id: prepare-artifacts
run: |
artifactName1=$(ls target/*.jar | head -1)
commitHash=$(git rev-parse --short "$GITHUB_SHA")
artifactName2=$(ls target/*.jar | head -1 | sed "s/.jar/-$commitHash.jar/g")
mv $artifactName1 $artifactName2
- name: Upload artifact
id: upload-artifacts
uses: actions/upload-artifact@master
with:
name: artifacts
path: target/*.jar
- uses: act10ns/slack@v2
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
channel: '#workflows'
if: always()
test:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Checking Cache
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Build with Maven
run: mvn clean test -DruntimeProduct=MULE_EE
- uses: act10ns/slack@v2
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
channel: '#workflows'
if: always()
deploy:
needs: test
runs-on: ubuntu-latest
env:
NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }}
NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
ANYPOINT_USERNAME: ${{ secrets.ANYPOINT_USERNAME }}
ANYPOINT_PASSWORD: ${{ secrets.ANYPOINT_PASSWORD }}
CLIENT_ID: ${{ secrets.SANDBOX_CLIENT_ID }}
CLIENT_SECRET: ${{ secrets.SANDBOX_CLIENT_SECRET }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SECURE_KEY: ${{ secrets.SECURE_KEY}}
SETTINGS_FILE: ${{ secrets.SETTINGS_FILE}}
steps:
- uses: act10ns/slack@v2
with:
status: starting
channel: '#workflows'
message: Starting Maven Test
if: always()
- uses: act10ns/slack@v2
with:
status: starting
channel: '#workflows'
message: Starting Maven Deploy
if: always()
- uses: actions/checkout@v3
id: checkout-code
with:
fetch-depth: 0
- name: Set up Java JDK
id: setup-jdk
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 8
- uses: actions/cache@v3.2.1
id: prepare-cache
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- uses: actions/download-artifact@master
id: download-mule-artifacts
with:
name: artifacts
- name: Deploy to Sandbox
id: deploy-mule-artifacts
#env:
#USERNAME: ${{ secrets.ANYPOINT_USERNAME }}
#PASSWORD: ${{ secrets.ANYPOINT_PASSWORD }}
#SECURE_KEY: ${{ secrets.SECURE_KEY}}
#SETTINGS_FILE: ${{ secrets.SETTINGS_FILE}}
run: |
# Test the Deployment
#mvn clean package install
#mvn clean deploy -DmuleDeploy
# Deployment using Username & Password
mvn clean package deploy -DmuleDeploy -DskipTests -s .maven/settings.xml -Danypoint.password=${{ env.ANYPOINT_PASSWORD }} -Danypoint.username=${{ env.ANYPOINT_USERNAME }} -Denv=Sandbox -DbusinessGroup=PantherSchools -DwokerType=MICRO -DworkerSize=1 -Dmule.version=4.4.0 -Dsecure.key=${{env.SECURE_KEY}} -DenvProp=dev
# Deployment using Connected Application
#mvn clean package deploy -DmuleDeploy -DskipTests -s .maven/settings.xml -Dapp.id=${{ env.CLIENT_ID }} -Dapp.secret=${{ env.CLIENT_SECRET }} -Denv=Sandbox -DbusinessGroup=PantherSchools -DwokerType=MICRO -DworkerSize=1 -Dmule.version=4.4.0 -Dsecure.key=${{env.SECURE_KEY}} -DenvProp=dev
- uses: act10ns/slack@v2
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
channel: '#workflows'
if: always()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment