Commit graph

78 commits

Author SHA1 Message Date
paul-gauthier
6e6ea5da51
Update ubuntu-tests.yml 2024-08-05 21:14:41 -03:00
Paul Gauthier
f8e76bcb88 Try py3.13 2024-08-05 11:11:19 -03:00
Paul Gauthier (aider)
e370b7aba3 feat: refactor docker build and release into its own workflow
BREAKING CHANGE: update tag regex to match semver pattern `v[0-9]+.[0-9]+.[0-9]+`

This change separates the concerns of PyPI release and Docker image release into two separate workflows. The original `release.yml` file has been renamed to `PyPI Release` and now only handles the PyPI package release. A new `docker-release.yml` file has been created to handle the Docker image build and push.

Both workflows are now triggered on tags matching the semver pattern `v[0-9]+.[0-9]+.[0-9]+`, which corresponds to tags like `vX.Y.Z`. The Docker-related steps have been moved from the original workflow to the new Docker-specific workflow.

This change ensures that both PyPI and Docker releases are triggered on the same semver-compliant tag pattern, while separating the concerns of the two release processes.
2024-07-31 09:09:15 -03:00
Paul Gauthier (aider)
4fded189f8 Build multi-stage Docker images for core "aider" and full "aider-full" versions 2024-07-30 17:11:12 -03:00
Paul Gauthier
896e79bcd1 use pytest.ini testpaths to order testing 2024-07-16 10:33:42 +01:00
Paul Gauthier (aider)
7ece31c08a Moved the tests directory from aider/tests/ to tests/ 2024-07-15 08:40:10 +01:00
Paul Gauthier
962e899f57 cleanup 2024-07-12 09:19:47 +01:00
Paul Gauthier
b89b2c4a1d install pytest too 2024-07-12 07:37:22 +01:00
Paul Gauthier
37ebe83893 run tests without [hf-embed] first 2024-07-12 07:31:21 +01:00
Paul Gauthier (aider)
48b3076e65 Configured Ubuntu and Windows test workflows to use pytest instead of unittest. 2024-07-12 07:30:21 +01:00
Paul Gauthier
ce2673e6eb Configured GitHub Actions workflows to use pytest instead of unittest for running tests on Ubuntu and Windows. 2024-07-12 07:30:20 +01:00
Paul Gauthier
b8c4d1dcb9 Removed the hf-embed extra from the pip install command in the Ubuntu and Windows GitHub Actions workflows. 2024-07-12 07:29:59 +01:00
Paul Gauthier
752e4999cc cpu only for GH actions tests 2024-07-10 17:45:18 +01:00
Paul Gauthier
9e3eb4fce5 move llama core into hf-embed 2024-07-10 17:44:26 +01:00
Paul Gauthier
8e20d762f5 don't run jobs if just website is modified 2024-07-06 15:21:34 -03:00
Paul Gauthier
22a494bb59 moved website/ -> aider/website/ 2024-07-05 10:01:30 -03:00
Paul Gauthier
5e26014dae check links on pages build 2024-07-03 15:33:47 -03:00
Taha YASSINE
acffd54297 Remove universal ctags install from workflows 2024-07-01 22:19:13 +01:00
Paul Gauthier
85bac4d529 Pin importlib-metadata==7.2.1 in release.yml 2024-06-25 13:44:58 -07:00
Paul Gauthier
ec7f78a500 Run tests in aider/tests 2024-06-10 15:39:18 -07:00
Paul Gauthier
9de32c88c3 ignore README for actions 2024-06-05 16:14:21 -07:00
Paul Gauthier
0effca7e88 removed extra paths-ignore 2024-06-05 15:58:07 -07:00
Paul Gauthier
cc8151e3b2 aider: Add paths-ignore condition under the push event in workflows to prevent running if only files in the website/ subtree are changed.
# Aider chat conversation:

USER: do we need that under the `push:` too?

ASSISTANT: Yes, we should add the `paths-ignore` condition under the `push` event as well to ensure the workflows do not run if only files in the `website/` subtree are changed.

Here are the updated *SEARCH/REPLACE* blocks:

.github/workflows/windows-tests.yml
```yaml
<<<<<<< SEARCH
  pull_request:
=======
  pull_request:
    paths-ignore:
      - 'website/**'
>>>>>>> REPLACE
```

