├── config_defaults.yml ├── .gitignore ├── .github ├── labeler.yml ├── CODEOWNERS ├── SECURITY.md ├── workflows │ ├── labeler.yml │ ├── release.yml │ ├── main.yml │ └── update.yml ├── dependabot.yml └── release.yml ├── managed_modules_openvox.yml ├── renovate.json ├── modulesync.yml ├── moduleroot ├── .gitignore.erb ├── .github │ ├── labeler.yml.erb │ ├── CODEOWNERS.erb │ ├── workflows │ │ ├── labeler.yml.erb │ │ ├── markdownlint.yml.erb │ │ ├── release.yml.erb │ │ └── shellcheck.yml.erb │ ├── dependabot.yml.erb │ └── release.yml.erb ├── .markdownlint-cli2.yaml.erb ├── .markdownlint.yaml.erb ├── Gemfile.erb ├── Rakefile.erb ├── RELEASE.md.erb └── renovate.json.erb ├── managed_modules.yml ├── CONTRIBUTING.md ├── Gemfile ├── Rakefile ├── RELEASE.md ├── CHANGELOG.md ├── README.md └── LICENSE /config_defaults.yml: -------------------------------------------------------------------------------- 1 | --- 2 | .markdownlint.json: 3 | delete: true 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Gemfile.lock 2 | modules/ 3 | .vendor/ 4 | vendor/ 5 | .bundle/ 6 | -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- 1 | --- 2 | skip-changelog: 3 | - head-branch: ['^release-*'] 4 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # No matter which file got changed, request a review from the main developers 2 | * @voxpupuli/containerimages 3 | -------------------------------------------------------------------------------- /.github/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Vox Pupuli Security Policy 2 | 3 | Our vulnerabilities reporting process is at https://voxpupuli.org/security/ 4 | -------------------------------------------------------------------------------- /managed_modules_openvox.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - container-openvoxserver 3 | - container-openvoxdb 4 | - container-openvoxagent 5 | - container-openbolt 6 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:recommended" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /modulesync.yml: -------------------------------------------------------------------------------- 1 | --- 2 | namespace: voxpupuli 3 | git_base: 'git@github.com:' 4 | branch: modulesync 5 | message: "Update from voxpupuli/container_modulesync_config" 6 | -------------------------------------------------------------------------------- /moduleroot/.gitignore.erb: -------------------------------------------------------------------------------- 1 | # Managed by modulesync - DO NOT EDIT 2 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 3 | 4 | .bundle/ 5 | .vendor/ 6 | vendor/ 7 | Gemfile.lock 8 | -------------------------------------------------------------------------------- /moduleroot/.github/labeler.yml.erb: -------------------------------------------------------------------------------- 1 | --- 2 | # Managed by modulesync - DO NOT EDIT 3 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 4 | 5 | skip-changelog: 6 | - head-branch: ['^release-*'] 7 | -------------------------------------------------------------------------------- /managed_modules.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - container-commitlint 3 | - container-onceover 4 | - container-r10k 5 | - container-r10k-webhook 6 | - container-renovate 7 | - container-semantic-release 8 | - container-test 9 | - container-voxbox 10 | -------------------------------------------------------------------------------- /moduleroot/.github/CODEOWNERS.erb: -------------------------------------------------------------------------------- 1 | # Managed by modulesync - DO NOT EDIT 2 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 3 | 4 | # No matter which file got changed, request a review from the main developers 5 | * @<%= @configs[:namespace] %>/container-maintainers 6 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Release process 2 | 3 | Update the CHANGELOG.md. This can be done using the 4 | [github-changelog-generator](https://github.com/github-changelog-generator/github-changelog-generator). 5 | 6 | ```bash 7 | github_changelog_generator -u voxpupuli -p modulesync_config 8 | ``` 9 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source ENV['GEM_SOURCE'] || "https://rubygems.org" 4 | 5 | gem 'modulesync', '~> 4.0' 6 | gem 'rake', '~> 13.0' 7 | gem 'github_changelog_generator', '~> 1.16' 8 | ### dependencies 9 | gem 'faraday-retry', '~> 2.2' 10 | gem 'faraday-multipart', '~> 1.0' 11 | -------------------------------------------------------------------------------- /moduleroot/.markdownlint-cli2.yaml.erb: -------------------------------------------------------------------------------- 1 | --- 2 | # Managed by modulesync - DO NOT EDIT 3 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 4 | 5 | ignores: 6 | - .github/** 7 | - .idea/** 8 | - .vendor/** 9 | - .vscode/** 10 | - CHANGELOG.md 11 | - test/** 12 | - vendor/** 13 | -------------------------------------------------------------------------------- /moduleroot/.markdownlint.yaml.erb: -------------------------------------------------------------------------------- 1 | --- 2 | # Managed by modulesync - DO NOT EDIT 3 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 4 | 5 | default: true 6 | 7 | line-length: 8 | line_length: 210 9 | 10 | no-inline-html: 11 | allowed_elements: 12 | - br 13 | 14 | descriptive-link-text: false 15 | -------------------------------------------------------------------------------- /moduleroot/Gemfile.erb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Managed by modulesync - DO NOT EDIT 4 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 5 | 6 | source ENV['GEM_SOURCE'] || 'https://rubygems.org' 7 | 8 | group :release do 9 | gem 'faraday-retry', '~> 2.1', require: false 10 | gem 'github_changelog_generator', '~> 1.16.4', require: false 11 | end 12 | -------------------------------------------------------------------------------- /.github/workflows/labeler.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🏷️ Pull Request Labeler 3 | 4 | on: 5 | - pull_request_target 6 | 7 | permissions: 8 | contents: read 9 | 10 | jobs: 11 | labeler: 12 | name: Labeler 13 | runs-on: ubuntu-latest 14 | if: github.repository_owner == 'voxpupuli' 15 | permissions: 16 | pull-requests: write 17 | steps: 18 | - uses: actions/labeler@v6 19 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # raise PRs for gem updates 4 | - package-ecosystem: bundler 5 | directory: "/" 6 | schedule: 7 | interval: daily 8 | time: "13:00" 9 | open-pull-requests-limit: 10 10 | 11 | # Maintain dependencies for GitHub Actions 12 | - package-ecosystem: github-actions 13 | directory: "/" 14 | schedule: 15 | interval: daily 16 | time: "13:00" 17 | open-pull-requests-limit: 10 18 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🚀 Release 3 | 4 | on: 5 | push: 6 | tags: 7 | - '*' 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | release: 14 | name: Release 15 | runs-on: ubuntu-latest 16 | permissions: 17 | contents: write 18 | steps: 19 | - name: Create Release 20 | env: 21 | GH_TOKEN: ${{ github.token }} 22 | run: gh release create --repo ${{ github.repository }} ${{ github.ref_name }} --generate-notes 23 | -------------------------------------------------------------------------------- /moduleroot/.github/workflows/labeler.yml.erb: -------------------------------------------------------------------------------- 1 | --- 2 | # Managed by modulesync - DO NOT EDIT 3 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 4 | 5 | name: 🏷️ Pull Request Labeler 6 | 7 | on: 8 | - pull_request_target 9 | 10 | permissions: 11 | contents: read 12 | 13 | jobs: 14 | labeler: 15 | name: Labeler 16 | runs-on: ubuntu-latest 17 | if: github.repository_owner == 'voxpupuli' 18 | permissions: 19 | pull-requests: write 20 | steps: 21 | - uses: actions/labeler@v6 22 | -------------------------------------------------------------------------------- /moduleroot/.github/workflows/markdownlint.yml.erb: -------------------------------------------------------------------------------- 1 | --- 2 | # Managed by modulesync - DO NOT EDIT 3 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 4 | 5 | name: Markdown Lint 6 | 7 | on: 8 | pull_request: 9 | branches: 10 | - main 11 | workflow_dispatch: 12 | 13 | permissions: 14 | contents: read 15 | 16 | jobs: 17 | markdown-lint: 18 | runs-on: ubuntu-latest 19 | steps: 20 | - uses: actions/checkout@v6 21 | - uses: DavidAnson/markdownlint-cli2-action@v21 22 | with: 23 | globs: '**/*.md' 24 | -------------------------------------------------------------------------------- /moduleroot/.github/workflows/release.yml.erb: -------------------------------------------------------------------------------- 1 | --- 2 | # Managed by modulesync - DO NOT EDIT 3 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 4 | 5 | name: 🚀 Release 6 | 7 | on: 8 | push: 9 | tags: 10 | - '*' 11 | 12 | permissions: 13 | contents: read 14 | 15 | jobs: 16 | release: 17 | name: Release 18 | runs-on: ubuntu-latest 19 | permissions: 20 | contents: write 21 | steps: 22 | - name: Create Release 23 | env: 24 | GH_TOKEN: ${{ github.token }} 25 | run: gh release create --repo ${{ github.repository }} ${{ github.ref_name }} --generate-notes 26 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: noop run 2 | 3 | on: 4 | workflow_dispatch: {} 5 | pull_request: {} 6 | push: 7 | branches: 8 | - master 9 | 10 | permissions: 11 | contents: read 12 | 13 | jobs: 14 | unit: 15 | runs-on: ubuntu-latest 16 | name: Run msync --noop against all modules 17 | steps: 18 | - uses: actions/checkout@v6 19 | 20 | - name: Setup ruby 21 | uses: ruby/setup-ruby@v1 22 | with: 23 | ruby-version: 3.4.7 24 | bundler-cache: true 25 | 26 | - name: Run msync --noop 27 | run: bundle exec msync update --noop --git-base=https://github.com/ 28 | -------------------------------------------------------------------------------- /moduleroot/.github/dependabot.yml.erb: -------------------------------------------------------------------------------- 1 | --- 2 | # Managed by modulesync - DO NOT EDIT 3 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 4 | 5 | version: 2 6 | updates: 7 | # raise PRs for gem updates 8 | - package-ecosystem: bundler 9 | directory: "/" 10 | schedule: 11 | interval: daily 12 | time: "13:00" 13 | open-pull-requests-limit: 10 14 | 15 | # Maintain dependencies for GitHub Actions 16 | - package-ecosystem: github-actions 17 | directory: "/" 18 | schedule: 19 | interval: daily 20 | time: "13:00" 21 | open-pull-requests-limit: 10 22 | 23 | - package-ecosystem: "docker" 24 | directory: "/" 25 | schedule: 26 | interval: "daily" 27 | time: "13:00" 28 | open-pull-requests-limit: 10 29 | -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes 3 | 4 | changelog: 5 | exclude: 6 | labels: 7 | - duplicate 8 | - invalid 9 | - modulesync 10 | - question 11 | - skip-changelog 12 | - wont-fix 13 | - wontfix 14 | - github_actions 15 | 16 | categories: 17 | - title: Breaking Changes 🛠 18 | labels: 19 | - backwards-incompatible 20 | 21 | - title: New Features 🎉 22 | labels: 23 | - enhancement 24 | 25 | - title: Bug Fixes 🐛 26 | labels: 27 | - bug 28 | 29 | - title: Documentation Updates 📚 30 | labels: 31 | - documentation 32 | - docs 33 | 34 | - title: Dependency Updates ⬆️ 35 | labels: 36 | - dependencies 37 | 38 | - title: Other Changes 39 | labels: 40 | - "*" 41 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Managed by modulesync - DO NOT EDIT 4 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 5 | 6 | begin 7 | require 'rubygems' 8 | require 'github_changelog_generator/task' 9 | rescue LoadError 10 | # github_changelog_generator isn't available, so we won't define a rake task with it 11 | else 12 | GitHubChangelogGenerator::RakeTask.new :changelog do |config| 13 | config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file." 14 | config.exclude_labels = %w[duplicate question invalid wontfix wont-fix skip-changelog modulesync github_actions] 15 | config.user = 'voxpupuli' 16 | config.project = 'container_modulesync_configs' 17 | # get branch name from git and strip off any prefixes (e.g. 'release-') 18 | config.future_release = `git rev-parse --abbrev-ref HEAD`.strip.split('-', 2).last 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /moduleroot/Rakefile.erb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Managed by modulesync - DO NOT EDIT 4 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 5 | 6 | begin 7 | require 'rubygems' 8 | require 'github_changelog_generator/task' 9 | rescue LoadError 10 | # github_changelog_generator isn't available, so we won't define a rake task with it 11 | else 12 | GitHubChangelogGenerator::RakeTask.new :changelog do |config| 13 | config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file." 14 | config.exclude_labels = %w[duplicate question invalid wontfix wont-fix skip-changelog modulesync github_actions] 15 | config.user = '<%= @configs[:namespace] %>' 16 | config.project = '<%= @configs[:puppet_module] %>' 17 | # get branch name from git and strip off any prefixes (e.g. 'release-') 18 | config.future_release = `git rev-parse --abbrev-ref HEAD`.strip.split('-', 2).last 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /.github/workflows/update.yml: -------------------------------------------------------------------------------- 1 | name: 🤖 Update 2 | 3 | on: 4 | workflow_dispatch: {} 5 | 6 | permissions: 7 | contents: read 8 | 9 | jobs: 10 | update-all-voxpupuli-modules: 11 | runs-on: ubuntu-latest 12 | name: "🦊 Vox Pupuli: msync all" 13 | steps: 14 | - uses: actions/checkout@v6 15 | 16 | - name: Setup ruby 17 | uses: ruby/setup-ruby@v1 18 | with: 19 | ruby-version: 3.4.7 20 | bundler-cache: true 21 | 22 | - name: Run msync 23 | env: 24 | GIT_AUTHOR_NAME: 'VoxBox' 25 | GIT_AUTHOR_EMAIL: "${{ github.repository_owner }}@users.noreply.github.com" 26 | run: | 27 | git config --global user.name "VoxBot" 28 | git config --global user.email "voxbot@voxpupuli.org" 29 | export GITHUB_TOKEN=${{ secrets.VOXPUPULI_PAT }} 30 | bundle exec msync update \ 31 | --pr \ 32 | --pr-labels modulesync \ 33 | --pr-title Modulesync \ 34 | --git-base="https://github.com/" 35 | -------------------------------------------------------------------------------- /moduleroot/.github/release.yml.erb: -------------------------------------------------------------------------------- 1 | --- 2 | # Managed by modulesync - DO NOT EDIT 3 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 4 | 5 | # https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes 6 | 7 | changelog: 8 | exclude: 9 | labels: 10 | - duplicate 11 | - invalid 12 | - modulesync 13 | - question 14 | - skip-changelog 15 | - wont-fix 16 | - wontfix 17 | - github_actions 18 | 19 | categories: 20 | - title: Breaking Changes 🛠 21 | labels: 22 | - backwards-incompatible 23 | 24 | - title: New Features 🎉 25 | labels: 26 | - enhancement 27 | 28 | - title: Bug Fixes 🐛 29 | labels: 30 | - bug 31 | 32 | - title: Documentation Updates 📚 33 | labels: 34 | - documentation 35 | - docs 36 | 37 | - title: Dependency Updates ⬆️ 38 | labels: 39 | - dependencies 40 | 41 | - title: Other Changes 42 | labels: 43 | - "*" 44 | -------------------------------------------------------------------------------- /RELEASE.md: -------------------------------------------------------------------------------- 1 | # Release 2 | 3 | ## On a fork 4 | 5 | Please follow these instructions carefully. 6 | Ensure that you name the branch precisely as `release-vX.Y.Z` 7 | since this nomenclature is crucial for obtaining the `future_version` in the changelog. 8 | Your attention to this specific branch naming convention is essential for accurate version tracking in the changelog. 9 | 10 | ```shell 11 | export RELEASE_VERSION="X.Y.Z" 12 | git switch main 13 | git pull --rebase 14 | git switch -c release-v$RELEASE_VERSION 15 | 16 | bundle config set --local path vendor/bundle 17 | bundle config set --local with 'release' 18 | bundle install 19 | 20 | CHANGELOG_GITHUB_TOKEN="token_MC_tokenface" bundle exec rake changelog 21 | 22 | git commit --all --message "Release v${RELEASE_VERSION}" 23 | git push --set-upstream origin HEAD 24 | ``` 25 | 26 | Then open a PR, discuss and merge. 27 | 28 | ## After the merge, as a maintainer on upstream 29 | 30 | ```shell 31 | git switch main 32 | git pull --rebase 33 | git tag v$RELEASE_VERSION -m "v$RELEASE_VERSION" 34 | git push --tags 35 | ``` 36 | -------------------------------------------------------------------------------- /moduleroot/.github/workflows/shellcheck.yml.erb: -------------------------------------------------------------------------------- 1 | --- 2 | # Managed by modulesync - DO NOT EDIT 3 | # https://voxpupuli.org/docs/updating-files-managed-with-modulesync/ 4 | 5 | name: 🚦 CI / Shell Check 6 | 7 | on: 8 | pull_request: 9 | branches: 10 | - main 11 | workflow_dispatch: 12 | 13 | permissions: 14 | contents: read 15 | 16 | jobs: 17 | shellcheck: 18 | name: 'Shell Check' 19 | runs-on: ubuntu-latest 20 | permissions: 21 | security-events: write 22 | actions: read 23 | steps: 24 | - name: Repository checkout 25 | uses: actions/checkout@v6 26 | with: 27 | # Differential ShellCheck requires full git history 28 | fetch-depth: 0 29 | 30 | - id: ShellCheck 31 | name: Differential ShellCheck 32 | uses: redhat-plumbers-in-action/differential-shellcheck@v5 33 | with: 34 | scan-directory: '.' 35 | 36 | - if: always() 37 | name: Upload artifact with ShellCheck defects in SARIF format 38 | uses: actions/upload-artifact@v5 39 | with: 40 | name: Differential ShellCheck SARIF 41 | path: ${{ steps.ShellCheck.outputs.sarif }} 42 | -------------------------------------------------------------------------------- /moduleroot/RELEASE.md.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Release 4 | 5 | ## On a fork 6 | 7 | Please follow these instructions carefully. 8 | Ensure that you name the branch precisely as `release-vX.Y.Z` 9 | since this nomenclature is crucial for obtaining the `future_version` in the changelog. 10 | Your attention to this specific branch naming convention is essential for accurate version tracking in the changelog. 11 | 12 | ```shell 13 | export RELEASE_VERSION="X.Y.Z" 14 | git switch main 15 | git pull --rebase 16 | git switch -c release-v$RELEASE_VERSION 17 | 18 | bundle config set --local path vendor/bundle 19 | bundle config set --local with 'release' 20 | bundle install 21 | 22 | CHANGELOG_GITHUB_TOKEN="token_MC_tokenface" bundle exec rake changelog 23 | 24 | git commit --all --message "Release v${RELEASE_VERSION}" 25 | git push --set-upstream origin HEAD 26 | ``` 27 | 28 | Then open a PR, discuss and merge. 29 | 30 | ## After the merge, as a maintainer on upstream 31 | 32 | ```shell 33 | git switch main 34 | git pull --rebase 35 | git tag v$RELEASE_VERSION -m "v$RELEASE_VERSION" 36 | git push --tags 37 | ``` 38 | -------------------------------------------------------------------------------- /moduleroot/renovate.json.erb: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "addLabels": [ 4 | "renovate" 5 | ], 6 | "assigneesFromCodeOwners": true, 7 | "automerge": true, 8 | "automergeType": "pr", 9 | "customManagers": [ 10 | { 11 | "customType": "regex", 12 | "datasourceTemplate": "rubygems", 13 | "managerFilePatterns": [ 14 | "/build_versions.yaml/" 15 | ], 16 | "matchStrings": [ 17 | "rubygem_(?[a-z0-9_-]+):\\s+'(?\\d+\\.\\d+\\.\\d+)'" 18 | ] 19 | }, 20 | { 21 | "customType": "regex", 22 | "datasourceTemplate": "deb", 23 | "managerFilePatterns": [ 24 | "/build_versions.yaml/" 25 | ], 26 | "matchStrings": [ 27 | "#\\s*renovate:\\s*depName=(?.*?)\\s*openVoxRelease=(?\\d+)\\s*\\n\\s*(?\\w+_version):\\s*\"(?.*?)\"" 28 | ], 29 | "registryUrlTemplate": "https://apt.voxpupuli.org?suite=ubuntu24.04&components=openvox{{openVoxRelease}}&binaryArch=amd64" 30 | } 31 | ], 32 | "extends": [ 33 | "config:recommended", 34 | ":prImmediately" 35 | ], 36 | "vulnerabilityAlerts": { 37 | "addLabels": [ 38 | "security" 39 | ], 40 | "enabled": true 41 | }, 42 | "packageRules": [ 43 | { 44 | "dependencyDashboardApproval": false, 45 | "matchPackageNames": [ 46 | "/.*/" 47 | ] 48 | } 49 | ] 50 | } 51 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | ## [v1.0.0](https://github.com/voxpupuli/container_modulesync_configs/tree/v1.0.0) (2025-08-28) 6 | 7 | [Full Changelog](https://github.com/voxpupuli/container_modulesync_configs/compare/62e9799716bdf05c42d8ad54fa485a80f05e6b25...v1.0.0) 8 | 9 | **Implemented enhancements:** 10 | 11 | - feat: set gha permissions gloablly [\#18](https://github.com/voxpupuli/container_modulesync_configs/pull/18) ([rwaffen](https://github.com/rwaffen)) 12 | - feat: add r10k container [\#14](https://github.com/voxpupuli/container_modulesync_configs/pull/14) ([rwaffen](https://github.com/rwaffen)) 13 | - feat: add container scanning [\#13](https://github.com/voxpupuli/container_modulesync_configs/pull/13) ([rwaffen](https://github.com/rwaffen)) 14 | - feat: add commitlint [\#12](https://github.com/voxpupuli/container_modulesync_configs/pull/12) ([rwaffen](https://github.com/rwaffen)) 15 | - feat: add CODEOWNERS file [\#9](https://github.com/voxpupuli/container_modulesync_configs/pull/9) ([rwaffen](https://github.com/rwaffen)) 16 | - feat: add semanitc-release container [\#8](https://github.com/voxpupuli/container_modulesync_configs/pull/8) ([rwaffen](https://github.com/rwaffen)) 17 | - feat: add RELEASE.md [\#5](https://github.com/voxpupuli/container_modulesync_configs/pull/5) ([rwaffen](https://github.com/rwaffen)) 18 | - feat: add test container, use it also in the docu [\#4](https://github.com/voxpupuli/container_modulesync_configs/pull/4) ([rwaffen](https://github.com/rwaffen)) 19 | - add hint that these files are managed by modulesync [\#1](https://github.com/voxpupuli/container_modulesync_configs/pull/1) ([rwaffen](https://github.com/rwaffen)) 20 | 21 | **Fixed bugs:** 22 | 23 | - fix: remove default github\_actions label from renovate because not all changes are github\_actions [\#16](https://github.com/voxpupuli/container_modulesync_configs/pull/16) ([rwaffen](https://github.com/rwaffen)) 24 | - fix: exclude github\_action flagged prs on gh release page like in the changelog [\#11](https://github.com/voxpupuli/container_modulesync_configs/pull/11) ([rwaffen](https://github.com/rwaffen)) 25 | - fix: add comments that files are handled by modulesync [\#7](https://github.com/voxpupuli/container_modulesync_configs/pull/7) ([rwaffen](https://github.com/rwaffen)) 26 | - fix: add missing labels [\#6](https://github.com/voxpupuli/container_modulesync_configs/pull/6) ([rwaffen](https://github.com/rwaffen)) 27 | 28 | 29 | 30 | \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Container ModuleSync Configs 2 | 3 | This repository contains default configuration for 4 | [modulesync](http://github.com/puppetlabs/modulesync) for the container at Puppet community. 5 | Changes to this repository should be synced with modulesync across all of the container repos. 6 | 7 | A full description of ModuleSync can be found in 8 | [ModuleSync's README](https://github.com/puppetlabs/modulesync). 9 | This README describes how the templates are rendered in the Puppet Labs configuration. 10 | 11 | ## Configuring ModuleSync 12 | 13 | **`modulesync.yml`** 14 | 15 | A key-value store of arguments to pass to ModuleSync. Each key is the name of a 16 | flag argument to the msync command. For example, `namespace: myusername` 17 | represents passing `--namespace myusername` to msync. This file does not appear 18 | in this repository because it only serves to override default configuration. To 19 | override the default configuration, the file may look something like this: 20 | 21 | ```yaml 22 | --- 23 | namespace: yourusername 24 | branch: yourbranch 25 | ``` 26 | 27 | **`managed_modules.yml`** 28 | 29 | A YAML array containing the names of the modules to manage. 30 | 31 | ## Run ModuleSync 32 | 33 | To run modulesync, you need to have the modulesync gem installed. You also need a PAT (Personal Access Token) from GitHub to authenticate with the GitHub API. You can create a PAT by following the instructions [here](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token). 34 | 35 | ```shell 36 | bundle config set --local path 'vendor/bundle' 37 | bundle install 38 | 39 | export GITHUB_TOKEN=your_github_pat 40 | export GITHUB_BASE_URL="https://api.github.com" 41 | 42 | # for one module 43 | bundle exec msync update \ 44 | -f container-test \ 45 | --pr \ 46 | --pr-labels modulesync \ 47 | --pr-title "chore: Modulesync ($(git describe --always))" \ 48 | --message "chore: Modulesync update" \ 49 | --git-base="https://github.com/" 50 | 51 | # for all modules 52 | bundle exec msync update \ 53 | --pr \ 54 | --pr-labels modulesync \ 55 | --pr-title "chore: Modulesync ($(git describe --always))" \ 56 | --message "chore: Modulesync update" \ 57 | --git-base="https://github.com/" 58 | ``` 59 | 60 | ## Run ModuleSync for another Organization 61 | 62 | ```shell 63 | export GITHUB_TOKEN=your_github_pat 64 | export GITHUB_BASE_URL="https://api.github.com" 65 | 66 | bundle exec msync update \ 67 | --pr \ 68 | --pr-labels modulesync \ 69 | --pr-title "chore: Modulesync ($(git describe --always))" \ 70 | --message "chore: Modulesync update" \ 71 | --git-base="https://github.com/" \ 72 | --namespace openvoxproject \ 73 | --managed-modules-conf managed_modules_openvox.yml 74 | ``` 75 | 76 | ## Defining Module Files 77 | 78 | **`config_defaults.yml`** 79 | 80 | Each first-level key in this file is the name of a file in a module to manage. 81 | These files only appear here if there are templates in the moduleroot/ 82 | directory that need to be rendered with some default values that might be 83 | overridden. The files listed do not necessarily represent all the files that 84 | will be managed. The files in moduleroot/ represent all the files that will be 85 | managed, except for unmanaged and deleted files (see [#Special Options]). 86 | 87 | **`.sync.yml`** 88 | 89 | This file should appear in the module itself if there are any values to 90 | override from the config_defaults.yml file or if there are any additional 91 | values to assign. A description of what optional values can be defined in 92 | .sync.yml follows in the description of each file in moduleroot/. .sync.yml 93 | will have the same format as config_defaults.yml. 94 | 95 | ### Note 96 | 97 | Each template is rendered in slightly different ways. Your templates do not 98 | need to be identical to these, as long as your config_defaults.yml or .sync.yml 99 | files contain as first-level keys the exact names of the files you are 100 | managing and appropriately handle the data structures you use in your templates 101 | (arrays versus hashes versus single values). 102 | 103 | **`moduleroot/Gemfile`** 104 | 105 | The Gemfile contains a list of gems, optionally with versions, to install in 106 | the development and test groups. config_defaults.yml contains a list of 107 | "required" gems to install, in the form of an array where each element contains 108 | the names and versions of the gems. This section of config_defaults.yml might 109 | look like 110 | 111 | ```yaml 112 | Gemfile: 113 | required: 114 | - gem: rake 115 | version: '~>1.2' 116 | - gem: rspec-puppet 117 | #... 118 | ``` 119 | 120 | The template also looks in .sync.yml for a group of optional gems to install, 121 | and merges this list with the list found in config_defaults.yml. This section 122 | of .sync.yml will look the same as the section of config_defaults.yml, but the 123 | name will be "optional" rather than "required". 124 | 125 | **`moduleroot/Rakefile`** 126 | 127 | The Rakefile gets most of its tasks from the puppetlabs_spec_helper. The 128 | variables in the template represent lint checks to disable. config_defaults.yml 129 | contains an array of checks to pass in to PuppetLint.configuration.send. The 130 | key for this array is called default_disabled_lint_checks. .sync.yml may 131 | contain an additional array of checks to disable, with the key 132 | extra_disabled_lint_checks. 133 | 134 | **`moduleroot/.gitignore`** 135 | 136 | Contains some standard files to ignore. You can pass in additional files as an 137 | array with the key "paths" in your .gitignore section in .sync.yml. 138 | 139 | You can add additional environments for a specific module to test by adding an 140 | extras: section with the same format to the module's .sync.yml. 141 | 142 | ## Special Options 143 | 144 | ### Unmanaged Files 145 | 146 | A file can be marked "unmanaged" in .sync.yml, in which case modulesync will 147 | not try to modify it. This is useful if, for example, the module has special 148 | Rake tasks in the Rakefile which is difficult to manage through a template. 149 | 150 | To mark a file "unmanaged", list it in .sync.yml with the value `unmanaged: 151 | true`. For example, 152 | 153 | ```yaml 154 | --- 155 | spec/spec_helper.rb: 156 | unmanaged: true 157 | ``` 158 | 159 | ### Deleted Files 160 | 161 | Managing files may mean removing files. You can ensure a file is absent by 162 | marking it "delete". This is useful for purging nodesets. 163 | 164 | To mark a file deleted, list it in .sync.yml with the value `delete: true`. For 165 | example, 166 | 167 | ```yaml 168 | --- 169 | spec/acceptance/nodesets/sles-11sp1-x64.yml 170 | delete: true 171 | ``` 172 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | --------------------------------------------------------------------------------