feat(analyze): analyze code
now return a flag that indicates if err…
#1018
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: 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 }} |