Skip to content

Publish compute pypi package and create a release #11

Publish compute pypi package and create a release

Publish compute pypi package and create a release #11

name: Publish compute pypi package and create a release
on:
workflow_dispatch:
inputs:
bump:
description: "Bump the version of the compute"
type: choice
required: true
default: "patch"
options:
- "patch"
- "minor"
- "major"
- "prepatch"
- "preminor"
- "premajor"
env:
PRERELEASE: ${{ contains(inputs.bump, 'pre') }}
jobs:
python_project:
name: Build ecoindex compute python project
runs-on: ubuntu-latest
outputs:
wheel: ${{ steps.wheel.outputs.wheel }}
compute_version: ${{ steps.version.outputs.compute_version }}
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
- name: Install poetry
uses: abatilo/actions-poetry@v2
- name: Install poetry build project
run: pip install poetry-multiproject-plugin
- name: Bump version
run: task compute:bump -- ${{ github.event.inputs.bump }}
- name: Build
run: task compute:poetry:build
- name: Upload version to artifacts
uses: actions/upload-artifact@v4
with:
name: version
path: components/ecoindex/compute/VERSION
- name: Upload pyproject.toml to artifacts
uses: actions/upload-artifact@v4
with:
name: pyproject
path: projects/ecoindex_compute/pyproject.toml
- name: Upload dist folder
uses: actions/upload-artifact@v4
with:
name: dist
path: projects/ecoindex_compute/dist
- name: Output version
id: version
run: echo "compute_version=$(task compute:poetry:version-short)" >> $GITHUB_OUTPUT
- name: Output wheel
id: wheel
run: echo "wheel=ecoindex_compute-${{ steps.version.outputs.compute_version }}-py3-none-any.whl" >> $GITHUB_OUTPUT
- name: Output summary
run: |
echo "Compute version ${{ steps.version.outputs.compute_version }}" >> $GITHUB_STEP_SUMMARY
echo "Wheel ${{ steps.wheel.outputs.wheel }}" >> $GITHUB_STEP_SUMMARY
pypi_package:
name: Build and push compute pypi package
runs-on: ubuntu-latest
needs: python_project
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
- name: Download dist from artifacts
uses: actions/download-artifact@v4
with:
name: dist
path: projects/ecoindex_compute/dist
- name: Download pyproject.toml from artifacts
uses: actions/download-artifact@v4
with:
name: pyproject
path: /tmp
- name: Copy pyproject.toml to the project
run: cp /tmp/pyproject.toml projects/ecoindex_compute/pyproject.toml
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install poetry
uses: abatilo/actions-poetry@v2
- name: Login to Pypi
run: poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }}
# - name: Publish
# run: task compute:pypi:publish
release:
name: Create a release
runs-on: ubuntu-latest
needs: [python_project, pypi_package]
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Git pull
run: git pull
- name: Download pyproject.toml to a temporary file
uses: actions/download-artifact@v4
with:
name: pyproject
path: /tmp
- name: Download VERSION to a temporary file
uses: actions/download-artifact@v4
with:
name: version
path: /tmp
- name: Copy and overwrite existing files to the repo
run: |
cp /tmp/pyproject.toml projects/ecoindex_compute/pyproject.toml
cp /tmp/VERSION components/ecoindex/compute/VERSION
- uses: oprypin/find-latest-tag@v1
id: last_tag
with:
repository: ${{ github.repository }}
releases-only: false
regex: '^v[0-9]+\.[0-9]+\.[0-9]+@compute$'
- name: Commit files
uses: EndBug/add-and-commit@v9
with:
message: "chore(compute): Bump compute version to ${{ needs.python_project.outputs.compute_version }}"
tag: v${{ needs.python_project.outputs.compute_version }}@compute
tag_push: "--force"
push: true
- name: Update CHANGELOG
id: changelog
uses: requarks/changelog-action@v1
with:
token: ${{ github.token }}
fromTag: v${{ needs.python_project.outputs.compute_version }}@compute
toTag: ${{ steps.last_tag.outputs.tag }}
excludeScopes: api,cli,scraper
changelogFilePath: /tmp/changelog.md
- name: Update changelog content with dockerhub links
run: |
echo "${{ steps.changelog.outputs.changes }}" > /tmp/changelog.md
echo "" >> /tmp/changelog.md
echo "### Pypi package" >> /tmp/changelog.md
echo "" >> /tmp/changelog.md
echo "Pypi package have been built and pushed to Pypi: [ecoindex-compute:${{ needs.python_project.outputs.compute_version }}](https://pypi.org/project/ecoindex-compute/${{ needs.python_project.outputs.compute_version }}/)" >> /tmp/changelog.md
echo "{\"icon_emoji\": \":tada:\",\"attachments\":[{\"pretext\": \"### [Compute] Nouvelle release: v${{ needs.python_project.outputs.compute_version }}\",\"text\": \"$(cat /tmp/changelog.md)\"}]}" > mattermost.json
- name: Create Release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
prerelease: ${{ env.PRERELEASE }}
makeLatest: true
name: "Compute: v${{ needs.python_project.outputs.compute_version }}"
tag: v${{ needs.python_project.outputs.compute_version }}@compute
token: ${{ github.token }}
bodyFile: /tmp/changelog.md
- name: Notify to Mattermost
# if: ${{ !env.PRERELEASE }}
run: |
curl -X POST -H 'Content-Type: application/json' -d @mattermost.json ${{ secrets.MATTERMOST_RELEASE_URL }}