226 lines
6.2 KiB
YAML
226 lines
6.2 KiB
YAML
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/gh-action-pypi-publish@v1.4.1
|
|
with:
|
|
user: __token__
|
|
password: ${{ secrets.PYPI_TOKEN }}
|
|
|
|
- name: Image digest
|
|
run: echo ${{ steps.docker_build.outputs.digest }}
|
|
|
|
deploy_image_debian:
|
|
name: 'Publish: Debian to 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
|
|
platforms: linux/amd64,linux/arm64
|
|
tags: ${{ steps.release_meta.outputs.tags || steps.edge_meta.outputs.tags }}
|
|
labels: ${{ steps.release_meta.outputs.labels || steps.edge_meta.outputs.tags }}
|
|
|
|
deploy_image_alpine:
|
|
name: 'Publish: Alpine to 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-alpine
|
|
type=semver,pattern={{version}}-alpine
|
|
type=semver,pattern={{major}}.{{minor}}-alpine
|
|
|
|
- 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
|
|
platforms: linux/amd64,linux/arm64
|
|
file: "{{context}}/Dockerfile.alpine"
|
|
tags: ${{ steps.release_meta.outputs.tags || steps.edge_meta.outputs.tags }}
|
|
labels: ${{ steps.release_meta.outputs.labels || steps.edge_meta.outputs.tags }}
|