name: Publish Conductor Server to S3 on: push: branches: - docker_build # TEMPORARY - remove before merging to main release: types: - released - prereleased workflow_dispatch: inputs: version: description: 'Version to publish (e.g., v1.0.0)' required: true permissions: contents: read jobs: publish-s3: runs-on: ubuntu-latest name: Build and Publish Server JAR to S3 steps: - uses: actions/checkout@v7 - name: Set up Zulu JDK 21 uses: actions/setup-java@v5 with: distribution: 'zulu' java-version: '21' - name: Cache Gradle packages uses: actions/cache@v5 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Set version id: version run: | # Use inputs.version for workflow_dispatch, or ref_name for release events VERSION="${{ github.event.inputs.version || github.ref_name }}" # Strip the 'v' prefix if present PUBLISH_VERSION="${VERSION#v}" echo "version=$PUBLISH_VERSION" >> $GITHUB_OUTPUT echo "Publishing version: $PUBLISH_VERSION" - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: 'lts/*' - name: Build Server module run: | corepack enable ./build_ui_next.sh ./gradlew :conductor-server:bootJar -x test -Pversion=${{ steps.version.outputs.version }} - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v6 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.AWS_REGION }} - name: Upload Server JAR to S3 (Versioned) run: | aws s3 cp server/build/libs/conductor-server-${{ steps.version.outputs.version }}-boot.jar \ s3://${{ secrets.AWS_S3_BUCKET }}/conductor-server-${{ steps.version.outputs.version }}.jar - name: Upload Server JAR to S3 (Latest) if: github.event_name == 'release' && !github.event.release.prerelease run: | aws s3 cp server/build/libs/conductor-server-${{ steps.version.outputs.version }}-boot.jar \ s3://${{ secrets.AWS_S3_BUCKET }}/conductor-server-latest.jar - name: Verify uploads run: | echo "Uploaded conductor-server-${{ steps.version.outputs.version }}.jar" echo "S3 bucket: ${{ secrets.AWS_S3_BUCKET }}"