diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..15a0ac7 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,65 @@ +name: Build + +on: + push: + branches: '**' + paths: + - 'src/**' + - 'pom.xml' + pull_request: + branches: '**' + paths: + - 'src/**' + - 'pom.xml' + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v3 + + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '11' + cache: 'maven' + + - name: Build + run: mvn -B -DskipTests clean package + + - name: Test + run: mvn test + + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + directory: ./target/site/jacoco + files: jacoco.xml + fail_ci_if_error: false + + - name: Retrieve Name & Version + run: | + echo "VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV + echo "NAME=$(mvn help:evaluate -Dexpression=project.name -q -DforceStdout)" >> $GITHUB_ENV + + - name: Archive Jar + uses: actions/upload-artifact@v3 + with: + name: ${{ env.NAME }}-${{ env.VERSION }}.jar + path: ./target/${{ env.NAME }}-${{ env.VERSION }}.jar + + - name: Archive Javadoc + uses: actions/upload-artifact@v3 + with: + name: ${{ env.NAME }}-${{ env.VERSION }}-javadoc.jar + path: ./target/${{ env.NAME }}-${{ env.VERSION }}-javadoc.jar + + - name: Archive Sources + uses: actions/upload-artifact@v3 + with: + name: ${{ env.NAME }}-${{ env.VERSION }}-sources.jar + path: ./target/${{ env.NAME }}-${{ env.VERSION }}-sources.jar \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..32e779b --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,66 @@ +name: Deploy + +on: + push: + tags: + - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v3 + + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '11' + cache: 'maven' + server-id: ossrh + server-username: OSSRH_USERNAME + server-password: OSSRH_PASSWORD + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE + + - name: Build + run: mvn -B -DskipTests clean package + + - name: Deploy + env: + OSSRH_USERNAME: sgoudham + OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + run: mvn -B -DskipTests deploy + + - name: Get Name & Version + run: | + echo "VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV + echo "NAME=$(mvn help:evaluate -Dexpression=project.name -q -DforceStdout)" >> $GITHUB_ENV + + - name: Archive Jar + uses: actions/upload-artifact@v3 + with: + name: ${{ env.NAME }}-${{ env.VERSION }}.jar + path: ./target/${{ env.NAME }}-${{ env.VERSION }}.jar + + - name: Archive Javadoc + uses: actions/upload-artifact@v3 + with: + name: ${{ env.NAME }}-${{ env.VERSION }}-javadoc.jar + path: ./target/${{ env.NAME }}-${{ env.VERSION }}-javadoc.jar + + - name: Archive Sources + uses: actions/upload-artifact@v3 + with: + name: ${{ env.NAME }}-${{ env.VERSION }}-sources.jar + path: ./target/${{ env.NAME }}-${{ env.VERSION }}-sources.jar + + - name: Create Release + uses: ncipollo/release-action@v1 + with: + artifacts: target/*.jar + generateReleaseNotes: true + makeLatest: true + draft: true \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 1a3f72d..0000000 --- a/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM maven:3.8.1-adoptopenjdk-11 -MAINTAINER Goudham Suresh - -RUN apt-get update && apt-get install -y gpg \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index dbc6054..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,77 +0,0 @@ -pipeline { - agent { - dockerfile { - args '-u root' - } - } - - environment { - CODECOV_TOKEN = credentials('44a3c021-5cbb-4a6f-bea2-ae6c51d43038') - - GPG_SECRET_KEY = credentials('4dbfd4ed-bba4-44e0-8410-fbce1a9bba73') - GPG_OWNER_TRUST = credentials('8703bbe8-c099-481f-8337-1dce32d51771') - } - - stages { - stage("Import GPG Keys") { - when { - branch 'release' - } - steps { - sh 'gpg --batch --import $GPG_SECRET_KEY' - sh 'gpg --import-ownertrust $GPG_OWNER_TRUST' - } - } - stage("Build") { - steps { - withCredentials([file(credentialsId: '076a36e8-d448-46fc-af11-7e7181a6cb99', variable: 'MAVEN_SETTINGS')]) { - sh 'mvn -s $MAVEN_SETTINGS -B -DskipTests clean package' - } - } - } - stage("Test") { - steps { - sh "mvn test" - } - post { - success { - echo "Generating Test Report..." - publishCoverage adapters: [jacocoAdapter('target/site/jacoco/jacoco.xml')] - - echo "Sending Report to CodeCov..." - sh '''#!/bin/bash - bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN || echo "Codecov did not collect coverage reports" - ''' - } - } - } - stage("Deploy To OSSRH") { - when { - branch 'release' - } - steps { - withCredentials([file(credentialsId: '076a36e8-d448-46fc-af11-7e7181a6cb99', variable: 'MAVEN_SETTINGS')]) { - sh 'mvn -s $MAVEN_SETTINGS -B -DskipTests clean deploy' - } - } - post { - success { - echo "Archiving Artifacts" - archiveArtifacts artifacts: 'target/*.jar' - } - } - } - } - - post { - success { - echo "I'm Feeling Swag!" - } - failure { - echo 'Not Very Swag :(' - } - cleanup { - cleanWs() - } - } -} \ No newline at end of file diff --git a/README.md b/README.md index 95400ef..04879db 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,10 @@ -[license]: https://img.shields.io/github/license/sgoudham/MyWaifuWrapper [maven-central]: https://img.shields.io/maven-central/v/me.goudham/MyWaifuWrapper -[build-status]: https://goudham.me/jenkins/job/sgoudham/job/MyWaifuWrapper/job/release/badge/icon +[build-status]: https://img.shields.io/github/checks-status/sgoudham/MyWaifuWrapper/main [codecov]: https://codecov.io/gh/sgoudham/MyWaifuWrapper/branch/main/graph/badge.svg?token=RxUDnCWnF0 -[issues]: https://img.shields.io/github/issues/sgoudham/MyWaifuWrapper?label=issues -[pull-requests]: https://img.shields.io/github/issues-pr/sgoudham/MyWaifuWrapper -[fossa]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Fsgoudham%2FMyWaifuWrapper.svg?type=shield -![fossa] -![license] ![maven-central] ![build-status] ![codecov] -![issues] -![pull-requests]