on: push: tags: - '[0-9]+\.[0-9]+\.[0-9]+-c\.[0-9]+' - '[0-9]+\.[0-9]+\.[0-9]+-a\.[0-9]+' - '[0-9]+\.[0-9]+\.[0-9]' jobs: lint-and-typing: runs-on: docker container: nikolaik/python-nodejs:python3.11-nodejs21 steps: - name: Checkout source code uses: https://code.forgejo.org/actions/checkout@v3 - name: Install packages run: | pip install -e .[lint,typing] -q --disable-pip-version-check -q python -m pip list --format=columns --disable-pip-version-check - name: Run pylint run: | pylint --version pylint **/*.py --exit-zero --rc-file pyproject.toml - name: Run mypy run: | mypy --version mypy . build-artifacts: needs: ["lint-and-typing"] runs-on: docker container: nikolaik/python-nodejs:python3.11-nodejs21 steps: - name: Checkout source code uses: https://code.forgejo.org/actions/checkout@v3 - name: Install packages run: pip install build - name: Build package run: python -m build - name: Save build artifacts uses: https://code.forgejo.org/actions/upload-artifact@v3 with: name: packages path: dist/* publish-artifacts: needs: ["build-artifacts"] runs-on: docker container: nikolaik/python-nodejs:python3.11-nodejs21 steps: - name: Downloading static site artifacts uses: actions/download-artifact@v3 with: name: packages path: dist - name: Install Dependencies run: pip install twine - name: Upload package to registry run: python -m twine upload --repository-url ${{ secrets.REPOSITORY_URL }} -u ${{ secrets.TWINE_DEPLOY_USER }} -p ${{ secrets.TWINE_DEPLOY_PASSWORD }} dist/* build-and-push-container: needs: [ "publish-artifacts" ] runs-on: dind steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log into Docker Package Registry uses: docker/login-action@v3 with: registry: forgejo.neshweb.net username: ${{ secrets.FORGEJO_USERNAME }} password: ${{ secrets.FORGEJO_TOKEN }} - name: Build and push to Docker Package Registry uses: docker/build-push-action@v5 with: build-args: | PACKAGE_VERSION=${{ github.ref_name }} push: true tags: forgejo.neshweb.net/firq/dockge-cli:${{ github.ref_name }} release: needs: [ build-and-push-container, publish-artifacts ] if: success() runs-on: docker steps: - name: Release New Version uses: actions/forgejo-release@v1 with: direction: upload url: https://forgejo.neshweb.net release-dir: release token: ${{ secrets.FORGEJO_TOKEN }} tag: ${{ github.ref_name }}