name: Maven CI/CD on: push: branches: [master] tags: [v*] workflow_dispatch: jobs: build_and_publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up JDK 11 uses: actions/setup-java@v2 with: java-version: "11" distribution: "temurin" cache: maven - name: Install test dependencies run: sudo apt-get update && sudo apt-get -y -q --no-install-recommends install ffmpeg mediainfo tesseract-ocr tesseract-ocr-deu - name: Build with Maven run: mvn --batch-mode -Pprod clean install - name: Upload war artifact uses: actions/upload-artifact@v2 with: name: docs-web-ci.war path: docs-web/target/docs*.war build_docker_image: name: Publish to Docker Hub runs-on: ubuntu-latest needs: [build_and_publish] steps: - name: Checkout uses: actions/checkout@v2 - name: Download war artifact uses: actions/download-artifact@v2 with: name: docs-web-ci.war path: docs-web/target - name: Setup up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to DockerHub if: github.event_name != 'pull_request' uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Populate Docker metadata id: metadata uses: docker/metadata-action@v3 with: images: sismics/docs flavor: | latest=false tags: | type=ref,event=tag type=raw,value=latest,enable=${{ github.ref_type != 'tag' }} labels: | org.opencontainers.image.title = Teedy org.opencontainers.image.description = Teedy is an open source, lightweight document management system for individuals and businesses. org.opencontainers.image.created = ${{ github.event_created_at }} org.opencontainers.image.author = Sismics org.opencontainers.image.url = https://teedy.io/ org.opencontainers.image.vendor = Sismics org.opencontainers.image.license = GPLv2 org.opencontainers.image.version = ${{ github.event_head_commit.id }} - name: Build and push id: docker_build uses: docker/build-push-action@v2 with: context: . push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.metadata.outputs.tags }} labels: ${{ steps.metadata.outputs.labels }}