infra issueshttps://gitlab.alpinelinux.org/groups/alpine/infra/-/issues2024-03-27T21:32:01Zhttps://gitlab.alpinelinux.org/alpine/infra/aports-qa-bot/-/issues/33Automatically assign issues in aports.git based on issue templates2024-03-27T21:32:01ZSören TempelAutomatically assign issues in aports.git based on issue templatesThis is a follow up to https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/61558
We have now use issue templates in aports.git and, from what I have seen so far, they work quite well. The templates enable use to automatically ...This is a follow up to https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/61558
We have now use issue templates in aports.git and, from what I have seen so far, they work quite well. The templates enable use to automatically assign created issues in aports.git to the package maintainer, in the hopes that this results in the issue to be resolved faster. This requires us to add some more code to alpine-qa-bot essentially doing the following:
1. Be notified when a new issue is created
2. Check if the issue uses a pre-defined issue template
3. Extract the package name from the issue description
4. Determine the maintainer of this package
5. Map maintainer information to a GitLab user name
6. Assign the issue
7. Additionally: Assign labels tot he issue based on the template type extracted in 2.
This issue serve as a remainder to implement feature and should track the progress on the implementation.
I am currently busy with upgrading GHC but plan on looking into after.https://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10818riscv64 runner seems to have posioned or MITM DNS2024-03-25T18:51:19ZNatanael Copariscv64 runner seems to have posioned or MITM DNSThe curl test suite does a DNS lookup that is expected to fail, but it unexpectedly downloads content on the riscv64 CI. We may need to check the DNS setup on the riscv64 machines.
https://gitlab.alpinelinux.org/alpine/aports/-/merge_re...The curl test suite does a DNS lookup that is expected to fail, but it unexpectedly downloads content on the riscv64 CI. We may need to check the DNS setup on the riscv64 machines.
https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/62791#note_387718
http://non-existing-host.haxx.se/ is supposed to not resolve but returns this:
```
=== Start of file stdout507
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 24 Mar 2024 15:37:41 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Expires: Fri, 09 Apr 2021 13:17:22 GMT
Cache-Control: no-cache
<!doctype html><html lang="en" class="is_adaptive" data-page-type="parking-crew"><head><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="robots" content="nofollow"><meta name="robots" content="noarchive"><meta property="og:site_name" content="non-existing-host.haxx.se"><meta property="og:url" content="http://non-existing-host.haxx.se/"><meta property="og:image" content="http://yourmine.ru/i/parking/glob_parking.png"><meta property="fb:app_id" content="280542925476675"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="parking" content="ape"><title>Срок регистрации домена non-existing-host.haxx.se истёк</title><link rel="stylesheet" media="all" href="/parking-crew.css"><link rel="stylesheet" href="http://i.cdnpark.com/themes/registrar/035524.css"><style>body {
background: #E5E5E5;
}</style><link rel="icon" href="/favicon.ico" type="image/x-icon"><script>/*<![CDATA[*/
window.trackScriptLoad = function(){};
/*]]>*/</script><script onload="window.trackScriptLoad('/manifest.js')" onerror="window.trackScriptLoad('/manifest.js', 1)" src="/manifest.js" charset="utf-8"></script><script onload="window.trackScriptLoad('/head-scripts-content.js')" onerror="window.trackScriptLoad('/head-scripts-content.js', 1)" src="/head-scripts-content.js" charset="utf-8"></script><script onload="window.trackScriptLoad('/head-scripts.js')" onerror="window.trackScriptLoad('/head-scripts.js', 1)" src="/head-scripts.js" charset="utf-8"></script><script type="text/javascript">var cname = "035524";
var identifier = "";</script></head><body><header class="b-header-parking b-header-parking_type_crew"><p class="b-text b-text_margin_none">Домен зарегистрирован в <a href="https://reg.ru?target=_blank" class="b-link" rel="nofollow noopener noreferrer" target="_blank">REG.RU</a></p></header><main class="b-pcrew"><div class="b-pcrew-notification"><div class="b-pcrew__wrapper"><p class="b-pcrew-notification__text">Срок регистрации домена истек.<br>Требуется продление, чтобы возобновить<br>работу домена и его сервисов.</p><div class="b-pcrew-notification__dname"><span class="puny">non-existing-host.haxx.se</span></div><div class="b-pcrew-notification__control"><a class="b-button b-button_color_primary b-button_font_base b-button_size_medium b-pcrew__button b-pcrew__button_type_prolong" href="https://www.reg.ru/domain/prolong_period_anonymous?dname=non-existing-host.haxx.se&utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign=renew" target="_blank">Продлить</a> <a href="https://www.reg.ru/domain/new/rereg_details?dname=non-existing-host.haxx.se&utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign=expired" class="b-pcrew__button b-pcrew__button_type_ghost" target="_blank" rel="noopener">Перехватить</a></div></div></div><div class="b-pcrew-content"><div class="b-pcrew__wrapper"><h1 class="b-pcrew-content__title">Понравился этот домен?</h1><div class="b-pcrew-content__item-wrapper"><div class="b-pcrew-content__item b-pcrew-content__item_type_buy" onclick="location.href='https://www.reg.ru/domain/service/domain-broker?dname=non-existing-host.haxx.se&utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign=broker';"><h2 class="b-pcrew-content__item-title">Поможем купить</h2><p class="b-pcrew-content__item-text">Закажите услугу «Доменный брокер» и наши специалисты возьмут весь процесс переговоров на себя.</p><div class="b-pcrew-content__item-control"><a href="https://www.reg.ru/domain/service/domain-broker?dname=non-existing-host.haxx.se&utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign=broker" class="b-pcrew__button b-pcrew__button_type_ghost" target="_blank" rel="noopener">Заказать услугу</a></div></div><div class="b-pcrew-content__item b-pcrew-content__item_type_select" onclick="location.href='https://www.reg.ru/buy/domains/?query=non-existing-host.haxx.se&utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign=choose';"><h2 class="b-pcrew-content__item-title">Подберём похожий</h2><p class="b-pcrew-content__item-text">Подберите самостоятельно в автоматизированном сервисе наиболее подходящее доменное имя.</p><div class="b-pcrew-content__item-control"><a href="https://www.reg.ru/buy/domains/?query=non-existing-host.haxx.se&utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign=choose" class="b-pcrew__button b-pcrew__button_type_ghost" target="_blank" rel="noopener">Подобрать домен</a></div></div></div></div></div><div class="b-parking-footer"><div class="b-parking-footer__wrapper"><div class="b-parking-footer__item"><strong class="b-parking-footer__title">Сервисы REG.RU</strong><div class="b-parking-footer__link-wrapper"><a class="b-parking-footer__link" href="https://www.reg.ru/web-tools/myip?utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign">Определение IP</a> <a class="b-parking-footer__link" href="https://www.reg.ru/web-tools/geoip?utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign">Местоположение по IP</a> <a class="b-parking-footer__link" href="https://www.reg.ru/whois/check_site?utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign">Проверка сайта</a> <a class="b-parking-footer__link" href="https://www.reg.ru/whois/?utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign">Whois</a></div></div><div class="b-parking-footer__item"><strong class="b-parking-footer__title">Услуги REG.RU</strong><div class="b-parking-footer__link-wrapper"><a class="b-parking-footer__link" href="https://www.reg.ru/hosting/?utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign">Хостинг сайтов</a> <a class="b-parking-footer__link" href="https://www.reg.ru/vps/?utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign">Классические VPS</a> <a class="b-parking-footer__link" href="https://www.reg.ru/vps/cloud/?utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign">Облачные VPS</a> <a class="b-parking-footer__link" href="https://www.reg.ru/dedicated/?utm_source=non-existing-host.haxx.se&utm_medium=expired&utm_campaign">Dedicated</a></div></div></div><div class="b-parking-footer__wrapper"><div class="b-parking-footer__partner"><span class="b-parking-footer__partner-text"><a href="https://2domains.ru/" class="b-parking-footer__partner-link">2domains.ru</a> — наш партнёр</span></div></div></div></main><script onload="window.trackScriptLoad('parking-crew.js')" onerror="window.trackScriptLoad('parking-crew.js', 1)" src="parking-crew.js" charset="utf-8"></script><script>function ondata(data){
var dname = 'non-existing-host.haxx.se';
if ( data.error_code ) {
return;
}
if ( data.ref_id ) {
var links = document.querySelectorAll( 'a' );
for ( var i = 0; i < links.length; i++) {
if ( ! links[ i ].href.match( /^https:\/\/www.reg.ru/ ) ) {
continue;
}
if ( links[ i ].href.indexOf('?') >= 0 ) {
links[ i ].href = links[ i ].href + '&';
} else {
links[ i ].href = links[ i ].href + '?';
}
links[ i ].href = links[ i ].href + 'rid=' + data.ref_id;
}
}
if ( data.dname.match(/\.(ru|su|рф)$/g) ) {
var rereg_links = document.querySelectorAll('.rereg');
for ( var i = 0; i < rereg_links.length; i++) {
rereg_links[ i ].style.display = 'inline';
}
}
}
var script = document.createElement('script');
var head = document.getElementsByTagName('head')[0];
script.src = 'https://parking.reg.ru/script/get_domain_data?domain_name=non-existing-host.haxx.se&rand=' + Math.random() + '&callback=ondata';
script.async = 1;
head.appendChild( script );</script><script>if ( 'non-existing-host.haxx.se'.match( /xn--/ ) && document.querySelectorAll ) {
var spans = document.querySelectorAll( 'span.puny, span.no-puny' ),
t = 'textContent' in document.body ? 'textContent' : 'innerText';
var domainName = document.title.match( /(xn--|[0-9]).+\.(xn--)[^\s]+/ )[0];
if ( domainName ) {
var domainNameUnicode = punycode.ToUnicode( domainName );
document.title = document.title.replace( domainName, domainNameUnicode );
}
for ( var i = 0; i < spans.length; i++) {
if ( spans[ i ].className.match( /^puny/ ) ) {
var text = spans[ i ][ t ];
text = punycode.ToUnicode( text );
spans[ i ][ t ] = text;
} else if ( spans[ i ].className.match( /^no-puny/ ) ) {
spans[ i ].style.display = 'none';
}
}
}</script><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=UA-55552418-3"></script><script>window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-55552418-3');</script><!-- Yandex.Metrika counter --><script type="text/javascript">(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(54200914, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});</script><noscript><div><img src="https://mc.yandex.ru/watch/54200914" style="position:absolute; left:-9999px;" alt=""></div></noscript><!-- /Yandex.Metrika counter --></body></html>
```Kevin DaudtKevin Daudthttps://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10814wiki is not responsive2024-03-20T20:01:52ZAngelo Verlain Shemawiki is not responsiveHello everyone!
I've been consulting the Alpine wiki a lot but found it's very unresponsive and almost unusable on mobile. I didn't know how else to report this issue and hope it will get to the relevant maintainers of the wiki.
For ex...Hello everyone!
I've been consulting the Alpine wiki a lot but found it's very unresponsive and almost unusable on mobile. I didn't know how else to report this issue and hope it will get to the relevant maintainers of the wiki.
For example here is the wiki on mobile:
| alpine wiki | postmarketos wiki |
| ------ | ------ |
| not responsive | responsive |
| ![Screenshot_20240218-050425](/uploads/f7e73dbc80b9f6c57852e28709119ba8/Screenshot_20240218-050425.png) | ![Screenshot_20240218-050419](/uploads/957ac6de222608a5c6d69fd3a8462db3/Screenshot_20240218-050419.png) |
Compared to the postmarketOS wiki:https://gitlab.alpinelinux.org/alpine/infra/aports-qa-bot/-/issues/32MIgrate away from deprecated methods in github.com/xanzy/go-gitlab2024-02-16T12:02:47ZKevin DaudtMIgrate away from deprecated methods in github.com/xanzy/go-gitlabgithub.com/xanzy/go-gitlab deprecated some methods / functions, migrate away from them:
* 0.92.0
* `GetMergeRequestChanges` -> `ListMergeRequesDiffs`
* 0.94.0
* `gitlab.String` -> `Ptr()`
* `gitlab.Time` -> `Ptr()`
* `gitlab.Boo...github.com/xanzy/go-gitlab deprecated some methods / functions, migrate away from them:
* 0.92.0
* `GetMergeRequestChanges` -> `ListMergeRequesDiffs`
* 0.94.0
* `gitlab.String` -> `Ptr()`
* `gitlab.Time` -> `Ptr()`
* `gitlab.Bool` -> `Ptr()`
* `gitlab.Int` -> `Ptr()`https://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10812Fix sender for e-mails from wiki2024-01-07T14:44:30ZKevin DaudtFix sender for e-mails from wikiNotification e-mails are received now from 'nginx <nginx@alpinelinux.org> Using MediaWiki mailer'
This should be adjusted.Notification e-mails are received now from 'nginx <nginx@alpinelinux.org> Using MediaWiki mailer'
This should be adjusted.https://gitlab.alpinelinux.org/alpine/infra/aports-turbo/-/issues/49Using aports-turbo for OpenWrt2024-01-04T14:50:37ZPaul SpoorenUsing aports-turbo for OpenWrtHi I'm an OpenWrt developer and Alpine user. For the longest of time we've tracked packages inside our wiki which comes with many drawbacks. Since I like the simple and clean approach of Alpine pkgs, I created a custom importer which add...Hi I'm an OpenWrt developer and Alpine user. For the longest of time we've tracked packages inside our wiki which comes with many drawbacks. Since I like the simple and clean approach of Alpine pkgs, I created a custom importer which adds OpenWrt packages.
I'm running a demo instance over and wanted to ask if Alpine people mind if we run a similar instance? I'm happy to mention that it originates from the Alpine project or whatever credits you desire.
* http://evernet.duckdns.org:21001/packagesCarlo LandmeterCarlo Landmeterhttps://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10811add cdn.alpinelinux.org2023-12-11T11:35:57ZNatanael Copaadd cdn.alpinelinux.orgI would like to have an `cdn.alpinelinux.org` to replace `cdn.alpinelinux.org/alpine`.
- [x] add cdn.a.o to DNS
- [ ] add http://cdn.alpinelinux.org/ to fastly
- [ ] fix certificate for https://cdn.alpinelinux.org
- [ ] make cdn.alpinel...I would like to have an `cdn.alpinelinux.org` to replace `cdn.alpinelinux.org/alpine`.
- [x] add cdn.a.o to DNS
- [ ] add http://cdn.alpinelinux.org/ to fastly
- [ ] fix certificate for https://cdn.alpinelinux.org
- [ ] make cdn.alpinelinux.org and dl-cdn.alpinelinux.org/alpine share the same cache (if possible) so we don cache same content twice.
The in intention is to use those URL's as default package repositories (replacing dl-cdn.a.o and getting rid of the `alpine/` path element):
```
https://cdn.alpinelinux.org/v3.19/main
https://cdn.alpinelinux.org/v3.19/community
```https://gitlab.alpinelinux.org/alpine/infra/docker/appstream-generator/-/issues/6asgen-config-generator doesn't include unreleased alpine versions where binar...2023-12-05T16:02:19ZOliver Smithasgen-config-generator doesn't include unreleased alpine versions where binary packages are already availableAs of writing, Alpine 3.19 is in rc3 state. Binary packages are available, but the version is not released yet.
The asgen-config-generator uses https://alpinelinux.org/releases.json to determine which releases to build appstream data fo...As of writing, Alpine 3.19 is in rc3 state. Binary packages are available, but the version is not released yet.
The asgen-config-generator uses https://alpinelinux.org/releases.json to determine which releases to build appstream data for, and so there currently is no appstream data for 3.19.
This isn't ideal for testing 3.19, alpine-appstream-downloader gets a 404 error when trying to fetch the appstream data files. I wrote a patch to make it try edge in that situation (https://gitlab.com/pabloyoyoista/alpine-appstream-downloader/-/merge_requests/2), but it will still hit the 404 once per run.
Maybe a releases_wip.json or something could be added, that includes the unreleased versions? Not sure what the best path to implement this would be, or if getting the 404 from everybody running alpine-appstream-downloader once is a problem at all. Documenting this for future reference.Pablo Correa GomezPablo Correa Gomezhttps://gitlab.alpinelinux.org/alpine/infra/alpine-mksite/-/issues/16explain colored dots meaning on2023-12-07T10:07:01Ztxt.fileexplain colored dots meaning onIn the "End of support" table column on https://alpinelinux.org/releases/ are colored dots. Sadly the whole page does not explain what the different colors mean.
I am puzzled about the meaning of the dots
* v3.16 has support status "sec...In the "End of support" table column on https://alpinelinux.org/releases/ are colored dots. Sadly the whole page does not explain what the different colors mean.
I am puzzled about the meaning of the dots
* v3.16 has support status "sec fixes" and a green dot.
* v3.15 has support status "sec fixes" and an orange dot.
Why does v3.16 have a green dot and v3.16 an orange when the support status is the same?
I understand why it it rendered that way because I understand what https://gitlab.alpinelinux.org/alpine/infra/alpine-mksite/-/blob/5b6615fe0655fb715266a3c1861fbca57b795cd0/_scripts/generate_release_branches.lua#L6 does. I do not understand why it is written that way.https://gitlab.alpinelinux.org/alpine/infra/alpine-mksite/-/issues/15use actual EOL date instead of index of array2024-01-07T15:24:32Ztxt.fileuse actual EOL date instead of index of arrayCurrently https://alpinelinux.org/releases/ shows that alpine Linux v3.15 is EOL but reciving the same support level as v3.16 (which is not EOL). Which datapoint should I trust more? The EOL date or the support state?
![Screenshot_2023-...Currently https://alpinelinux.org/releases/ shows that alpine Linux v3.15 is EOL but reciving the same support level as v3.16 (which is not EOL). Which datapoint should I trust more? The EOL date or the support state?
![Screenshot_2023-11-11_at_20-58-57_Alpine_release_branches_Alpine_Linux](/uploads/b9004392b0fc216a1bea32761b8434d0/Screenshot_2023-11-11_at_20-58-57_Alpine_release_branches_Alpine_Linux.png)
According to https://gitlab.alpinelinux.org/alpine/infra/alpine-mksite/-/blob/5b6615fe0655fb715266a3c1861fbca57b795cd0/_scripts/generate_release_branches.lua#L37 the support state is taken from the index of the array. This seems kind of a bad idea.
Sadly I am missing lua knowledge and have to many other project to send you a proper merge request. 😦Natanael CopaNatanael Copahttps://gitlab.alpinelinux.org/alpine/infra/aports-qa-bot/-/issues/28WarnProtectedBranch service is not being registered2023-09-11T18:36:30ZKevin DaudtWarnProtectedBranch service is not being registeredIt's missing in the [RegisterWebhookServices](https://gitlab.alpinelinux.org/alpine/infra/aports-qa-bot/-/blob/master/Services/services.go#L22) method.It's missing in the [RegisterWebhookServices](https://gitlab.alpinelinux.org/alpine/infra/aports-qa-bot/-/blob/master/Services/services.go#L22) method.https://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10809connectivity issues in accessing https://nl.alpinelinux.org/alpine/edge/commu...2023-09-11T05:56:27ZSunny Yadavconnectivity issues in accessing https://nl.alpinelinux.org/alpine/edge/community/I am using https://nl.alpinelinux.org/alpine/edge/community/ to access Alpine Linux repositories but I am getting operation timed out error and my build is failing. However if I use https://dl-cdn.alpinelinux.org/alpine/edge/community it...I am using https://nl.alpinelinux.org/alpine/edge/community/ to access Alpine Linux repositories but I am getting operation timed out error and my build is failing. However if I use https://dl-cdn.alpinelinux.org/alpine/edge/community it works correctly. What is the reason? Does the new URL https://dl-cdn.alpinelinux.org/alpine/edge/community safe to use and what is the difference between the two??https://gitlab.alpinelinux.org/alpine/infra/aports-turbo/-/issues/48Add functionality to remove misflagged packages2024-02-28T10:38:30ZKrassy Boykinovkboykinov@teamcentrixx.comAdd functionality to remove misflagged packagesSometimes the flagged page of aports-turbo (https://pkgs.alpinelinux.org/flagged) can contain bogus information, it seems useful for me to introduce some kind of removal process to aid in general validity of the said service.
There are ...Sometimes the flagged page of aports-turbo (https://pkgs.alpinelinux.org/flagged) can contain bogus information, it seems useful for me to introduce some kind of removal process to aid in general validity of the said service.
There are multiple types of wrong flags:
1. Non version number content:
![spam](/uploads/b08f250aaf96278fd15fefab7b2873dc/spam.png)
2. Wrong version number content:
![wrong](/uploads/cf9574072f24a72adf7329dbc7cbf2d3/wrong.png)
3. Dev version marked as release by Anitya (mapping error on their platform):
![anitya](/uploads/29004ab4512778f0c9ac8447f68d0850/anitya.png)
<br>
<br>
What have i thought of?
As there are multiple causes of the mismatched flag data, multiple sulutions are proposed:
* Non Solution: The admin has to remove the entries by hand from the SQL database (does not happen atm)
* Solution 1: Removing the userbased flag functionality and instead referencing to Anitya for flagging (after the Flag button click)
| pros | cons |
| ------ | ------ |
| light implementation demand | some enterprise users have time windows and possibly would not flag the package at all |
| bar for spam flaggers rises, because an account has to be created at Anitya | does not directly aid in removing existing bad entries |
* Solution 2: Adding a "report false positive" button, that notifies the maintainer of the package to confirm the false positive
| pros | cons |
| ------ | ------ |
| safegurad against bot-based deletes | if maintainer is inactive, the confirmation link will (probably) never be clicked on |
| | does not handle unmaintained packages well |
* Sulution 3: Solution_2() + notifying active maintainers, that have write permission to `/aports` repo after a timeout or directly if without maintainer
| pros | cons |
| ------ | ------ |
| safegurad against bot-based deletes | maybe harder to implement |
| confirmation links of inactive maintainers are forwardable to active ones | |
| handles unmaintained packages | |
Comments welcome!
P.S. Whether one of these solutions is approached, displaying a tooltip with a link and one to two lines of explanation towards Anitya would help imo.https://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10796repo staging implementation2023-04-26T15:37:29ZGhost Userrepo staging implementationcurrently, when rebuilding things in multiple repositories, main/community/testing all upload separately.
when doing large rebuilds where e.g. an soname changes, this breaks the repositories until the're all finished building; e.g. main...currently, when rebuilding things in multiple repositories, main/community/testing all upload separately.
when doing large rebuilds where e.g. an soname changes, this breaks the repositories until the're all finished building; e.g. main uploads a new `icu` and community becomes uninstallable, because none of the packages can find the old icu (it was deleted after upload of new).
it would be nice if main/community/testing did not upload individually.
that would have the downside of 'failing testing/ blocks upgrades for everything else', but we generally don't allow the builders to be blocked very long (e.g. disable things to get other things to upload if there's no way for something to build, ..) , but imo that is fine. it's better for the repos to be generally consistent with upgrades rather than 'main/ uploads a bit faster and saves a tiny bit of time'. consistency makes much more sense than this minor speed gain for higher-priority repos.
the harder implementation is to have a 'switch' that can be toggled, to temporarily swap between the two behaviours, for big rebuilds only. but this would need the people making the changes to have access to that switch, e.g. usually that would be me for large rebuilds. i don't mind manual staging, but it is more complex (and needs more design, etc) than just making everything upload at once.https://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10795Add cdn.alpinelinux.org to TLS certificates on fastly2023-04-12T17:13:55ZKevin DaudtAdd cdn.alpinelinux.org to TLS certificates on fastlyhttps://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10794Add DNS record for cdn.alpinelinux.org2023-04-12T17:12:53ZKevin DaudtAdd DNS record for cdn.alpinelinux.orghttps://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10793Add cdn.alpinelinux.org to fastly2023-04-12T17:12:38ZKevin DaudtAdd cdn.alpinelinux.org to fastlyhttps://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10792Shorter URLs for CDN (cdn.alpinelinux.org)2023-04-12T17:13:55ZNatanael CopaShorter URLs for CDN (cdn.alpinelinux.org)Would be nice if we could move to https://dl-cdn.alpinelinux.org/alpine/ -> https://cdn.alpinelinux.org/
Would still need to keep the old URL for backwards compatibility (forever).Would be nice if we could move to https://dl-cdn.alpinelinux.org/alpine/ -> https://cdn.alpinelinux.org/
Would still need to keep the old URL for backwards compatibility (forever).https://gitlab.alpinelinux.org/alpine/infra/infra/-/issues/10791API for querying package versions (feature request)2023-11-20T18:37:51ZWes DeanAPI for querying package versions (feature request)I would like the ability to interact with a stable RESTful API to determine versions for packages available for Alpine. For example, if I were to make a request for `bash` on `x86_64` for `v3.17`, it would return `5.2.15-r0` in some for...I would like the ability to interact with a stable RESTful API to determine versions for packages available for Alpine. For example, if I were to make a request for `bash` on `x86_64` for `v3.17`, it would return `5.2.15-r0` in some format (e.g., a JSON array that one could parse with `jq`).
Currently, I'm able to acquire version information by querying pkgs.alpinelinux.org and using an xpath query to extract the version:
```bash
url="https://pkgs.alpinelinux.org/packages?name=${package_name}&branch=${branch}&${repo}=&arch=${arch}&maintainer=${maintainer}"
curl -s "$url" | xmllint --html --xpath '//td[@class="version"]/text()' - 2> /dev/null
```
However, this is a hack and would break if the HTML were to change.
I thought about running `apk search -e` on the requested package; however, that would limit the ability to query multiple (branch, architecture, mainntainer) down to a single platform (presumably the one where the command was running). I also considered an over-engineered matrix of Docker images that could be instantiated and queried, but, you know, overhead and such.. Then I thought about some kind of symlink wizardry with the package cache (e.g., a Docker image with the package caches copied onto it; the entrypoint would be passed the details (branch, arch, etc.) and then create a symlink (or move) so that `apk search` read for packages on the requested platform (e.g., passing it v3.17 on amd64 would cause `apk search` to search on the `v3.17 on amd64` packages even though the container's really running on x86_64).
Then I browsed through the apk source in the repo and thought about querying the cached database(s); however, that's really just reinventing the wheel (i.e., `apk search`).
I believe that there's likely an API being queried by the site. Maybe what's really needed is some documentation (e.g., add `&format=json` to the URL (I'm making this up as an example)). It's also possible that the answer I'm seeking is in a repo somewhere, but I haven't found it (yet). I also searched through the issues here and didn't find what I was looking for.
Also, I looked into Repology and tries to find a nice, clean way of getting where I want to go and I just ran into brick wall after brick wall. I know Renovate is able to query Repology -- I just haven't figured out how they do it (yet).
My use case is that I want the best of both worlds in terms of being able to pin versions of packages in Docker images while not having to go through and figure versions out every time a new minor release of Alpine comes out. I'm getting there by supporting the inclusion of a file called `apk.txt` (inspired by Cloud Formation's `apt.txt` for Debian packages) which could be iterated through and result in a `apk-lock.txt` file (like package.json => package-lock.json for npm). Users of the tool would maintain the apk.txt file, when the tool was run, it would maintain the apk-lock.txt file (which would be checked into the project's repo), and when someone wanted to build an image using pinned package file, they would do something like `xargs apk add --no-cache < apk-lock.txt`. My [work-in-progress](https://github.com/wesley-dean-flexion/alpine_package_pinner) is available on GitHub. Tools like [hadolint](https://github.com/hadolint/hadolint) tend to complain when one runs `apk add bash` without the version pinned as pinning versions makes repeatable builds, SBOM, etc. much easier and the resulting images more predictable. However, when something like Dependabot comes along and bumps minor Alpine releases, the package versions often change. Therefore, the workflow for this is Dependabot (or Renovate or whatever) changes the Alpine release and creates a new PR; a "test" for the PR would update the package versions and add the updated pinned package file to the PR, then the rest of the tests would run as usual (the order doesn't matter as much as the changes wind up triggering the workflow to run again). When all of the tests are done, the PR would be buildable without additional human intervention while the packages' versions are pinned in a file that can be inspected. Boom. Best of both worlds.
Anyways, if there's some documentation that needs to be written, I'm happy to do the writing -- I just need to know how to get from here to there.
Thank you for your time and consideration.https://gitlab.alpinelinux.org/alpine/infra/alpine-mksite/-/issues/14Include Alpine into rpi-imager2024-03-27T19:28:55ZmacmpiInclude Alpine into rpi-imager[`rpi-imager`](https://www.raspberrypi.com/news/raspberry-pi-imager-imaging-utility/) is now default multi-platform tool from Pi Foundation to seamlessly generate installation media for Pi-compatible distributions.\
Many distributions as...[`rpi-imager`](https://www.raspberrypi.com/news/raspberry-pi-imager-imaging-utility/) is now default multi-platform tool from Pi Foundation to seamlessly generate installation media for Pi-compatible distributions.\
Many distributions aside Pi OS are supported (Ubuntu variants, Manjaro, Apertis, RISC OS,...).
Being listed & supported is very easy, with just a couple of short `.json` files as described [here](https://github.com/raspberrypi/rpi-imager/issues/545#issuecomment-1408682589), one of which being hosted/updated on original distribution web site (hence my post here).\
According to instructions, request to get listed needs to come from @ncopa I guess.
Being supported in that tool will probably drive more Pi users to Alpine distribution.\
Any interest?3.19.0