name: Release Python package and docs pages on: push: tags: - 'v*.*.*' jobs: release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Get previous tag id: previousTag run: | name=$(git --no-pager tag --sort=creatordate --merged ${{ github.ref_name }} | tail -2 | head -1) echo "previousTag: $name" echo "previousTag=$name" >> $GITHUB_ENV - name: Update changelog id: changelog uses: requarks/changelog-action@v1 with: token: ${{ github.token }} fromTag: ${{ github.ref_name }} toTag: ${{ env.previousTag }} writeToFile: false - name: Create release uses: ncipollo/release-action@v1.12.0 with: allowUpdates: true draft: false makeLatest: true name: ${{ github.ref_name }} body: ${{ steps.changelog.outputs.changes }} token: ${{ secrets.GITHUB_TOKEN }} docs: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install packages run: sudo apt-get install libpoppler-cpp-dev libzbar0 tesseract-ocr yara - name: Set up Python 3.12 uses: actions/setup-python@v5 with: python-version: 3.12 - name: Install poetry run: python -m pip install poetry - name: Build docs run: make generate_docs - name: Setup pages uses: actions/configure-pages@v5 - name: Upload documentation artifact uses: actions/upload-pages-artifact@v3 with: path: site/ deploy-gh-pages: runs-on: ubuntu-latest needs: docs permissions: pages: write id-token: write environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install packages run: sudo apt-get install libpoppler-cpp-dev libzbar0 tesseract-ocr yara - name: Set up Python 3.12 uses: actions/setup-python@v5 with: python-version: 3.12 - name: Install poetry run: python -m pip install poetry - name: Install dependencies run: poetry install --with unstable - name: Build package run: poetry build - name: Upload package artifact uses: actions/upload-artifact@v4 with: name: python-package-distributions path: dist/ publish-to-pypi: runs-on: ubuntu-latest needs: build permissions: id-token: write steps: - name: Download dist files uses: actions/download-artifact@v4 with: name: python-package-distributions path: dist/ - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: skip-existing: true