.github/workflows/windows-tests.yml
```yaml
<<<<<<< SEARCH
  push:
=======
  push:
    paths-ignore:
      - 'website/**'
>>>>>>> REPLACE
```

.github/workflows/docker-build-test.yml
```yaml
<<<<<<< SEARCH
  pull_request:
=======
  pull_request:
    paths-ignore:
      - 'website/**'
>>>>>>> REPLACE
```

.github/workflows/docker-build-test.yml
```yaml
<<<<<<< SEARCH
  push:
=======
  push:
    paths-ignore:
      - 'website/**'
>>>>>>> REPLACE
```

.github/workflows/ubuntu-tests.yml
```yaml
<<<<<<< SEARCH
  pull_request:
=======
  pull_request:
    paths-ignore:
      - 'website/**'
>>>>>>> REPLACE
```

.github/workflows/ubuntu-tests.yml
```yaml
<<<<<<< SEARCH
  push:
=======
  push:
    paths-ignore:
      - 'website/**'
>>>>>>> REPLACE
```
2024-06-05 15:57:29 -07:00
Paul Gauthier
a10077f6c9 aider: Ensure workflows do not run if only files in the website/ subtree are changed.
# Aider chat conversation:

USER: these workflows currently run on any changes to the main branch; they don't need to run if only files in the wubsite/ subtree are changed

ASSISTANT: To ensure the workflows do not run if only files in the `website/` subtree are changed, we can add a `paths-ignore` condition to each workflow. Here are the changes:

.github/workflows/windows-tests.yml
```yaml
<<<<<<< SEARCH
  pull_request:
=======
  pull_request:
    paths-ignore:
      - 'website/**'
>>>>>>> REPLACE
```

.github/workflows/docker-build-test.yml
```yaml
<<<<<<< SEARCH
  pull_request:
=======
  pull_request:
    paths-ignore:
      - 'website/**'
>>>>>>> REPLACE
```

.github/workflows/ubuntu-tests.yml
```yaml
<<<<<<< SEARCH
  pull_request:
=======
  pull_request:
    paths-ignore:
      - 'website/**'
>>>>>>> REPLACE
```
2024-06-05 15:56:58 -07:00
Paul Gauthier
4afc0be2e2 updated pages.yml 2024-06-05 14:53:06 -07:00
Paul Gauthier
69d6993871 added pages workflow 2024-06-05 14:45:22 -07:00
Paul Gauthier
3e153cc7fa upgrade actions 2024-04-18 16:41:45 -07:00
Paul Gauthier
5c9bd4d405 Bump all dependencies, to pick up py-tree-sitter-languages 1.9.1 with py12 support 2024-01-04 07:48:00 -08:00
Paul Gauthier
531ea58eb6 use env to test secrets 2023-12-31 10:12:05 -08:00
Paul Gauthier
9d4fcff921 Updated docker-build-test workflow to always check for DockerHub credentials before building. 2023-12-31 10:08:35 -08:00
Paul Gauthier
1b43dddec5 aider: This change corrected the conditional expression for the Docker login step by removing the incorrect ${{ }} around secrets.DOCKERHUB_USERNAME and secrets.DOCKERHUB_PASSWORD and adding a check for the github.event_name to ensure that the login step is only executed when it's not a pull request or when the secrets are available.
# Aider chat conversation:

USER: The workflow is not valid. .github/workflows/docker-build-test.yml (Line: 30, Col: 11): Unrecognized named-value: 'secrets'. Located at position 1 within expression: secrets.DOCKERHUB_USERNAME

ASSISTANT: ```diff
--- .github/workflows/docker-build-test.yml
+++ .github/workflows/docker-build-test.yml
@@ ... @@
       uses: docker/login-action@v3
       with:
         username: ${{ secrets.DOCKERHUB_USERNAME }}
         password: ${{ secrets.DOCKERHUB_PASSWORD }}
-      if: ${{ secrets.DOCKERHUB_USERNAME }} && ${{ secrets.DOCKERHUB_PASSWORD }}
+      if: ${{ github.event_name != 'pull_request' || (secrets.DOCKERHUB_USERNAME && secrets.DOCKERHUB_PASSWORD) }}
```

This change corrects the conditional expression for the Docker login step by removing the incorrect `${{ }}` around `secrets.DOCKERHUB_USERNAME` and `secrets.DOCKERHUB_PASSWORD` and adding a check for the `github.event_name` to ensure that the login step is only executed when it's not a pull request or when the secrets are available.
2023-12-31 10:06:59 -08:00
Joshua Vial
62da17e333 aider: Adjust DockerHub login action to complete without failing if credentials are not present.
# Aider chat conversation:

USER: please adjust this github action file so it will complete without failing if the dockerhub_username or password are not there

ASSISTANT: ```diff
--- .github/workflows/docker-build-test.yml
+++ .github/workflows/docker-build-test.yml
@@ ... @@
     - name: Login to DockerHub
       uses: docker/login-action@v3
       with:
         username: ${{ secrets.DOCKERHUB_USERNAME }}
         password: ${{ secrets.DOCKERHUB_PASSWORD }}
+      if: ${{ secrets.DOCKERHUB_USERNAME }} && ${{ secrets.DOCKERHUB_PASSWORD }}
```
2023-12-28 11:07:35 +13:00
Paul Gauthier
c9aa36d7b6 Put build-essential back into dockerfile 2023-10-31 14:52:04 -07:00
Paul Gauthier
702fc0c6ea restore release.yml, do multi arch build in docker-build-test.yml 2023-10-31 14:48:37 -07:00
Paul Gauthier
982c58a94d just arm64 2023-10-31 14:40:07 -07:00
Paul Gauthier
ce1977b75c temp disable push 2023-10-31 14:34:11 -07:00
Paul Gauthier
59d65a0b1b temp disable arm64 2023-10-31 14:33:43 -07:00
Paul Gauthier
dcaa94551e temp disable twine, arm64 2023-10-31 14:29:33 -07:00
Paul Gauthier
3eaa9671be Just test building the docker image 2023-10-30 09:15:16 -07:00
Paul Gauthier
0beba57a98 aider: Added a new workflow that builds the Docker image and runs tests inside it.
# Aider chat conversation:

USER: add a new workflow that will build the docker image and make sure the tests succeed inside it

ASSISTANT: To add a new workflow that builds the Docker image and runs tests inside it, we need to create a new GitHub Actions workflow file. Let's call it `docker-build-and-test.yml` and place it in the `.github/workflows/` directory.

Here is the *SEARCH/REPLACE block* for the new file:

```yaml
.github/workflows/docker-build-and-test.yml
<<<<<<< SEARCH

=======
name: Docker Build and Test

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Build Docker image
      run: |
        docker build -t myapp:latest .

    - name: Run tests in Docker container
      run: |
        docker run myapp:latest python -m unittest discover -s tests
>>>>>>> REPLACE
```

This workflow will trigger on every push and pull request to the `main` branch. It will build a Docker image from the Dockerfile in the root directory of the repository and then run the tests inside a container from that image.
2023-10-30 09:08:40 -07:00
Paul Gauthier
25c06940d6 re-enable twine/pypi 2023-10-19 07:09:09 -07:00
Paul Gauthier
02386c16aa setup multi-arch docker images 2023-10-19 07:00:23 -07:00
Paul Gauthier
fc92862017 enable pypi again 2023-10-18 09:15:40 -07:00
Paul Gauthier
44afdeff25 aider: Updated build and push action to include the ":latest" tag when pushing the Docker image.
# Aider chat conversation:

USER: i also want to update :latest when i push

ASSISTANT: To update the `:latest` tag each time you push, you can add it to the `tags` parameter of the `docker/build-push-action` action in your workflow file. This will build and push the Docker image with both the branch or tag name and `latest` as tags.

Here's how you can update your workflow file:

```yaml
.github/workflows/release.yml
<<<<<<< HEAD
    - name: Build and push Docker image
      uses: docker/build-push-action@v5
      with:
        context: .
        file: ./docker/Dockerfile
        push: true
        tags: ${{ secrets.DOCKERHUB_USERNAME }}/aider:${{ github.ref_name }}
=======
    - name: Build and push Docker image
      uses: docker/build-push-action@v5
      with:
        context: .
        file: ./docker/Dockerfile
        push: true
        tags: |
          ${{ secrets.DOCKERHUB_USERNAME }}/aider:${{ github.ref_name }}
          ${{ secrets.DOCKERHUB_USERNAME }}/aider:latest
>>>>>>> updated
```

