name: Publish changed packages on: push: branches: - master jobs: generate-matrix: name: Generate job matrices runs-on: ubuntu-20.04 outputs: packages-matrix: ${{ steps.packages-matrix.outputs.matrix }} steps: - name: Generate packages matrix id: packages-matrix uses: hellofresh/action-changed-files@v2 with: pattern: src/(?P[^/]+)/ publish-package: name: Publish package runs-on: ubuntu-20.04 needs: [generate-matrix] if: ${{ fromJson(needs.generate-matrix.outputs.packages-matrix).include[0] }} strategy: matrix: package: ${{ fromJson(needs.generate-matrix.outputs.packages-matrix).include[*].package }} fail-fast: false permissions: contents: read container: image: ghcr.io/yp-middle-python-24/ubuntu-ci:jammy-0.0.1 credentials: username: ${{ secrets.ROBOT_GITHUB_USER }} password: ${{ secrets.ROBOT_GITHUB_READ_PACKAGES_TOKEN }} steps: - name: Checkout repository uses: actions/checkout@v3 - name: Check version id: check_version working-directory: src/${{ matrix.package }} run: | local_version=$(poetry version --short) remote_version=$( \ curl https://pypi.ovsds.ru/pypi/${{ matrix.package }}/json \ --user "reader:${{ secrets.PYPI_READER_PASSWORD }}" | \ jq -r '.info.version' || \ echo "0.0.0" \ ) echo "local_version=$local_version" >> $GITHUB_OUTPUT echo "remote_version=$remote_version" >> $GITHUB_OUTPUT - name: Login to pypi if: steps.check_version.outputs.local_version != steps.check_version.outputs.remote_version working-directory: src/${{ matrix.package }} env: PYPI_READER_PASSWORD: ${{ secrets.PYPI_READER_PASSWORD }} run: | make ci-login-pypi - name: Init Package if: steps.check_version.outputs.local_version != steps.check_version.outputs.remote_version working-directory: src/${{ matrix.package }} run: | make init - name: Login to pypi-publish if: steps.check_version.outputs.local_version != steps.check_version.outputs.remote_version working-directory: src/${{ matrix.package }} env: PYPI_WRITER_PASSWORD: ${{ secrets.PYPI_WRITER_PASSWORD }} run: | make ci-login-pypi-publish - name: Build Package if: steps.check_version.outputs.local_version != steps.check_version.outputs.remote_version working-directory: src/${{ matrix.package }} run: | make ci-package-build - name: Publish Package if: steps.check_version.outputs.local_version != steps.check_version.outputs.remote_version working-directory: src/${{ matrix.package }} run: | make ci-package-publish