diff --git a/.github/workflows/python-docker-publish.yml b/.github/workflows/python-docker-publish.yml index d318fd0..ddfa3e6 100644 --- a/.github/workflows/python-docker-publish.yml +++ b/.github/workflows/python-docker-publish.yml @@ -4,15 +4,50 @@ on: push: tags: - "v*" - workflow_dispatch: - inputs: - version: - description: 'Version' - required: true - default: '0.0.0' jobs: + python-deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.4 + - name: Set up Python + uses: actions/setup-python@v2.2.2 + with: + python-version: "3.x" + - name: Version from input + if: github.event_name != 'push' + run: | + echo "version=${{ github.event.inputs.version }}" >> $GITHUB_ENV + - name: Version from pushed tag + if: github.event_name == 'push' + run: | + # from refs/tags/v1.2.3 get 1.2.3 + echo "version=$(echo $GITHUB_REF | sed 's#.*/v##')" >> $GITHUB_ENV + - name: Autobump version + run: | + PLACEHOLDER="__version__ = 'develop'" + REPLACEMENT="__version__ = '${{ env.version }}'" + VERSION_FILE="weconnect_mqtt/__version.py" + # ensure the placeholder is there. If grep doesn't find the placeholder + # it exits with exit code 1 and github actions aborts the build. + grep "$PLACEHOLDER" "$VERSION_FILE" + sed -i "s/$PLACEHOLDER/$REPLACEMENT/g" "$VERSION_FILE" + grep "$REPLACEMENT" "$VERSION_FILE" + shell: bash + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine + - name: Build and publish + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + python setup.py sdist bdist_wheel + twine upload dist/* + docker-deploy: + needs: [python-deploy] runs-on: ubuntu-latest steps: - name: Checkout @@ -37,13 +72,11 @@ jobs: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-weconnect-mqtt-${{ github.sha }} - name: Login to DockerHub - #if: (github.event_name == 'push' && (contains(github.ref, '/heads/main') || contains(github.ref, '/tags/v'))) uses: docker/login-action@v1.9.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry - #if: (github.event_name == 'push' && (contains(github.ref, '/heads/main') || contains(github.ref, '/tags/v'))) uses: docker/login-action@v1.9.0 with: registry: ghcr.io @@ -54,8 +87,7 @@ jobs: uses: docker/build-push-action@v2.5.0 with: context: docker - push: true - #push: (github.event_name == 'push' && (contains(github.ref, '/heads/main') || contains(github.ref, '/tags/v'))) + push: ${{ github.event_name != 'pull_request' }} platforms: linux/amd64,linux/arm/v7,linux/arm64 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }}