Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#### What this PR does

#### Why we need it

#### Checklist

- [ ] I followed the [contributing guide](https://github.com/canonical/is-charms-contributing-guide)
- [ ] I added or updated the documentation (if applicable)
- [ ] I updated `docs/changelog.md` with user-relevant changes
- [ ] I used AI to assist with preparing this PR
- [ ] I added or updated tests as needed (unit and integration)
- [ ] **If integration test modules are used:** I updated the workflow configuration
(e.g., in `.github/workflows/integration_tests.yaml`, ensure the `modules` list is correct)
- [ ] **If this is a Grafana dashboard:** I added a screenshot of the dashboard
- [ ] **If this is Terraform:** `terraform fmt` passes and `tflint` reports no errors
- [ ] **If this is Rockcraft:** I updated the version

<!--
You can adjust the checklist to match the project.

If you are an AI assistant (e.g., GitHub Copilot, ChatGPT, Claude), follow these instructions when generating or completing PR descriptions:

1. Add a **Test plan** section explaining how the changes were tested, including any manual, unit, integration, or workflow tests.
2. Add a **Review focus** section highlighting tricky parts, important decisions, or areas needing human attention.
3. Identify and document any **potential breaking changes**.
4. Highlight any **new dependencies, APIs, modules, or workflow changes** introduced by this PR.
-->

32 changes: 0 additions & 32 deletions .github/pull_request_template.yaml

This file was deleted.

5 changes: 3 additions & 2 deletions .vale/styles/config/vocabularies/local/accept.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
nftables
AI
allowlists
aproxy
allowlists
nftables
80 changes: 49 additions & 31 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ When contributing, you must abide by the
## Changelog

Please ensure that any new feature, fix, or significant change is documented by
adding an entry to the [CHANGELOG.md](./docs/changelog.md) file. Use the date of the
adding an entry to the [CHANGELOG.md](docs/changelog.md) file. Use the date of the
contribution as the header for new entries.

To learn more about changelog best practices, visit [Keep a Changelog](https://keepachangelog.com/).
Expand All @@ -50,35 +50,31 @@ also, reference the issue or bug number when you submit the changes.

Your changes will be reviewed in due time; if approved, they will be eventually merged.

### Describing pull requests
### AI

To be properly considered, reviewed and merged,
your pull request must provide the following details:
You are free to use any tools you want while preparing your contribution, including
AI, provided that you do so lawfully and ethically.

- **Title**: Summarize the change in a short, descriptive title.
Avoid using AI to complete issues tagged with the "good first issues" label. The
purpose of these issues is to provide newcomers with opportunities to contribute
to our projects and gain coding skills. Using AI to complete these tasks
undermines their purpose.

- **Overview**: Describe the problem that your pull request solves.
Mention any new features, bug fixes or refactoring.
We have created instructions and tools that you can provide AI while preparing your contribution: [`copilot-collections`](https://github.com/canonical/copilot-collections)

- **Rationale**: Explain why the change is needed.
While it isn't necessary to use `copilot-collections` while preparing your
contribution, these files contain details about our quality standards and
practices that will help the AI avoid common pitfalls when interacting with
our projects. By using these tools, you can avoid longer review times and nitpicks.

- **Juju Events Changes**: Describe any changes made to Juju events, or
"None" if the pull request does not change any Juju events.
If you choose to use AI, please disclose this information to us by indicating
AI usage in the PR description (for instance, marking the checklist item about
AI usage). You don't need to go into explicit details about how and where you used AI.

- **Module Changes**: Describe any changes made to the module, or "None"
if your pull request does not change the module.

- **Library Changes**: Describe any changes made to the library,
or "None" is the library is not affected.

- **Checklist**: Complete the following items:

- The [charm style guide](https://documentation.ubuntu.com/juju/3.6/reference/charm/charm-development-best-practices/) was applied
- The [contributing guide](https://github.com/canonical/is-charms-contributing-guide) was applied
- The changes are compliant with [ISD054 - Managing Charm Complexity](https://discourse.charmhub.io/t/specification-isd014-managing-charm-complexity/11619)
- The documentation is updated
- The PR is tagged with appropriate label (trivial, senior-review-required, documentation, etc.)
- The changelog has been updated
Avoid submitting contributions that you don't fully understand.
You are responsible for the entire contribution, including the AI-assisted portions.
You must be willing to engage in discussion and respond to any questions, comments,
or suggestions we may have.

### Signing commits

Expand All @@ -104,7 +100,7 @@ To add signatures on your commits, follow the
## Develop

To make contributions to this charm, you'll need a working
[development setup](https://documentation.ubuntu.com/juju/latest/user/howto/manage-your-deployment/manage-your-deployment-environment/).
[development setup](https://documentation.ubuntu.com/juju/latest/howto/manage-your-juju-deployment/set-up-your-juju-deployment-local-testing-and-development/).

The code for this charm can be downloaded as follows:

Expand Down Expand Up @@ -140,15 +136,34 @@ source .venv/bin/activate
This project uses `tox` for managing test environments. There are some pre-configured environments
that can be used for linting and formatting code when you're preparing contributions to the charm:

- `tox`: Executes all of the basic checks and tests (`lint`, `unit`, `static`, and `coverage-report`).
- `tox -e fmt`: Runs formatting using `ruff`.
- `tox -e lint`: Runs a range of static code analysis to check the code.
- `tox -e static`: Runs other checks such as `bandit` for security issues.
- `tox -e unit`: Runs the unit tests.
- `tox -e integration`: Runs the integration tests.
* ``tox``: Executes all of the basic checks and tests (``lint``, ``unit``, ``static``, and ``coverage-report``).
* ``tox -e fmt``: Runs formatting using ``ruff``.
* ``tox -e lint``: Runs a range of static code analysis to check the code.
* ``tox -e static``: Runs other checks such as ``bandit`` for security issues.
* ``tox -e unit``: Runs the unit tests.
* ``tox -e integration``: Runs the integration tests.

### Build the rock and charm

Use [Rockcraft](https://documentation.ubuntu.com/rockcraft/stable/) to create an
OCI image for aproxy, and then upload the image to a MicroK8s registry,
which stores OCI archives so they can be downloaded and deployed.

Enable the MicroK8s registry:

```bash
microk8s enable registry
```

The following commands pack the OCI image and push it into
the MicroK8s registry:

```bash
cd <project_dir>
rockcraft pack
skopeo --insecure-policy copy --dest-tls-verify=false oci-archive:<rock-name>.rock docker://localhost:32000/<app-name>:latest
```

Comment on lines +148 to +166
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

im not sure if this project supports rockcraft (tbh i don't really have much knowledge on rockcraft), i did try to perform rockcraft pack inside aproxy-operator dir and it fails bc we don't have rockcraft.yaml. @cbartz @yhaliaw do you guys know whether we can do rockcraft pack for machine charm?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahhh well if there's no rock for this repo, then this part of CONTRIBUTING.md can be removed. (Once we move to a modularized approach for our contributing guides, this will be less of a hassle.)

Build the charm in this git repository using:

```shell
Expand All @@ -167,3 +182,6 @@ juju deploy ./aproxy.charm --config proxy-address=<target.proxy>
# Integrate with a principal charm
juju integrate aproxy <principal-charm>
```



Loading