This will ensure that the `:latest` tag always points to the most recently pushed image.
2023-10-18 09:05:53 -07:00
Paul Gauthier
87296ddcee aider: Updated Docker tag to use github.ref_name instead of github.ref.
# Aider chat conversation:

USER: how can i test this release action?

ASSISTANT: Testing a GitHub Actions workflow can be done in a few ways:

1. **Push to a branch:** You can push your changes to a branch and see if the workflow runs as expected. This is the most straightforward way to test a workflow, but it may not be suitable if the workflow is supposed to run on specific events like a release or a tag.

2. **Use Pull Requests:** If your workflow should run on pull requests, you can open a pull request to trigger the workflow.

3. **Use Actions tab on GitHub:** You can manually trigger a workflow run from the Actions tab in your GitHub repository. Click on the workflow you want to run, then click `Run workflow` and select the branch you want to run the workflow on.

4. **Use a workflow_dispatch event:** You can add a `workflow_dispatch` event to your workflow file to manually trigger the workflow from GitHub's UI. Here's an example of how to add it:

```yaml
on:
  workflow_dispatch:
  push:
    tags:
      - 'v*'
```

After adding this to your workflow file and pushing it to your repository, you can manually trigger the workflow from the Actions tab in your GitHub repository.

5. **Use a specific branch for testing:** If your workflow runs on a push to a specific branch, you can create a separate branch for testing. You can push your changes to this branch to test the workflow.

6. **Use act:** [act](https://github.com/nektos/act) is a tool that lets you run your GitHub Actions workflows locally. This can be useful for testing your workflows before pushing them to your repository.

Remember to remove or comment out any actions that could have side effects (like publishing a package or pushing a Docker image) when you're testing your workflows.

USER: what will github.ref be if i manually trigger?

ASSISTANT: When you manually trigger a workflow using the `workflow_dispatch` event, the `github.ref` will be set to the branch or tag you selected when you triggered the workflow.

If you didn't select a branch or tag (which is possible if your workflow file doesn't specify any `inputs` for the `workflow_dispatch` event), `github.ref` will be set to the default branch of your repository (usually `main` or `master`).

Here's an example of how you can specify an input for the `workflow_dispatch` event:

```yaml
on:
  workflow_dispatch:
    inputs:
      branch:
        description: 'Branch or tag to run the workflow on'
        required: true
        default: 'main'
```

In this example, when you manually trigger the workflow, you'll be prompted to enter a branch or tag. The value you enter will be available in the `github.event.inputs.branch` context, and `github.ref` will be set to the same value.

USER: buildx failed with: ERROR: invalid tag "***/aider:refs/tags/v0.14.2-dev1": invalid reference format

ASSISTANT: The error message indicates that the Docker tag is not valid. Docker tags cannot contain slashes (`/`), and `github.ref` includes the full Git reference, which will be something like `refs/tags/v0.14.2-dev1` for a tag.

To fix this, you can use the `github.ref_name` context instead of `github.ref`. The `github.ref_name` context contains just the name of the branch or tag without the `refs/heads/` or `refs/tags/` prefix.

Here's how you can update your workflow file:

```yaml
.github/workflows/release.yml
<<<<<<< HEAD
    - name: Build and push Docker image
      uses: docker/build-push-action@v5
      with:
        context: .
        file: ./docker/Dockerfile
        push: true
        tags: ${{ secrets.DOCKERHUB_USERNAME }}/aider:${{ github.ref }}
=======
    - name: Build and push Docker image
      uses: docker/build-push-action@v5
      with:
        context: .
        file: ./docker/Dockerfile
        push: true
        tags: ${{ secrets.DOCKERHUB_USERNAME }}/aider:${{ github.ref_name }}
>>>>>>> updated
```

This will tag the Docker image with just the name of the branch or tag that triggered the workflow run, which should be a valid Docker tag.
2023-10-18 09:01:37 -07:00
Paul Gauthier
8cb9d1d64d update actions 2023-10-18 08:54:26 -07:00
Paul Gauthier
ec13c87e8d disable pypi for now 2023-10-18 08:48:24 -07:00
Paul Gauthier
b69edcfcba prep docker build to run in github action 2023-10-18 08:45:02 -07:00
Paul Gauthier
5769821a35 aider: Updated Dockerfile path to ./docker/Dockerfile in the docker/build-push-action action.
# Aider chat conversation:

