### See https://github.com/lindell/multi-gitter#config-file for all options | |
# The maximum number of concurrent runs. | |
concurrent: 1 | |
# Fork the repository instead of creating a new branch on the same owner. | |
### Needed to operate on repositories where you don't have enought permissions | |
fork: true | |
# If set, make the fork to the defined value. Default behavior is for the fork to be on the logged in user. | |
### Set to a test organisation to not polute your GitHub profile with many forks | |
fork-owner: jenkins-infra-team | |
# # # The name, including owner of a GitHub repository in the format "ownerName/repoName". | |
# repo: | |
# # - mylittlecorp/jenkins-infra-test-plugin | |
# # - lemeurherve/jenkins-infra-test-plugin | |
# - jenkinsci/jenkins-infra-test-plugin | |
# # # - jenkinsci/test-results-aggregator-plugin | |
# # The name of a GitHub organization. All repositories in that organization will be used. | |
org: | |
- jenkinsci | |
# Skip changes on specified repositories, the name is including the owner of repository in the format "ownerName/repoName". | |
skip-repo: | |
- jenkins-infra/jenkins.io | |
- jenkins-infra/cn.jenkins.io | |
- jenkins-infra/keycloak-theme |
#!/usr/bin/env bash | |
# Usage: | |
# | |
# Requirements: | |
# - https://github.com/lindell/multi-gitter | |
# - https://github.com/comby-tools/comby | |
# - A GitHub Personal Access Token in GITHUB_TOKEN env var | |
# TODO: duplicate all example with `core`|`plugins` instead of `Plugins`, and `%2F` instead of `/` | |
# A) [](https://ci.jenkins.io/job/plugins/job/jenkins-infra-test-plugin/job/master/) | |
# B) [](https://ci.jenkins.io/job/Plugins/job/simple-theme-plugin/job/main/) | |
# C) image:https://ci.jenkins.io/buildStatus/icon?job=Plugins/test-results-aggregator-plugin/master[https://github.com/jenkinsci/role-strategy-plugin/releases/latest] | |
# D) [](https://ci.jenkins.io/buildStatus/icon?job=Plugins/jenkins-infra-test-plugin/master) | |
# F) image:https://ci.jenkins.io/buildStatus/icon?job=Plugins/test-results-aggregator-plugin/master[https://github.com/jenkinsci/role-strategy-plugin/releases/latest] | |
# G) [](https://ci.jenkins.io/job/Plugins/job/graphql-server-plugin/job/master/) | |
# H) [](https://ci.jenkins.io/job/Plugins/job/muuri-api-plugin/job/master/) | |
# I) [](https://ci.jenkins.io/job/Core/job/acceptance-test-harness/job/master/) | |
# https://github.com/jenkinsci/scm-filter-branch-pr-plugin/blob/ac8eeefa235a55fbdbddb19bb086e50e06081d4b/DEVELOPER_README.md?plain=1#L59 | |
# J) [build-icon]: https://ci.jenkins.io/buildStatus/icon?job=Plugins/scm-filter-branch-pr-plugin/master | |
# https://github.com/jenkinsci/log-command-plugin/blame/e8e78fa1f8de2efc1ebd7613682214b8dcb1c1bf/README.adoc#L14 | |
# K) image:https://ci.jenkins.io/buildStatus/icon?job=Plugins%2Flog-command-plugin%2Fmaster[] | |
# https://github.com/Mojang/git-parameter-plugin/blame/a466390e7f27fb205bec874cec5dfed946a13d57/README.textile#L14 | |
# L) * The Jenkins-CI of this plugin can be seen at "DEV@cloud":https://ci.jenkins.io/job/Plugins/job/git-parameter-plugin/. The status is <a href='https://ci.jenkins.io/job/Plugins/job/git-parameter-plugin/'><img src='https://ci.jenkins.io/buildStatus/icon?job=Plugins/git-parameter-plugin/master'></a> | |
mardownreplacement="[**\2** builds status on ci.jenkins.io](https:\/\/ci.jenkins.io\/job\/\1\/job\/\2\/job\/\3)" | |
adocreplacement="link:https:\/\/ci.jenkins.io\/job\/\1\/job\/\2\/job\/\3[**\2** builds status on ci.jenkins.io]" | |
# On .md files | |
find ./ -type f -name "*.md" -exec sed -i '' \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(plugins\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)%2F\(.*\)%2F\(.*\))].*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)%2F\(.*\)%2F\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\))/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\)/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(core\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)%2F\(.*\)%2F\(.*\))].*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)%2F\(.*\)%2F\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\))/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\)/${mardownreplacement}/gI" \ | |
-e 's/\/job\/master))/\/job\/master)/gI' \ | |
-e "s/master'><\/job\/a>/master/gI" {} \; | |
# On .markdown files | |
find ./ -type f -name "*.markdown" -exec sed -i '' \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(core\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(plugins\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)%2F\(.*\)%2F\(.*\))].*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)%2F\(.*\)%2F\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\))/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\)/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(core\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)%2F\(.*\)%2F\(.*\))].*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)%2F\(.*\)%2F\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\))/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\)/${mardownreplacement}/gI" \ | |
-e 's/\/job\/master))/\/job\/master)/gI' \ | |
-e "s/master'><\/job\/a>/master/gI" {} \; | |
# On .adoc files | |
find ./ -type f -name "*.adoc" -exec sed -i '' \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(core\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(plugins\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)%2F\(.*\)%2F\(.*\))].*/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)%2F\(.*\)%2F\(.*\)\[.*/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\)\[.*/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\))/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\)/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(core\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)%2F\(.*\)%2F\(.*\))].*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)%2F\(.*\)%2F\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\))/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\)/${mardownreplacement}/gI" \ | |
-e 's/\/job\/master))/\/job\/master)/gI' \ | |
-e "s/master'><\/job\/a>/master/gI" {} \; | |
find ./ -type f -name "*.textile" -exec sed -i '' \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(core\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(plugins\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)%2F\(.*\)%2F\(.*\))].*/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)%2F\(.*\)%2F\(.*\)\[.*/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\)\[.*/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\))/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(Plugins\)\/\(.*\)\/\(.*\)/${adocreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/job\/\(core\)\/job\/\(.*\)\/job\/\(.*\)\/badge.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)%2F\(.*\)%2F\(.*\))].*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)%2F\(.*\)%2F\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\)\[.*/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\))/${mardownreplacement}/gI" \ | |
-e "s/^.*ci\.jenkins\.io\/buildStatus\/icon\?.*job=\(core\)\/\(.*\)\/\(.*\)/${mardownreplacement}/gI" \ | |
-e 's/\/job\/master))/\/job\/master)/gI' \ | |
-e "s/master'><\/job\/a>/master/gI" {} \; | |
# create and push a branch for the modifications | |
git checkout -b helpdesk-3013 | |
git add . | |
git commit -S -s -m "cleanup(doc): removal of embedabble-build-status badge(s)" | |
git push -u origin helpdesk-3013 | |
# create pull request | |
gh pr create --head helpdesk-3013 --title "cleanup(doc): removal of embedabble-build-status badge(s)" --label "ci-skip" --body "As explained in [this announcement](https://github.com/jenkinsci/embeddable-build-status-plugin/issues/82), the `embeddable-build-status` plugin will be removed from the ci.jenkins.io public instance, thus the badge(s) in this repository won't work anymore. <br />This pull request made in bulk for the Jenkins Infrastructure team aims at replacing these badges by a link to the builds status on ci.jenkins.io" |
your script does not prevent duplicates FYI if PR is already closed 😉
But good to know about print instead of run.
Yes I didn't bothered to check for it first but it should be doable.
Note that with the run
command this behaviour is configurable. (Still the problem of signed commits though)
The workaround for signed commits is to use git-type: cmd
for run
The workaround for signed commits is to use
git-type: cmd
forrun
I tried this without success, alas.
Oh 😢
@lemeurherve what if you used
git config --global commit.gpgsign true
Signing with the go lib is doable, AFAIU a SignKey should be added after the Author
here, but I didn't found how to declare an openpgp.Entity
EDIT: commented on the issue you've opened.
@lemeurherve what if you used
git config --global commit.gpgsign true
I think I've tried that too.
I needed another fix for multi gitter print at least:
Although I have a working script.
Multi-gitter removes some complexity although sucks that run
does not support git commit signing. Cause I needed to write a bunch of shell script myself 😅
See my updated gitter: https://gist.github.com/jetersen/b67a85f66bf8a34cca6b41d887dbd9e5
Executed with:
multi-gitter print sed-and-push.sh --config=multi-gitter-config.yaml
Note: tried with
run
but couldn't get my commits signed