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: '14' - 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: '12' - 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.7' - 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: 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 }}