diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..a636f5c --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,128 @@ +name: CI/CD Pipeline + +on: + push: + branches: + - main + workflow_dispatch: # For manual triggers + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Maven + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + - name: Compile Project + run: mvn compile + + test: + name: Test + runs-on: ubuntu-latest + services: + docker: + image: docker:20.10-dind + options: --privileged + env: + DOCKER_HOST: tcp://localhost:2375 + DOCKER_TLS_CERTDIR: "" + DOCKER_DRIVER: overlay2 + steps: + - uses: actions/checkout@v3 + - name: Set up Maven + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + - name: Run Tests + run: | + mvn clean test + mkdir -p artifacts/junit + cp target/surefire-reports/*.xml artifacts/junit/ + mkdir -p artifacts/coverage + cp target/jacoco/coverage-reports/*.xml artifacts/coverage/ + - name: Upload Test Results + uses: actions/upload-artifact@v3 + with: + name: junit-reports + path: artifacts/junit + - name: Upload Coverage Reports + uses: actions/upload-artifact@v3 + with: + name: coverage-reports + path: artifacts/coverage + + package: + name: Package + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Maven + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + - name: Package Project + run: mvn clean package + - name: Upload JAR + uses: actions/upload-artifact@v3 + with: + name: packaged-jar + path: target/idatt2002demo-1.0-SNAPSHOT-jar-with-dependencies.jar + + generate-pdf: + name: Generate PDF + runs-on: ubuntu-20.04 + if: github.event_name == 'workflow_dispatch' + steps: + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install -y wget fontconfig libfreetype6 libjpeg-turbo8 libpng16-16 libx11-6 libxcb1 libxext6 libxrender1 xfonts-75dpi xfonts-base + sudo apt-get install -y nodejs npm git + wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb + sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb + npm install -g github-wikito-converter + - name: Clone Wiki Repository + run: | + git clone https://:@github.com//.wiki.git + gwtc .wiki + - name: Convert to PDF + run: wkhtmltopdf documentation.html wiki.pdf + - name: Upload PDF + uses: actions/upload-artifact@v3 + with: + name: wiki-pdf + path: wiki.pdf + + deploy-pages: + name: Deploy Pages + runs-on: ubuntu-latest + if: github.event_name == 'workflow_dispatch' + steps: + - uses: actions/checkout@v3 + - name: Set up Maven + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + - name: Generate Javadoc and Pages + run: | + mvn clean package + mvn javadoc:javadoc + mkdir -p public/apidocs + cp -r target/site/apidocs/* public/apidocs/ + cp -r target/jacoco/* public/ + cp -r page/index.html public/ + - name: Deploy to GitHub Pages + uses: actions/upload-pages-artifact@v1 + with: + path: public + - name: Publish Pages + uses: actions/deploy-pages@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }}