Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Packaging: modernize plugin package and release workflow #115

Merged
merged 5 commits into from
Nov 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
changelog:
exclude:
authors:
- dependabot
- pre-commit-ci
categories:
- title: Bugs fixes 🐛
labels:
- bug
- title: Features and enhancements 🎉
labels:
- enhancement
- UI
- title: Tooling 🔧
labels:
- ci-cd
- title: Documentation 📖
labels:
- documentation
- title: Other Changes
labels:
- "*"
2 changes: 1 addition & 1 deletion .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ jobs:
name: ${{ env.PROJECT_FOLDER }}-latest
path: docs/_build/html/
# run_id: ${{ github.event.workflow_run.id }}
workflow: packager.yml
workflow: package_and_release.yml

- name: Setup Pages
uses: actions/configure-pages@v5
Expand Down
168 changes: 168 additions & 0 deletions .github/workflows/package_and_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
name: "📦 Packaging & 🚀 Release"

env:
PROJECT_FOLDER: "menu_from_project"
PYTHON_VERSION: 3.9

on:
push:
branches:
- master
tags:
- "*"

pull_request:
branches:
- main
paths:
- .github/workflows/package_and_release.yml
- requirements/packaging.txt
- menu_from_project/**/*

# Allow one concurrent deployment per branch/pr
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
translation:
name: "💬 i18n compilation"
runs-on: ubuntu-latest

steps:
- name: Get source code
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: "pip"

- name: Install system requirements
run: |
sudo apt update
sudo apt install qt5-qmake qttools5-dev-tools
python3 -m pip install -U pyqt5-tools

- name: Update translations
run: pylupdate5 -noobsolete -verbose ${{ env.PROJECT_FOLDER }}/resources/i18n/plugin_translation.pro

- name: Compile translations
run: lrelease ${{ env.PROJECT_FOLDER }}/resources/i18n/*.ts

- uses: actions/upload-artifact@v4
with:
name: translations-build
path: ${{ env.PROJECT_FOLDER }}/**/*.qm
if-no-files-found: error

packaging:
name: "📦 Packaging plugin"
runs-on: ubuntu-latest
needs:
- translation

if: ${{ !startsWith(github.ref, 'refs/tags/') }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "${{ env.PYTHON_VERSION }}"
cache: "pip"
cache-dependency-path: "requirements/packaging.txt"

- name: Install project requirements
run: |
python -m pip install -U pip setuptools wheel
python -m pip install -U -r requirements/packaging.txt

- name: Download translations
uses: actions/download-artifact@v4
with:
name: translations-build
path: ${{ env.PROJECT_FOLDER }}

- name: Amend gitignore to include compiled translations and add it to tracked files
run: |
# include compiled translations
sed -i "s|^*.qm.*| |" .gitignore

# git add full project
git add ${{ env.PROJECT_FOLDER }}/

- name: Package the latest version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
qgis-plugin-ci package latest \
--allow-uncommitted-changes \
--plugin-repo-url $(gh api "repos/$GITHUB_REPOSITORY/pages" --jq '.html_url')

- name:
uses: actions/upload-artifact@v4
with:
name: ${{ env.PROJECT_FOLDER }}-latest
path: |
plugins.xml
${{ env.PROJECT_FOLDER }}.*.zip
if-no-files-found: error

# -- ONLY TAGS ----------------------------------------------------------------------
release:
name: "🚀 Release on tag"
runs-on: ubuntu-latest
needs:
- translation

if: startsWith(github.ref, 'refs/tags/')

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: "pip"
cache-dependency-path: "requirements/packaging.txt"

- name: Install project requirements
run: |
python -m pip install -U pip setuptools wheel
python -m pip install -U -r requirements/packaging.txt

- name: Download translations
uses: actions/download-artifact@v4
with:
name: translations-build
path: ${{ env.PROJECT_FOLDER }}

- name: Amend gitignore to include compiled translations and add it to tracked files
run: |
# include compiled translations
sed -i "s|^*.qm.*| |" .gitignore

# git add full project
git add ${{ env.PROJECT_FOLDER }}/

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
fail_on_unmatched_files: true
generate_release_notes: true

- name: Deploy plugin
run: >-
qgis-plugin-ci
release ${GITHUB_REF/refs\/tags\//}
--allow-uncommitted-changes
--create-plugin-repo
--github-token ${{ secrets.GITHUB_TOKEN }}
--osgeo-username ${{ secrets.OSGEO_USER }}
--osgeo-password ${{ secrets.OSGEO_PASSWORD }}
44 changes: 0 additions & 44 deletions .github/workflows/packager.yml

This file was deleted.

75 changes: 0 additions & 75 deletions .github/workflows/release.yml

This file was deleted.

File renamed without changes.