name: "Housekeeping" on: workflow_dispatch: push: branches: - main paths: - ".github/workflows/housekeeping.yaml" schedule: - cron: "0 3 * * *" jobs: housekeeping: runs-on: ubuntu-latest name: "Housekeeping" steps: - name: Checkout branch uses: actions/checkout@v2 with: fetch-depth: 0 token: ${{ secrets.BOT_TOKEN }} - name: Set up Python uses: actions/setup-python@v2 - name: Install dependencies run: | python -m pip install --upgrade pip pip install pybump if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: install helm-docs run: | brew install norwoodj/tap/helm-docs - name: Containers - Fetch new application versions run: | find ./containers/apps -maxdepth 1 -mindepth 1 -type d -exec basename {} \; | while read app; do if test -f "./containers/apps/${app}/latest-version.sh"; then version=$(bash "./containers/apps/${app}/latest-version.sh") if [[ ! -z "${version}" || "${version}" != "null" ]]; then echo "${version}" | tee "./containers/apps/${app}/VERSION" > /dev/null echo "App: ${app} using version: ${version}" fi fi if test -f "./containers/apps/${app}/BASE"; then if test -f "./containers/apps/${app}/latest-base.sh"; then base=$(bash "./containers/apps/${app}/latest-base.sh") if [[ ! -z "${base}" || "${base}" != "null" ]]; then echo "${base}" | tee "containers/apps/${app}/BASE" > /dev/null echo "App: ${app} using Base: ${base}" fi fi fi done - name: Containers - Fetch new base versions run: | find ./containers/base -maxdepth 1 -mindepth 1 -type d -exec basename {} \; | while read app; do if test -f "./containers/base/${app}/latest-version.sh"; then version=$(bash "./containers/base/${app}/latest-version.sh") if [[ ! -z "${version}" || "${version}" != "null" ]]; then echo "${version}" | tee "./containers/base/${app}/VERSION" > /dev/null echo "${app} ${version}" fi fi done - name: update versions in docs run: | for train in stable incubator; do for chart in charts/${train}/*; do if [ -d "${chart}" ]; then maxchartversion=$(cat ${chart}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }') chartname=$(basename ${chart}) echo "Copying templates to ${chart}" helm-docs \ --ignore-file=".helmdocsignore" \ --output-file="README.md" \ --template-files="/home/runner/work/apps/apps/templates/docs/README.md.gotmpl" \ --chart-search-root="${chart}" helm-docs \ --ignore-file=".helmdocsignore" \ --output-file="CONFIG.md" \ --template-files="/home/runner/work/apps/apps/templates/docs/CONFIG.md.gotmpl" \ --chart-search-root="${chart}" helm-docs \ --ignore-file=".helmdocsignore" \ --output-file="app-readme.md" \ --template-files="/home/runner/work/apps/apps/templates/docs/app-readme.md.gotmpl" \ --chart-search-root="${chart}" helm-docs \ --ignore-file=".helmdocsignore" \ --output-file="helm-values.md" \ --template-files="/home/runner/work/apps/apps/templates/docs/helm-values.md.gotmpl" \ --chart-search-root="${chart}" fi done done - name: generate common docs run: | mkdir -p docs/apps/common || echo "common path already exists, continuing..." echo "Copying common templates to docs" helm-docs \ --ignore-file=".helmdocsignore" \ --output-file="README.md" \ --template-files="/home/runner/work/apps/apps/templates/docs/common-README.md.gotmpl" \ --chart-search-root="/home/runner/work/apps/apps/charts/library/common" helm-docs \ --ignore-file=".helmdocsignore" \ --output-file="helm-values.md" \ --template-files="/home/runner/work/apps/apps/templates/docs/common-helm-values.md.gotmpl" \ --chart-search-root="/home/runner/work/apps/apps/charts/library/common" - name: run pre-commit checks continue-on-error: true uses: pre-commit/action@v2.0.3 - uses: dorny/paths-filter@v2 id: filter with: list-files: json base: HEAD filters: | changed: - 'charts/stable/**' - 'charts/incubator/**' - 'charts/library/**' - name: Filter filter-output run: echo '${{ toJson(steps.filter.outputs) }}' > changes.json - name: Bump run: | APPS=$(jq --raw-output '.changed_files | fromjson | .[] |= sub("(?(?(?[\/]?)[^\/]+\/)(?(?[\/]?)[^\/]+\/)(?(?[\/]?)[^\/]+)(?.+))"; "\(.third_directory)") | unique' changes.json | jq -r '.[]') echo "changed apps: ${APPS[*]}" for chart in ${APPS[*]} do if test -f "./charts/incubator/${chart}/Chart.yaml"; then train="incubator" elif [[ "${chart}" == '.gitkee' ]]; then echo "Skipping..." return elif test -f "./charts/stable/${chart}/Chart.yaml"; then train="stable" elif test -f "./charts/library/${chart}/Chart.yaml"; then train="library" else train="incubator" fi echo "Comparing versions for ${train}/${chart}" echo "Bumping patch version for ${train}/${chart}" pybump bump --file ./charts/${train}/${chart}/Chart.yaml --level patch done - name: Copy general readme to website run: | yes | cp -rf index.yaml docs/index.yaml || echo "chart-index copy failed, continuing..." yes | cp -rf .github/README.md docs/index.md || echo "readme copy failed, continuing..." sed -i '1s/^/---\nhide:\n - navigation\n - toc\n---\n/' docs/index.md sed -i 's~~~g' docs/index.md yes | cp -rf .github/CODE_OF_CONDUCT docs/about/code_of_conduct.md || echo "CODE_OF_CONDUCT copy failed, continuing..." yes | cp -rf .github/CONTRIBUTING docs/development/contributing.md || echo "CONTRIBUTING copy failed, continuing..." yes | cp -rf .github/SUPPORT.md docs/manual/SUPPORT.md || echo "support policy copy failed, continuing..." yes | cp -rf LICENSE docs/about/legal/LICENSE.md || echo "license copy failed, continuing..." sed -i '1s/^/# License
\n\n/' docs/about/legal/LICENSE.md yes | cp -rf NOTICE docs/about/legal/NOTICE.md || echo "license copy failed, continuing..." sed -i '1s/^/# NOTICE
\n\n/' docs/about/legal/NOTICE.md ls docs/ - name: Copy Apps readme to website run: | for train in stable incubator; do for chart in charts/${train}/*; do if [ -d "${chart}" ]; then chartname=$(basename ${chart}) echo "Processing: ${chart}" mkdir -p docs/apps/${train}/${chartname} || echo "app path already exists, continuing..." yes | cp -rf ${chart}/README.md docs/apps/${train}/${chartname}/index.md || echo "readme copy failed, continuing..." yes | cp -rf ${chart}/CONFIG.md docs/apps/${train}/${chartname}/CONFIG.md || echo "config copy failed, continuing..." yes | cp -rf ${chart}/helm-values.md docs/apps/${train}/${chartname}/helm-values.md || echo "config copy failed, continuing..." sed -i '1s/^/# License
\n\n/' docs/apps/${train}/${chartname}/LICENSE.md || echo "license edit failed, continuing..." fi done echo "Processed charts for ${train}:" ls docs/apps/${train}/ || echo "no Apps in train" done mkdir -p docs/apps/common || echo "common docs path already exists, continuing..." yes | cp -rf charts/library/common/README.md docs/apps/common/index.md || echo "common readme copy failed, continuing..." yes | cp -rf charts/library/common/helm-values.md docs/apps/common/helm-values.md || echo "common readme copy failed, continuing..." - name: Cleanup run: | rm -rf changes.json - name: Commit and Push Housekeeping run: | git config user.name "TrueCharts-Bot" git config user.email "bot@truecharts.org" git add --all git commit -sm "Daily Housekeeping" || exit 0 git push