diff --git a/.github/workflows/release-python.yaml b/.github/workflows/release-python.yaml index c39902c..c3398ef 100644 --- a/.github/workflows/release-python.yaml +++ b/.github/workflows/release-python.yaml @@ -1,43 +1,54 @@ name: "[auto] release-python" on: - push: - tags: - - v* + workflow_run: + workflows: ["Release"] + types: + - completed env: PYTHON_VERSION: "3.10" jobs: - build: + release: name: Release new version to PyPI runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-tags: 'true' + - name: Check version format vMAJOR.MINOR.PATCH(-SUFFIX) run: | - if [[ ! "$GITHUB_REF_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?$ ]]; then - echo "Invalid version format. Expected vMAJOR.MINOR.PATCH(-SUFFIX)?, got ${GITHUB_REF_NAME}" + RELEASE_TAG=$(git tag --points-at HEAD) + echo "RELEASE_TAG: $RELEASE_TAG" + if [[ ! "$RELEASE_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?$ ]]; then + echo "Invalid version format. Expected vMAJOR.MINOR.PATCH(-SUFFIX)?, got ${RELEASE_TAG}" exit 1 fi + export VERSION="${RELEASE_TAG#v}" - - name: Checkout repository - uses: actions/checkout@v4 + - name: check release tag exported + run: | + echo $VERSION + exit 1 - - name: Install the project + - name: Release uses: dronetag/actions/release-python@main with: pypi_name: dronetag pypi_host: ${{ secrets.PRIV_PIP_HOST }} pypi_user: ${{ secrets.PRIV_PIP_USER }} pypi_pass: ${{ secrets.PRIV_PIP_PASSWORD }} - version: "${GITHUB_REF_NAME#v}" + version: "${VERSION}" - name: Commit version on release branch run: | - if [[ $(git rev-parse heads/main) = $(git rev-parse ${GITHUB_REF}) ]]; then - echo "We are at the top of main branch so we can commit the version bump" + if [[ $(git rev-parse heads/main) = $(git rev-parse HEAD) ]]; then git checkout main + sed -i "s/version = .*/version = \"${VERSION}\"/g" pyproject.toml git add pyproject.toml - git commit -m "Release ${GITHUB_REF_NAME#v} [skip ci]" + git commit -m "Release $VERSION [skip ci]" git push fi diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 58d6952..397378c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: "RELEASE" +name: "Release" on: workflow_dispatch: @@ -16,8 +16,9 @@ jobs: uses: dronetag/actions/get-next-version@main id: get-next-version - - name: Create the tag + - name: Create the tag (if it does not exist yet) run: | + git show-ref --tags --verify --quiet "refs/tags/v${{ steps.get-next-version.outputs.version }}" && exit 0 git config --local user.email "" && git config --local user.name "GitHub Action" git tag v${{ steps.get-next-version.outputs.version }} git push origin v${{ steps.get-next-version.outputs.version }}