如何通过Maven GitHub Actions下载GitHub Packages最新Jar并部署至Cloud Hub
前置配置
你需要先在GitHub仓库的「Settings - Secrets and variables - Actions」中新增以下密钥:
CLOUDHUB_USERNAME:CloudHub登录账号CLOUDHUB_PASSWORD:CloudHub登录密码CLOUDHUB_ENV:目标部署环境(如Sandbox)CLOUDHUB_APP_NAME:你的Mule应用在CloudHub中的唯一名称
同时确认你的项目pom.xml中已经正确配置了mule-maven-plugin,且插件配置中已支持读取环境变量作为认证参数。
方案1:直接复用当前工作流,构建完成后直接部署到CloudHub
该方案不需要额外下载包/源码,直接复用构建阶段生成的jar完成部署,流程最简效率最高。
修改后的完整工作流代码如下:
name: GitHub Packages, Releases and CloudHub Deployment with Java CI with Maven on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK 11 uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' server-id: github # 对应pom.xml里的server id,用于推送包到GitHub Packages server-username: GITHUB_ACTOR server-password: GITHUB_TOKEN - name: Build with Maven run: mvn -B package --file pom.xml - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: mule-app-jar path: target/*.jar # 请根据你实际的jar输出路径调整 Publish: needs: build runs-on: ubuntu-latest permissions: contents: write packages: write steps: - uses: actions/checkout@v4 - name: Download build artifact uses: actions/download-artifact@v4 with: name: mule-app-jar path: target/ - name: Set up JDK 11 uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' server-id: github server-username: GITHUB_ACTOR server-password: GITHUB_TOKEN - name: Push to GitHub Packages run: mvn deploy -DskipTests env: GITHUB_TOKEN: ${{ secrets.GIT_TOKEN }} - name: Create GitHub Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GIT_TOKEN }} with: tag_name: v${{ github.run_number }} release_name: Release v${{ github.run_number }} draft: false prerelease: false - name: Upload Jar to Release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GIT_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: target/hello-world-mule.jar # 请替换为你实际的jar文件名 asset_name: hello-world-mule-v${{ github.run_number }}.jar asset_content_type: application/java-archive deploy-to-cloudhub: needs: Publish runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Download build artifact uses: actions/download-artifact@v4 with: name: mule-app-jar path: target/ - name: Set up JDK 11 uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' - name: Deploy to CloudHub with Maven run: mvn mule:deploy -Dmule.username=${{ secrets.CLOUDHUB_USERNAME }} -Dmule.password=${{ secrets.CLOUDHUB_PASSWORD }} -Dmule.env=${{ secrets.CLOUDHUB_ENV }} -Dmule.app.name=${{ secrets.CLOUDHUB_APP_NAME }} -DskipTests
方案2:从GitHub Packages下载Jar部署
如果你需要单独的部署工作流,不需要和构建发布绑定,可参考以下配置:
name: Deploy Mule App to CloudHub from GitHub Packages on: workflow_dispatch: # 手动触发 inputs: package_version: description: 要部署的包版本号 required: true jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK 11 uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' server-id: github server-username: GITHUB_ACTOR server-password: GITHUB_TOKEN - name: Download Jar from GitHub Packages run: | mvn dependency:get \ -DgroupId=你的groupId \ -DartifactId=你的artifactId \ -Dversion=${{ github.event.inputs.package_version }} \ -Dpackaging=jar \ -DrepoUrl=https://maven.pkg.github.com/你的GitHub用户名/你的仓库名 env: GITHUB_TOKEN: ${{ secrets.GIT_TOKEN }} - name: Deploy to CloudHub run: mvn mule:deploy -Dmule.username=${{ secrets.CLOUDHUB_USERNAME }} -Dmule.password=${{ secrets.CLOUDHUB_PASSWORD }} -Dmule.env=${{ secrets.CLOUDHUB_ENV }} -Dmule.app.name=${{ secrets.CLOUDHUB_APP_NAME }} -DskipTests
方案3:从GitHub Release拉取源码压缩包构建后部署
如果需要从Release的源码包构建再部署,可参考以下步骤配置部署工作流:
- 先通过GitHub API获取指定版本Release的源码压缩包下载地址
- 下载解压源码后执行Maven构建和部署命令即可
内容的提问来源于stack exchange,提问作者anonymous
相关产品推荐
相关产品推荐

