Publish compute pypi package and create a release #8
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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:\",\"props\":{\"card\":\"$(cat /tmp/changelog.md)\"},\"text\":\"### [Compute] Nouvelle release: v${{ needs.python_project.outputs.compute_version }}\"}" > 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_WEBHOOK_URL }} |