diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index b133ac8..f7dc11d 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -1,6 +1,7 @@ name: Build, publish & deploy on: + workflow_dispatch: push: branches: - master diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 907e03c..bf790b9 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,6 +1,7 @@ name: Test on: + workflow_dispatch: workflow_call: pull_request: branches: [ "master" ] diff --git a/.github/workflows/update-dependencies.yaml b/.github/workflows/update-dependencies.yaml new file mode 100644 index 0000000..27bb996 --- /dev/null +++ b/.github/workflows/update-dependencies.yaml @@ -0,0 +1,39 @@ +name: Update dependencies + +on: + workflow_dispatch: + schedule: + - cron: '0 18 * * TUE' + +permissions: + pull-requests: write + contents: write + +jobs: + update: + name: Update dependencies + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: master + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + cache: pip + - name: Update dependencies + run: | + pip install pip-tools invoke + invoke update-dependencies --no-sync + - name: Create Pull Request + uses: peter-evans/create-pull-request@v4 + id: create-pull-request + with: + token: ${{ secrets.PERSONAL_TOKEN_PR }} + commit-message: Update dependencies + base: master + branch: update-dependencies + title: Update dependencies + delete-branch: true diff --git a/tasks.py b/tasks.py index 5009de3..0aac376 100644 --- a/tasks.py +++ b/tasks.py @@ -20,8 +20,17 @@ COMPOSE_BUILD_ENV = {"COMPOSE_FILE": COMPOSE_BUILD_FILE} @task -def update_dependencies(ctx: Context) -> None: - common_args = "-q --allow-unsafe --resolver=backtracking --upgrade" +def update_dependencies(ctx: Context, *, sync: bool = True) -> None: + return compile_dependencies(ctx, update=True, sync=sync) + + +@task +def compile_dependencies( + ctx: Context, *, update: bool = False, sync: bool = False +) -> None: + common_args = "-q --allow-unsafe --resolver=backtracking" + if update: + common_args += " --upgrade" with ctx.cd(BASE_DIR): ctx.run( f"pip-compile {common_args} --generate-hashes requirements.in", @@ -38,6 +47,13 @@ def update_dependencies(ctx: Context) -> None: pty=True, echo=True, ) + if sync: + sync_dependencies(ctx) + + +@task +def sync_dependencies(ctx: Context) -> None: + with ctx.cd(BASE_DIR): ctx.run("pip-sync requirements.txt requirements-dev.txt", pty=True, echo=True)