IBM/scc-java-sdk

View on GitHub
.github/workflows/main.yaml

Summary

Maintainability
Test Coverage
name: CI/CD Pipeline
on:
  push:
    branches: [main]
  pull_request:
  workflow_dispatch:

jobs:
  verify:
    runs-on: ubuntu-latest
    if: "!startsWith(github.event.head_commit.message, 'chore') && !startsWith(github.ref, 'refs/tags/v')"
    steps:
      - uses: actions/checkout@v1

      - uses: actions/setup-java@v2
        with:
          distribution: 'adopt'
          java-version: '8'

      - name: installing dependencies
        run: mvn install

  test:
    runs-on: ubuntu-latest
    env:
      MVN_ARGS: "--settings build/.travis.settings.xml"
    if: "!startsWith(github.event.head_commit.message, 'chore') && !startsWith(github.ref, 'refs/tags/v')"
    steps:
      - uses: actions/checkout@v1

      - uses: actions/setup-java@v2
        with:
          distribution: 'adopt'
          java-version: '8'

      - name: building project
        run: mvn clean compile

      - name: running unit tests
        run: mvn verify -fae -DskipITs $MVN_ARGS

      - name: publishing code coverage report to codeclimate
        env:
          CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
        run: |
          curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
          chmod +x ./cc-test-reporter
          ./cc-test-reporter before-build
          build/publishCodeCoverage.sh

      - name: running integration tests
        env:
          SCC_ENV: ${{ secrets.SCC_ENV }}
          SECURITY_AND_COMPLIANCE_CENTER_API_IAM_PROFILE_ID: ${{ secrets.SCC_IAM_PROFILE_ID }}          
        run: build/testScript.sh

  release:
    runs-on: ubuntu-latest
    needs: [verify, test]
    if: "github.event_name == 'push' && github.ref == 'refs/heads/main' && !startsWith(github.event.head_commit.message, 'chore')"
    steps:
      - name: setting up extensions
        uses: actions/checkout@v1

      - name: setting up nodejs
        uses: actions/setup-node@v2
        with:
          node-version: '18'

      - name: setup python
        uses: actions/setup-python@v2
        with:
          python-version: 3.8

      - name: releasing using semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.ADMIN_TOKEN }}
          GIT_AUTHOR_NAME: sccdeveloper
          GIT_AUTHOR_EMAIL: scccomm@in.ibm.com
          GIT_COMMITTER_NAME: sccdeveloper
          GIT_COMMITTER_EMAIL: scccomm@in.ibm.com
        run: |
          pip install --user bumpversion
          npm install @semantic-release/changelog
          npm install @semantic-release/exec
          npm install @semantic-release/git
          npm install @semantic-release/github
          rm -rf package.json
          rm -rf package-lock.json
          npx semantic-release

  publish:
    runs-on: ubuntu-latest
    env:
      MVN_ARGS: "--settings build/.travis.settings.xml"
    if: "github.event_name == 'push' && contains(github.ref, 'refs/tags')"
    steps:
      - name: setting up extensions
        uses: actions/checkout@v1

      - uses: actions/setup-java@v2
        with:
          distribution: 'adopt'
          java-version: '8'

      - name: setting up gnupg for mvn
        env:
          GPG_SECRET_KEYS: ${{ secrets.GPG_SECRET_KEYS }}
          GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
          GPG_OWNERTRUST: ${{ secrets.GPG_OWNERTRUST }}
          GPG_EXECUTABLE: ${{ secrets.GPG_EXECUTABLE }}
        run: |
          export GPG_TTY=$(tty)
          echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --batch --passphrase $GPG_PASSPHRASE --import
          echo $GPG_OWNERTRUST | base64 --decode | $GPG_EXECUTABLE --passphrase $GPG_PASSPHRASE --import-ownertrust

      - name: publishing to maven central
        env:
          OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
          GPG_SECRET_KEYS: ${{ secrets.GPG_SECRET_KEYS }}
          GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
          GPG_OWNERTRUST: ${{ secrets.GPG_OWNERTRUST }}
          GPG_EXECUTABLE: ${{ secrets.GPG_EXECUTABLE }}
        run: |
          export GPG_TTY=$(tty)
          mvn deploy $MVN_ARGS -DskipITs -P central

  documentation:
    runs-on: ubuntu-latest
    if: "github.event_name == 'push' && contains(github.ref, 'refs/tags')"
    steps:
      - name: setting up extensions
        uses: actions/checkout@v1

      - uses: actions/setup-java@v2
        with:
          distribution: 'adopt'
          java-version: '8'

      - name: generating javadocs
        run: build/prepareJavadoc.sh
      
      - name: deploying javadocs to gh-pages
        run: |
          git config --global user.email "scccomm@in.ibm.com"
          git config --global user.name "sccdeveloper"
          git config --global user.password "${{ secrets.ADMIN_TOKEN }}"
          cd v4/dist
          git init
          git add .
          git commit -m "Deploy to GitHub pages"
          git branch -m gh-pages
          git remote add origin https://github.com/IBM/scc-java-sdk
          git push -f origin gh-pages
        env:
          GITHUB_TOKEN: ${{ secrets.ADMIN_TOKEN }}
          GIT_AUTHOR_NAME: sccdeveloper
          GIT_AUTHOR_EMAIL: scccomm@in.ibm.com
          GIT_COMMITTER_NAME: sccdeveloper
          GIT_COMMITTER_EMAIL: scccomm@in.ibm.com