diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 6c24d76..977ba32 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -10,27 +10,31 @@ jobs: build: runs-on: ubuntu-latest steps: - - name: Checkout code + - name: "👷 Checkout code" uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Set up java + + - name: "☕ Set up java" uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11' + java-version: '17' cache: maven gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} gpg-passphrase: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - - name: Compile + + - name: "🔧 Compile" run: mvn compile - - name: Cache SonarCloud packages + + - name: "⏬ Cache SonarCloud packages" uses: actions/cache@v1 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - name: Quality Check + + - name: "🎓 Quality Check" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/manual-deploy.yml b/.github/workflows/manual-deploy.yml index 4149965..fbdb763 100644 --- a/.github/workflows/manual-deploy.yml +++ b/.github/workflows/manual-deploy.yml @@ -3,24 +3,113 @@ name: Manual Deployment to Maven Central on: workflow_dispatch jobs: + build: + runs-on: ubuntu-latest + steps: + - name: "👷 Checkout code" + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: "☕ Set up java" + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + cache: maven + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + gpg-passphrase: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + + - name: "🔧 Compile" + run: mvn compile + publish: needs: build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - name: "👷 Checkout code" + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: "☕ Set up java" + uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11' + java-version: '17' cache: maven server-id: ossrh server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE - - name: Publish package + + - name: "🗽 Publish package" run: mvn clean deploy -DskipTests -Prelease env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + + tag_release: + needs: publish + runs-on: ubuntu-latest + steps: + - name: "👷 Checkout code" + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: "📎 Install xmllint" + run: sudo apt-get install -y libxml2-utils + + - name: "📑 Setup release information" + run: | + pom_version=`xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' pom.xml` + echo "POM_VERSION=$pom_version" >> $GITHUB_ENV + + - name: "✏️ Generate release changelog" + id: extract-release-changelog + uses: heinrichreimer/github-changelog-generator-action@v2.3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + unreleasedOnly: "true" + stripHeaders: "true" + stripGeneratorNotice: "true" + futureRelease: ${{ env.POM_VERSION }} + + - name: "📍 Create release" + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.POM_VERSION }} + release_name: v${{ env.POM_VERSION }} + draft: false + prerelease: false + body: ${{ steps.extract-release-changelog.outputs.changelog }} + + - name: "✏️ Generate full changelog" + id: extract-changelog + uses: heinrichreimer/github-changelog-generator-action@v2.3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + stripGeneratorNotice: "true" + + - name: "⛲ Commit files" + env: + CI_USER: github-actions + CI_EMAIL: github-actions@github.com + run: | + git config --local user.email "$CI_EMAIL" + git config --local user.name "$CI_USER" + git status + git add CHANGELOG.md && git commit -m 'Updated CHANGELOG.md' && echo "push=true" >> $GITHUB_ENV || echo "No changes to CHANGELOG.md" + + - name: "⏫ Push changes" + if: env.push == 'true' + env: + CI_USER: github-actions + CI_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git push "https://$CI_USER:$CI_TOKEN@github.com/$GITHUB_REPOSITORY.git" HEAD:master \ No newline at end of file