name: CI/CD on: pull_request: branches: - master types: - closed jobs: build-deploy: runs-on: act_runner_java if: ${{ github.event.pull_request.merged == true }} steps: - name: Set up environment run: | echo "PR #${{ github.event.number }} merged into master" echo "Source branch: ${{ github.event.pull_request.head.ref }}" echo "Target branch: ${{ github.event.pull_request.base.ref }}" - name: Run tests run: | echo "Running test suite..." - name: Build project run: | mvn -B -DskipTests clean package source:jar javadoc:jar - name: Deploy if: success() run: | if [ -z "${{ secrets.NEXUS_USERNAME }}" ] || [ -z "${{ secrets.NEXUS_PASSWORD }}" ]; then echo "Missing secrets.NEXUS_USERNAME or secrets.NEXUS_PASSWORD" exit 1 fi mkdir -p ~/.m2 cat > ~/.m2/settings.xml < timi-nexus ${{ secrets.NEXUS_USERNAME }} ${{ secrets.NEXUS_PASSWORD }} EOF version=$(mvn -q -DforceStdout help:evaluate -Dexpression=project.version) artifact_id=$(mvn -q -DforceStdout help:evaluate -Dexpression=project.artifactId) main_jar="target/${artifact_id}-${version}.jar" sources_jar="target/${artifact_id}-${version}-sources.jar" javadoc_jar="target/${artifact_id}-${version}-javadoc.jar" if [ ! -f "$main_jar" ] || [ ! -f "$sources_jar" ] || [ ! -f "$javadoc_jar" ]; then echo "Missing build artifacts in target" exit 1 fi mvn -B deploy:deploy-file \ -Dfile="$main_jar" \ -Dsources="$sources_jar" \ -Djavadoc="$javadoc_jar" \ -DpomFile="./pom.xml" \ -Durl="https://nexus.imyeyu.com/repository/maven-releases/" \ -DrepositoryId="timi-nexus" - name: Upload jar artifact if: success() uses: actions/upload-artifact@v3 with: name: build-jar path: target/*.jar if-no-files-found: error create-release: runs-on: act_runner_base needs: build-deploy if: ${{ success() && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'master' && startsWith(github.event.pull_request.title, 'v') }} steps: - name: Download jar artifact uses: actions/download-artifact@v3 with: name: build-jar path: dist - name: Create release env: GITEA_TOKEN: ${{ secrets.RUNNER_TOKEN }} GITEA_SERVER_URL: ${{ github.server_url }} GITEA_REPOSITORY: ${{ github.repository }} RELEASE_TAG: ${{ github.event.pull_request.title }} RELEASE_TARGET: ${{ github.sha }} run: | if [ -z "$GITEA_TOKEN" ]; then echo "Missing secrets.RUNNER_TOKEN" exit 1 fi api_url="$GITEA_SERVER_URL/api/v1/repos/$GITEA_REPOSITORY/releases" payload=$(cat </dev/null 2>&1; then echo "Missing jar artifact in dist" exit 1 fi for asset_path in dist/*.jar; do asset_name=$(basename "$asset_path") curl -sS -X POST "$api_url/$release_id/assets?name=$asset_name" \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/octet-stream" \ --data-binary @"$asset_path" done