generate-catalogs #176
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# This workflow generates the experimental catalog and pushes it to | |
# the publish branch. | |
name: generate-catalogs | |
on: | |
schedule: | |
- cron: "0 */6 * * *" # every 6 hours | |
workflow_dispatch: # allow manual triggering | |
jobs: | |
generate-experimental-catalog: | |
runs-on: ubuntu-latest | |
if: github.repository_owner == 'openshift-pipelines' # do not run this elsewhere | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/go | |
- name: Generate experimental catalog | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
go run ./cmd/catalog-cd generate-catalog --config ./experimental/externals.yaml experimental | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: experimental-catalog-artifact | |
path: experimental/ | |
retention-days: 3 # We don't need to keep them for long | |
generate-catalog: | |
runs-on: ubuntu-latest | |
if: github.repository_owner == 'openshift-pipelines' # do not run this elsewhere | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/go | |
- name: Generate catalog | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
mkdir -p stable/tasks stable/pipelines | |
cp -fR tasks/* stable/tasks | |
cp -fR pipelines/* stable/pipelines | |
go run ./cmd/catalog-cd generate-catalog --config ./externals.yaml stable | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: stable-catalog-artifact | |
path: stable/ | |
retention-days: 3 # We don't need to keep them for long | |
publish-experimental-catalog: | |
runs-on: ubuntu-latest | |
if: github.repository_owner == 'openshift-pipelines' # do not run this elsewhere | |
needs: | |
- generate-experimental-catalog | |
steps: | |
- name: Checkout "p" publish branch | |
uses: actions/checkout@v4 | |
with: | |
ref: p | |
- name: Checkout "main" branch | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
path: main | |
- name: Sync main "helper code" with p | |
run: | | |
# Clean existing | |
rm -fR automation Makefile .github | |
# Copy from main | |
cp -fR main/{automation,Makefile} . | |
mkdir -p .github/workflows | |
mkdir -p .github/workflows .github/actions | |
cp -fR main/.github/workflows/test* .github/workflows | |
cp -fR main/.github/actions/* .github/actions | |
- name: Clean old "generated" catalogs | |
run: | | |
# Remove experimental resources | |
rm -fR experimental/{tasks,pipelines}/* | |
- name: Fetch generated experimental catalog | |
uses: actions/download-artifact@v3 | |
with: | |
name: experimental-catalog-artifact | |
path: experimental | |
- name: Add experimental catalog to publish branch | |
run: | | |
# Clean main from here before the status | |
rm -fR main | |
git config user.name github-actions | |
git config user.email [email protected] | |
CHANGES=$(git status -s) | |
if [[ -n "${CHANGES}" ]]; then | |
git status | |
git add experimental Makefile automation .github | |
git commit -m "Auto-update experimental tekton resources" | |
git pull --rebase --autostash | |
else | |
echo "No changes for the experimental catalog" | |
fi | |
- name: Create PR | |
id: create-pr | |
uses: peter-evans/create-pull-request@v5 | |
with: | |
base: p | |
branch: update-experimental | |
delete-branch: true | |
add-paths: README.md # This is here just to force it to not commit anything | |
title: Experimental catalog changes | |
assignees: tekton-ecosystem-team | |
labels: approved, lgtm, ok-to-test # Automatically approved :) | |
# committer: ${{ env.GIT_COMMITTER_NAME }} ${{ env.GIT_COMMITTER_EMAIL }} | |
# author: ${{ env.GIT_AUTHOR_NAME }} ${{ env.GIT_AUTHOR_EMAIL }} | |
# body: ${{ steps.pr_body.outputs.content }} # TODO(vdemeester) Write git status from the artifact | |
publish-catalog: | |
runs-on: ubuntu-latest | |
if: github.repository_owner == 'openshift-pipelines' # do not run this elsewhere | |
needs: | |
- generate-catalog | |
steps: | |
- name: Checkout "p" publish branch | |
uses: actions/checkout@v4 | |
with: | |
ref: p | |
- name: Checkout "main" branch | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
path: main | |
- name: Sync main "helper code" with p | |
run: | | |
# Clean existing | |
rm -fR automation Makefile .github | |
# Copy from main | |
cp -fR main/{automation,Makefile} . | |
mkdir -p .github/workflows .github/actions | |
cp -fR main/.github/workflows/test* .github/workflows | |
cp -fR main/.github/actions/* .github/actions | |
- name: Clean old "generated" catalogs | |
run: | | |
# Remove "stable" resources | |
rm -fR {tasks,pipelines}/* | |
- name: Fetch generated stable catalog | |
uses: actions/download-artifact@v3 | |
with: | |
name: stable-catalog-artifact | |
path: . | |
- name: Add experimental catalog to publish branch | |
run: | | |
# Clean main from here before the status | |
rm -fR main | |
git config user.name github-actions | |
git config user.email [email protected] | |
CHANGES=$(git status -s) | |
if [[ -n "${CHANGES}" ]]; then | |
git status | |
git add tasks pipelines | |
git add Makefile automation .github | |
git commit -m "Auto-update tekton resources" | |
git pull --rebase --autostash | |
else | |
echo "No changes for the catalog" | |
fi | |
- name: Create PR | |
id: create-pr | |
uses: peter-evans/create-pull-request@v5 | |
with: | |
base: p | |
branch: update-stable | |
delete-branch: true | |
add-paths: README.md # This is here just to force it to not commit anything | |
title: Catalog changes | |
assignees: tekton-ecosystem-team | |
labels: approved, lgtm, ok-to-test # Automatically approved :) | |
# committer: ${{ env.GIT_COMMITTER_NAME }} ${{ env.GIT_COMMITTER_EMAIL }} | |
# author: ${{ env.GIT_AUTHOR_NAME }} ${{ env.GIT_AUTHOR_EMAIL }} | |
# body: ${{ steps.pr_body.outputs.content }} # TODO(vdemeester) Write git status from the artifact |