USER: what is github.ref?

ASSISTANT: In GitHub Actions, `github.ref` is a context variable that refers to the branch or tag name that triggered the workflow run.

For example, if you push a commit to the `main` branch, `github.ref` will be `refs/heads/main`. If you create a tag named `v1.0.0`, `github.ref` will be `refs/tags/v1.0.0`.

In your workflow file, you're using `github.ref` to tag the Docker image. This means that the Docker image will be tagged with the name of the branch or tag that triggered the workflow run.

However, since you're triggering the workflow on tag creation (`on: push: tags: - 'v*'`), `github.ref` will always be the name of the tag. If you create a tag named `v1.0.0`, the Docker image will be tagged as `v1.0.0`.

USER: the Dockerfile is in the docker/ subdir.

ASSISTANT: If your Dockerfile is in the `docker/` subdirectory, you need to specify this in the `context` and `file` parameters of the `docker/build-push-action` action in your GitHub Actions workflow file.

The `context` parameter is the path to the directory that contains the Dockerfile. The `file` parameter is the path to the Dockerfile.

Here are the changes you need to make to the `.github/workflows/release.yml` file:

```yaml
.github/workflows/release.yml
<<<<<<< HEAD
    - name: Build and push Docker image
      uses: docker/build-push-action@v2
      with:
        context: .
        push: true
        tags: ${{ secrets.DOCKERHUB_USERNAME }}/aider:${{ github.ref }}
=======
    - name: Build and push Docker image
      uses: docker/build-push-action@v2
      with:
        context: .
        file: ./docker/Dockerfile
        push: true
        tags: ${{ secrets.DOCKERHUB_USERNAME }}/aider:${{ github.ref }}
>>>>>>> updated
```

This will tell the `docker/build-push-action` action to look for the Dockerfile in the `docker/` subdirectory.
2023-10-18 08:38:30 -07:00
Paul Gauthier
9bcef8b853 aider: Added Docker login and build/push steps to the GitHub Actions workflow for building and pushing a Docker image to DockerHub on each release.
# Aider chat conversation:

USER: what's the best way to docker build and push a new version to dockerhub on each release?

ASSISTANT: To build and push a new Docker image to DockerHub on each release, you can use GitHub Actions. You will need to modify the existing GitHub Actions workflow file `.github/workflows/release.yml` to include steps for building and pushing the Docker image.

Here are the steps you need to follow:

1. Add Docker login step: You need to log in to DockerHub before you can push images. You can use the `docker/login-action` action for this. You will need to store your DockerHub username and password as secrets in your GitHub repository.

2. Build the Docker image: You can use the `docker/build-push-action` action to build your Docker image. You should use the new version as the tag for the Docker image.

3. Push the Docker image: The `docker/build-push-action` action can also push the Docker image to DockerHub.

Here are the changes you need to make to the `.github/workflows/release.yml` file:

```yaml
.github/workflows/release.yml
<<<<<<< HEAD
name: Release

on:
  push:
    tags:
      - 'v*'

jobs:
  build_and_publish:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v3

    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: 3.x

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install setuptools wheel twine

    - name: Build and publish
      env:
        TWINE_USERNAME: __token__
        TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
      run: |
        python setup.py sdist bdist_wheel
        twine upload dist/*
=======
name: Release

on:
  push:
    tags:
      - 'v*'

jobs:
  build_and_publish:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v3

    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: 3.x

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install setuptools wheel twine

    - name: Build and publish
      env:
        TWINE_USERNAME: __token__
        TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
      run: |
        python setup.py sdist bdist_wheel
        twine upload dist/*

    - name: Login to DockerHub
      uses: docker/login-action@v1
      with:
        username: ${{ secrets.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_PASSWORD }}

    - name: Build and push Docker image
      uses: docker/build-push-action@v2
      with:
        context: .
        push: true
        tags: ${{ secrets.DOCKERHUB_USERNAME }}/aider:${{ github.ref }}
>>>>>>> updated
```

Please replace `DOCKERHUB_USERNAME` and `DOCKERHUB_PASSWORD` with your DockerHub username and password. You should store these as secrets in your GitHub repository.

Please note that this will build and push a new Docker image for every release. If you want to build and push a Docker image only for specific releases, you will need to modify the `on` section of the workflow file.
2023-10-18 08:36:16 -07:00