Skip to content

Merge pull request #300 from AmericaSCORESBayArea/sandbox #22

Merge pull request #300 from AmericaSCORESBayArea/sandbox

Merge pull request #300 from AmericaSCORESBayArea/sandbox #22

name: Build and Deploy to Production
on:
push:
branches: [ master ]
workflow_dispatch:
jobs:
upload_raml:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python environment
uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r ./scripts/requirements.txt
- name: Execute exchange-update.py with secrets
env:
ORGANIZATION_ID: ${{ secrets.EXCHANGE_UPDATE_ORGANIZATION_ID }}
API_MANAGER_ENVIRONMENT_ID: ${{ secrets.PRODUCTION_EXCHANGE_UPDATE_API_MANAGER_ENVIRONMENT_ID }}
API_MANAGER_INSTANCE_ID: ${{ secrets.PRODUCTION_EXCHANGE_UPDATE_API_MANAGER_INSTANCE_ID }}
CLIENT_ID: ${{ secrets.EXCHANGE_UPDATE_CLIENT_ID }}
CLIENT_SECRET: ${{ secrets.EXCHANGE_UPDATE_CLIENT_SECRET }}
run: |
cd scripts
python exchange-update.py $ORGANIZATION_ID $API_MANAGER_ENVIRONMENT_ID $API_MANAGER_INSTANCE_ID $CLIENT_ID $CLIENT_SECRET
build_mule:
needs: upload_raml
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Cache Maven repository
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: 17
- name: Set up script permissions
run: chmod +x ./scripts/deployment-build.sh
- name: Set up script permissions 2
run: chmod +x ./scripts/disable-validations.sh
- name: Disable validations & execute deployment-build.sh with secrets
env:
KEYSTORE_KEY_PASSWORD: ${{ secrets.PRODUCTION_KEYSTORE_KEY_PASSWORD }}
KEYSTORE_PASSWORD: ${{ secrets.PRODUCTION_KEYSTORE_PASSWORD }}
run: |
cd scripts
./disable-validations.sh
./deployment-build.sh $KEYSTORE_KEY_PASSWORD $KEYSTORE_PASSWORD
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: artifacts
path: ./target/*.jar
deploy_mule:
needs: build_mule
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Cache Maven repository
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: artifacts
path: .
# - name: Print effective-settings
# run: mvn help:effective-settings
- name: Deploy to Production
run: |
artifactName=$(ls *.jar | head -1)
echo "Deploying artifact $artifactName to the Production environment."
mvn deploy -DmuleDeploy -e -Dmule.artifact=$artifactName \
-Danypoint.username="${{ secrets.ANYPOINT_CICD_USERNAME }}" \
-Danypoint.password="${{ secrets.ANYPOINT_CICD_PASSWORD }}" \
-Dapp.name=production-salesforce-data-api \
-Denv=Production \
-Denv.lowercase=production \
-Dapi.id="${{ secrets.PRODUCTION_API_ID }}" \
-Dkeystore.key.password="${{ secrets.PRODUCTION_KEYSTORE_KEY_PASSWORD }}" \
-Dkeystore.password="${{ secrets.PRODUCTION_KEYSTORE_PASSWORD }}" \
-Danypoint.platform.client_id="${{ secrets.ANYPOINT_PLATFORM_CLIENT_ID }}" \
-Danypoint.platform.client_secret="${{ secrets.ANYPOINT_PLATFORM_CLIENT_SECRET }}" \
-Dsfdc.password="${{ secrets.SFDC_PROD_INTEGRATIONUSER_PWD }}" \
-Dsfdc.tkn="${{ secrets.SFDC_PROD_INTEGRATIONUSER_TKN }}" \
-Dtypeform.clientid="${{ secrets.TYPEFORM_CLIENTID }}" \
-Dtypeform.clientsecret="${{ secrets.TYPEFORM_CLIENTSECRET }}" \
-Dtypeform.tkn="${{ secrets.TYPEFORM_TKN }}" \
-DskipTests
- name: Confirm Deployment
run: |
echo "Deployment to Sandbox completed."
create-release:
needs: deploy_mule
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Execute version.sh to determine new tag
id: determine_version
run: |
chmod +x ./scripts/version.sh
new_tag=$(./scripts/version.sh)
echo "::set-output name=new_tag::$new_tag"
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.determine_version.outputs.new_tag }}
release_name: Release ${{ steps.determine_version.outputs.new_tag }}
body: "Release of the production-salesforce-data-api"
draft: false
prerelease: false
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: artifacts
path: .
- name: Capture artifact file path
id: get_file
run: echo "FILE_PATH=$(ls ./*.jar)" >> $GITHUB_ENV
- name: Upload artifact to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.FILE_PATH }}
asset_name: production-salesforce-data-api-${{ steps.determine_version.outputs.new_tag }}.jar
asset_content_type: application/java-archive