Skip to content

feat(analyze): add CLI options for pythonpath, variable, and `var… #1010

feat(analyze): add CLI options for pythonpath, variable, and `var…

feat(analyze): add CLI options for pythonpath, variable, and `var… #1010

name: build test package and publish
on:
push:
branches:
- main
tags:
- "v*"
paths-ignore:
- ".devcontainer/**"
- ".github/**"
- "!.github/workflows/**"
- "docs/**"
pull_request:
branches:
- main
workflow_dispatch:
env:
PYTHONUNBUFFERED: "1"
PIP_DISABLE_PIP_VERSION_CHECK: "1"
jobs:
test:
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
robot-version: ["rf41", "rf50", "rf60", "rf61", "rf70", "rf71"]
exclude:
- os: macos-latest
python-version: "3.8"
- os: macos-latest
python-version: "3.9"
steps:
- uses: actions/checkout@v4
- name: Setup python ${{ matrix.python-version }} environment
id: setup-python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Ensure latest hatch is installed
run: pipx install hatch
- name: Test Python Packages
uses: nick-fields/retry@v3
with:
max_attempts: 3
timeout_minutes: 30
command: hatch run test.${{ matrix.robot-version }}:test "--junitxml=test-results/os-${{ matrix.os }}-py-${{ matrix.python-version }}-${{ matrix.robot-version }}/test-results.xml"
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-os-${{ matrix.os }}-py-${{ matrix.python-version }}-${{ matrix.robot-version }}
path: test-results
publish-test-results:
needs: test
runs-on: ubuntu-latest
permissions:
checks: write
# only needed unless run with comment_mode: off
pull-requests: write
if: always()
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Publish Unit Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
junit_files: ./**/test-results.xml
code-quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache-dependency-path: package-lock.json
- name: install node modules
run: npm install --also=dev
- name: setup python environment
id: setup-python
uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: Ensure latest hatch is installed
run: pipx install hatch
- run: hatch run lint:style
if: always()
- run: hatch run lint:typing
if: always()
package:
needs: [code-quality, test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: git describe --tag
- run: git describe --tag --long --first-parent --match "v[0-9]*"
- name: setup python environment
id: setup-python
uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: Ensure latest hatch is installed
run: pipx install hatch
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache-dependency-path: package-lock.json
- name: install node modules
run: npm install --also=dev
- name: update versions from git
if: ${{ !startsWith( github.ref, 'refs/tags/v') }}
run: hatch run build:update-git-versions
- name: update doc links
if: ${{ startsWith( github.ref, 'refs/tags/v') }}
run: hatch run build:update-doc-links
- name: package
run: hatch run build:package
- name: Upload VSCode package
uses: actions/upload-artifact@v4
with:
name: vscode-package
path: dist/robotcode*.vsix
- name: Upload python package
uses: actions/upload-artifact@v4
with:
name: python-package
path: dist/*.tar.gz
- name: Upload python wheel package
uses: actions/upload-artifact@v4
with:
name: wheel-package
path: dist/*.whl
publish:
runs-on: ubuntu-latest
needs: package
if: success() && startsWith( github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: git describe --tag
- name: setup python environment
id: setup-python
uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: Ensure latest hatch is installed
run: pipx install hatch
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: "18"
cache: "npm"
cache-dependency-path: package-lock.json
- name: install node modules
run: npm install --also=dev
- uses: actions/download-artifact@v4
with:
name: vscode-package
path: dist
- uses: actions/download-artifact@v4
with:
name: python-package
path: dist
- uses: actions/download-artifact@v4
with:
name: wheel-package
path: dist
- name: get release informations
id: get_release_informations
run: |
hatch -q run build:extract-release-notes > ./auto_relnotes.md
echo "is_prelease=$(hatch -q run build:is-prerelease)" >> $GITHUB_OUTPUT
- name: create github release
uses: ncipollo/release-action@v1
with:
artifacts: "dist/*"
prerelease: ${{ steps.get_release_informations.outputs.is_prelease }}
bodyFile: ./auto_relnotes.md
token: ${{ secrets.GITHUB_TOKEN }}
- name: publish vsix and python packages
run: hatch -q run build:publish
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}
OVSX_PAT: ${{ secrets.OVSX_PAT }}
PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }}
PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}