Multi-base charm cannot be uploaded to GitHub Actions artifact
Metadata
Current evaluation
Closed after @lengau approved replacing ':' with '-' in charm filenames; CRAFT-3849 tracked the request, but no resolving PR or commit was linked.
Resolution: closed stale
Reason: No implementation is evidenced after @lengau commented that a quick s/:/-/ filename change was acceptable and CRAFT-3849 was created. The issue was closed without a linked resolving PR, commit, or closing completion comment.
Evaluated by: mr-cal-bot
No scores available.
Issue body
### Bug Description
Packing a charm with
```yaml
platforms:
ubuntu@22.04:amd64:
```
creates a *.charm file that contains the `:` character (e.g. `mysql-router-k8s_ubuntu@22.04:amd64.charm`), which cannot be uploaded as a GitHub Actions artifact or to a GitHub release (example: https://github.com/canonical/mysql-router-k8s-operator/actions/runs/12428934287/job/34701456930?pr=341#step:13:15)
Request: rename the *.charm file so that it does not contain the `:` character
### To Reproduce
```
git clone https://github.com/canonical/mysql-router-k8s-operator
cd mysql-router-k8s-operator
git checkout 6c459ad4d9979942e50693d9394c59330c7138c3
charmcraft pack -v
```
### Environment
Ubuntu 22.04
```
$ snap list
Name Version Rev Tracking Publisher Notes
charmcraft 3.2.2.post133+g455880a4 5682 3.x/edge canonical✓ classic
core18 20240920 2846 latest/stable canonical✓ base
core20 20240911 2434 latest/stable canonical✓ base
core22 20241119 1722 latest/stable canonical✓ base
core24 20240920 609 latest/stable canonical✓ base
juju 3.6.1 29241 3/stable canonical✓ -
lxd 5.0.4-497fe1e 31333 5.0/stable/… canonical✓ -
microk8s v1.29.11 7435 1.29-strict/stable canonical✓ -
snapcraft 8.5.1 13181 latest/stable canonical✓ classic
snapd 2.66.1 23258 latest/stable canonical✓ snapd
```
### charmcraft.yaml
```yaml
# Copyright 2022 Canonical Ltd.
# See LICENSE file for licensing details.
type: charm
platforms:
ubuntu@22.04:amd64:
ubuntu@22.04:arm64:
# Files implicitly created by charmcraft without a part:
# - dispatch (https://github.com/canonical/charmcraft/pull/1898)
# - manifest.yaml
# (https://github.com/canonical/charmcraft/blob/9ff19c328e23b50cc06f04e8a5ad4835740badf4/charmcraft/services/package.py#L259)
# Files implicitly copied/"primed" by charmcraft without a part:
# - actions.yaml, config.yaml, metadata.yaml
# (https://github.com/canonical/charmcraft/blob/9ff19c328e23b50cc06f04e8a5ad4835740badf4/charmcraft/services/package.py#L290-L293
# https://github.com/canonical/charmcraft/blob/9ff19c328e23b50cc06f04e8a5ad4835740badf4/charmcraft/services/package.py#L156-L157)
parts:
# "poetry-deps" part name is a magic constant
# https://github.com/canonical/craft-parts/pull/901
poetry-deps:
plugin: nil
build-packages:
- curl
override-build: |
python3 -m pip install --upgrade pip==24.3.1 # renovate: charmcraft-pip-latest
curl -sSL https://install.python-poetry.org | python3 - --version 1.8.4 # renovate: charmcraft-poetry-latest
ln -sf "$HOME/.local/bin/poetry" /usr/local/bin/poetry
# "charm-poetry" part name is arbitrary; use for consistency
# Avoid using "charm" part name since that has special meaning to charmcraft
charm-poetry:
# By default, the `poetry` plugin creates/primes these directories:
# - lib, src
# (https://github.com/canonical/charmcraft/blob/9ff19c328e23b50cc06f04e8a5ad4835740badf4/charmcraft/parts/plugins/_poetry.py#L76-L78)
# - venv
# (https://github.com/canonical/charmcraft/blob/9ff19c328e23b50cc06f04e8a5ad4835740badf4/charmcraft/parts/plugins/_poetry.py#L95
# https://github.com/canonical/craft-parts/blob/afb0d652eb330b6aaad4f40fbd6e5357d358de47/craft_parts/plugins/base.py#L270)
plugin: poetry
source: .
after:
- poetry-deps
poetry-export-extra-args: ['--only', 'main,charm-libs']
build-snaps:
- rustup
build-packages:
- libffi-dev
- libssl-dev
- pkg-config
override-build: |
rustup default stable
craftctl default
# Include requirements.txt in *.charm artifact for easier debugging
cp requirements.txt "$CRAFT_PART_INSTALL/requirements.txt"
# "files" part name is arbitrary; use for consistency
files:
plugin: dump
source: .
build-packages:
- git
override-build: |
# Workaround to add unique identifier (git hash) to charm version while specification
# DA053 - Charm versioning
# (https://docs.google.com/document/d/1Jv1jhWLl8ejK3iJn7Q3VbCIM9GIhp8926bgXpdtx-Sg/edit?pli=1)
# is pending review.
python3 -c 'import pathlib; import shutil; import subprocess; git_hash=subprocess.run(["git", "describe", "--always", "--dirty"], capture_output=True, check=True, encoding="utf-8").stdout; file = pathlib.Path("charm_version"); shutil.copy(file, pathlib.Path("charm_version.backup")); version = file.read_text().strip(); file.write_text(f"{version}+{git_hash}")'
craftctl default
prime:
- LICENSE
- charm_version
- workload_version
- scripts
- templates
```
### Relevant log output
```shell
Packing charm mysql-router-k8s_ubuntu@22.04:amd64.charm
Packed mysql-router-k8s_ubuntu@22.04:amd64.charm
```
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed stale | Closed after @lengau approved replacing ':' with '-' in charm filenames; CRAFT-3849 tracked the request, but no resolving PR or commit was linked. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed in charmcraft#2060 via commit 40a302bb by replacing ':' with '-' in multi-base charm filenames, allowing GitHub artifact uploads. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed in #2060 (commit 40a302bb) by replacing ':' with '-' in multi-base charm filenames, enabling GitHub artifact uploads and matching Charmcraft 2 naming conventions. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged PR canonical/charmcraft#2060 (commit 40a302bb) fixed uploads by replacing colons in multi-base charm filenames with hyphens. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Closed after maintainer agreed to replace colons with hyphens in generated charm filenames, resolving GitHub Actions upload failures and aligning with charmcraft 2 conventions. | |
| qwen/qwen3.6-35b-a3b | — | — | Fixed by replacing colons with hyphens in generated charm filenames, aligning with charmcraft v2 naming and resolving GitHub Actions upload failures. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed following a suggestion to replace colons with hyphens in generated charm filenames, resolving GitHub Actions upload failures. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Closed with a proposed fix to replace colons with hyphens in generated filenames, resolving GitHub Actions upload failures. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2060 fix: replace colons with hyphens in charm names | charmcraft | merged | Merged PR #2060 via commit 40a302bb, replacing colons with hyphens in multi-base charm filenames and fixing GitHub Actions artifact uploads reported in #2057. |