Skip to content

Upgrading CI to Node 18, Python 3.11 #235

Upgrading CI to Node 18, Python 3.11

Upgrading CI to Node 18, Python 3.11 #235

Workflow file for this run

name: Release
on:
release:
types: [published]
push:
branches: [master,develop]
jobs:
jest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '18'
- name: Install modules
run: npm ci
- name: Run tests
run: npm run test
- name: Submit to Codecov
uses: codecov/codecov-action@v1
tox:
strategy:
fail-fast: false
matrix:
include:
- name: "Test: Python 3.7"
python: "3.7"
tox: py37
coverage: true
# - name: "Test: Python 3.8"
# python: "3.8"
# tox: py38
# - name: "Test: Python 3.9"
# python: "3.9"
# tox: py39
- name: "Lint: check-manifest"
python: "3.9"
tox: check-manifest
- name: "Lint: flake8"
python: "3.9"
tox: flake8
name: ${{ matrix.name }}
runs-on: ubuntu-20.04
container: ghcr.io/mopidy/ci:7
steps:
- name: Checkout code
uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Fix home dir permissions to enable pip caching
run: chown -R root /github/home
- name: Cache pip
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-${{ matrix.python }}-${{ matrix.tox }}-pip-${{ hashFiles('setup.cfg') }}-${{ hashFiles('tox.ini') }}
restore-keys: ${{ runner.os }}-${{ matrix.python }}-${{ matrix.tox }}-pip-
- run: python -m pip install pygobject tox
- run: python -m tox -e ${{ matrix.tox }}
if: ${{ ! matrix.coverage }}
- run: python -m tox -e ${{ matrix.tox }} -- --cov-report=xml
if: ${{ matrix.coverage }}
- uses: codecov/codecov-action@v1
if: ${{ matrix.coverage }}
deploy_pypi:
name: 'Publish: PyPi'
runs-on: ubuntu-latest
needs: [jest, tox]
if: github.event_name == 'release'
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: '18'
- name: Install JS dependencies
run: npm install
- name: Build JS
run: npm run prod
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.11'
- name: "Install Python dependencies"
run: python3 -m pip install build
- name: "Build Python package"
run: python3 -m build
- name: Publish to Pypi
uses: pypa/[email protected]
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
deploy_image:
name: 'Publish: DockerHub'
runs-on: ubuntu-latest
needs: [jest, tox]
if: github.event_name == 'release' || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master'
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Extract branch name
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: extract_branch
- name: Generating release tags and labels
if: github.event_name == 'release'
id: release_meta
uses: docker/metadata-action@v4
with:
images: jaedb/iris
tags: |
latest
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- name: Generating edge branch labels
if: github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master'
id: edge_meta
uses: docker/metadata-action@v4
with:
images: jaedb/iris
tags: ${{ steps.extract_branch.outputs.branch }}
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
push: true
tags: ${{ steps.release_meta.outputs.tags || steps.edge_meta.outputs.tags }}
labels: ${{ steps.release_meta.outputs.labels || steps.edge_meta.outputs.tags }}