92 lines
2.9 KiB
YAML
92 lines
2.9 KiB
YAML
|
on:
|
||
|
push:
|
||
|
tags:
|
||
|
- '[0-9]+\.[0-9]+\.[0-9]+-c\.[0-9]+'
|
||
|
- '[0-9]+\.[0-9]+\.[0-9]+-a\.[0-9]+'
|
||
|
- '[0-9]+\.[0-9]+\.[0-9]'
|
||
|
|
||
|
jobs:
|
||
|
lint-and-typing:
|
||
|
runs-on: docker
|
||
|
container: nikolaik/python-nodejs:python3.11-nodejs21
|
||
|
steps:
|
||
|
- name: Checkout source code
|
||
|
uses: https://code.forgejo.org/actions/checkout@v3
|
||
|
- name: Install packages
|
||
|
run: |
|
||
|
pip install -e .[lint,typing] -q --disable-pip-version-check -q
|
||
|
python -m pip list --format=columns --disable-pip-version-check
|
||
|
- name: Run pylint
|
||
|
run: |
|
||
|
pylint --version
|
||
|
pylint **/*.py --exit-zero --rc-file pyproject.toml
|
||
|
- name: Run mypy
|
||
|
run: |
|
||
|
mypy --version
|
||
|
mypy .
|
||
|
|
||
|
build-artifacts:
|
||
|
needs: ["lint-and-typing"]
|
||
|
runs-on: docker
|
||
|
container: nikolaik/python-nodejs:python3.11-nodejs21
|
||
|
steps:
|
||
|
- name: Checkout source code
|
||
|
uses: https://code.forgejo.org/actions/checkout@v3
|
||
|
- name: Install packages
|
||
|
run: pip install build
|
||
|
- name: Build package
|
||
|
run: python -m build
|
||
|
- name: Save build artifacts
|
||
|
uses: https://code.forgejo.org/actions/upload-artifact@v3
|
||
|
with:
|
||
|
name: packages
|
||
|
path: dist/*
|
||
|
|
||
|
publish-artifacts:
|
||
|
needs: ["build-artifacts"]
|
||
|
runs-on: docker
|
||
|
container: nikolaik/python-nodejs:python3.11-nodejs21
|
||
|
steps:
|
||
|
- name: Downloading static site artifacts
|
||
|
uses: actions/download-artifact@v3
|
||
|
with:
|
||
|
name: packages
|
||
|
path: dist
|
||
|
- name: Install Dependencies
|
||
|
run: pip install twine
|
||
|
- name: Upload package to registry
|
||
|
run: python -m twine upload --repository-url ${{ secrets.REPOSITORY_URL }} -u ${{ secrets.TWINE_DEPLOY_USER }} -p ${{ secrets.TWINE_DEPLOY_PASSWORD }} dist/*
|
||
|
|
||
|
build-and-push-container:
|
||
|
needs: [ "publish-artifacts" ]
|
||
|
runs-on: dind
|
||
|
steps:
|
||
|
- name: Set up Docker Buildx
|
||
|
uses: docker/setup-buildx-action@v3
|
||
|
- name: Log into Docker Package Registry
|
||
|
uses: docker/login-action@v3
|
||
|
with:
|
||
|
registry: forgejo.neshweb.net
|
||
|
username: ${{ secrets.FORGEJO_USERNAME }}
|
||
|
password: ${{ secrets.FORGEJO_TOKEN }}
|
||
|
- name: Build and push to Docker Package Registry
|
||
|
uses: docker/build-push-action@v5
|
||
|
with:
|
||
|
build-args: |
|
||
|
PACKAGE_VERSION=${{ github.ref_name }}
|
||
|
push: true
|
||
|
tags: forgejo.neshweb.net/firq/dockge-cli:${{ github.ref_name }}
|
||
|
|
||
|
release:
|
||
|
needs: [ build-and-push-container, publish-artifacts ]
|
||
|
if: success()
|
||
|
runs-on: docker
|
||
|
steps:
|
||
|
- name: Release New Version
|
||
|
uses: actions/forgejo-release@v2
|
||
|
with:
|
||
|
direction: upload
|
||
|
url: https://forgejo.neshweb.net
|
||
|
release-dir: release
|
||
|
token: ${{ secrets.FORGEJO_TOKEN }}
|
||
|
tag: ${{ github.ref_name }}
|