Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update CI files for branch 0.4 #206

Merged
merged 1 commit into from
Jan 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions .ci/scripts/check_release.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def main():
"--branches",
default="supported",
help="A comma separated list of branches to check for releases. Can also use keyword: "
"'supported'. Defaults to 'supported', see `ci_update_branches` in "
"'supported'. Defaults to 'supported', see `supported_release_branches` in "
"`plugin_template.yml`.",
)
opts = parser.parse_args()
Expand All @@ -46,12 +46,15 @@ def main():
if branches == "supported":
with open(f"{d}/template_config.yml", mode="r") as f:
tc = yaml.safe_load(f)
branches = tc["ci_update_branches"]
branches.append(DEFAULT_BRANCH)
branches = set(tc["supported_release_branches"])
latest_release_branch = tc["latest_release_branch"]
if latest_release_branch is not None:
branches.add(latest_release_branch)
branches.add(DEFAULT_BRANCH)
else:
branches = branches.split(",")
branches = set(branches.split(","))

if diff := set(branches) - set(available_branches):
if diff := branches - set(available_branches):
print(f"Supplied branches contains non-existent branches! {diff}")
exit(1)

Expand Down
8 changes: 5 additions & 3 deletions .ci/scripts/collect_changes.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@
CHANGELOG_FILE = tc_settings.get("filename", "NEWS.rst")
START_STRING = tc_settings.get(
"start_string",
"<!-- towncrier release notes start -->\n"
if CHANGELOG_FILE.endswith(".md")
else ".. towncrier release notes start\n",
(
"<!-- towncrier release notes start -->\n"
if CHANGELOG_FILE.endswith(".md")
else ".. towncrier release notes start\n"
),
)
TITLE_FORMAT = tc_settings.get("title_format", "{name} {version} ({project_date})")

Expand Down
2 changes: 1 addition & 1 deletion .github/template_gitref
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2021.08.26-301-g83f0607
2021.08.26-312-ge121aa6
2 changes: 1 addition & 1 deletion .github/workflows/create-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ jobs:
- name: Update CI branches in template_config
working-directory: plugin_template
run: |
python3 ./plugin-template pulp_gem --github --add-version-ci-update-branches "${NEW_BRANCH}"
python3 ./plugin-template pulp_gem --github --latest-release-branch "${NEW_BRANCH}"
git add -A

- name: Make a PR with version bump and without CHANGES/*
Expand Down
322 changes: 322 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,322 @@
# WARNING: DO NOT EDIT!
#
# This file was generated by plugin_template, and is managed by it. Please use
# './plugin-template --github pulp_gem' to update this file.
#
# For more info visit https://github.com/pulp/plugin_template

---
name: "Gem Publish Release"
on:
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+"

defaults:
run:
working-directory: "pulp_gem"

jobs:
build:
uses: "./.github/workflows/build.yml"

build-bindings-docs:
needs:
- "build"
runs-on: "ubuntu-latest"
# Install scripts expect TEST to be set, 'docs' is most appropriate even though we don't run tests
env:
TEST: "docs"
steps:
- uses: "actions/checkout@v4"
with:
fetch-depth: 1
path: "pulp_gem"

- uses: "actions/checkout@v4"
with:
fetch-depth: 1
repository: "pulp/pulp-openapi-generator"
path: "pulp-openapi-generator"

- uses: "actions/setup-python@v4"
with:
python-version: "3.8"

- uses: "actions/download-artifact@v3"
with:
name: "plugin_package"
path: "pulp_gem/dist/"
- uses: ruby/setup-ruby@v1
with:
ruby-version: "2.6"

- name: "Install python dependencies"
run: |
echo ::group::PYDEPS
pip install towncrier twine wheel httpie docker netaddr boto3 ansible mkdocs
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/pulp_gem/.ci/assets/httpie/" >> $GITHUB_ENV
echo ::endgroup::

# Building the bindings and docs requires accessing the OpenAPI specs endpoint, so we need to
# setup the Pulp instance.
- name: "Before Install"
run: |
.github/workflows/scripts/before_install.sh
shell: "bash"
env:
PY_COLORS: "1"
ANSIBLE_FORCE_COLOR: "1"
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
GITHUB_CONTEXT: "${{ github.event.pull_request.commits_url }}"

- name: "Install"
run: |
.github/workflows/scripts/install.sh
shell: "bash"
env:
PY_COLORS: "1"
ANSIBLE_FORCE_COLOR: "1"
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
GITHUB_CONTEXT: "${{ github.event.pull_request.commits_url }}"

- name: "Install Python client"
run: |
.github/workflows/scripts/install_python_client.sh
shell: "bash"
- name: "Install Ruby client"
run: |
.github/workflows/scripts/install_ruby_client.sh
shell: "bash"
- name: "Upload python client packages"
uses: "actions/upload-artifact@v3"
with:
name: "python-client.tar"
path: "pulp_gem/gem-python-client.tar"
if-no-files-found: "error"

- name: "Upload python client docs"
uses: "actions/upload-artifact@v3"
with:
name: "python-client-docs.tar"
path: "pulp_gem/gem-python-client-docs.tar"
if-no-files-found: "error"
- name: "Upload ruby client packages"
uses: "actions/upload-artifact@v3"
with:
name: "ruby-client.tar"
path: "pulp_gem/gem-ruby-client.tar"
if-no-files-found: "error"
- name: Build docs
run: |
export DJANGO_SETTINGS_MODULE=pulpcore.app.settings
export PULP_SETTINGS=$PWD/.ci/ansible/settings/settings.py
make -C docs/ PULP_URL="https://pulp" diagrams html
tar -cvf docs/docs.tar docs/_build

- name: "Upload built docs"
uses: actions/upload-artifact@v3
with:
name: "docs.tar"
path: "pulp_gem/docs/docs.tar"

- name: "Logs"
if: always()
run: |
echo "Need to debug? Please check: https://github.com/marketplace/actions/debugging-with-tmate"
http --timeout 30 --check-status --pretty format --print hb "https://pulp${PULP_API_ROOT}api/v3/status/" || true
docker images || true
docker ps -a || true
docker logs pulp || true
docker exec pulp ls -latr /etc/yum.repos.d/ || true
docker exec pulp cat /etc/yum.repos.d/* || true
docker exec pulp bash -c "pip3 list && pip3 install pipdeptree && pipdeptree"
publish-package:
runs-on: "ubuntu-latest"
needs:
- "build-bindings-docs"

env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

steps:
- uses: "actions/checkout@v4"
with:
fetch-depth: 1
path: "pulp_gem"

- uses: "actions/download-artifact@v3"
with:
name: "plugin_package"
path: "pulp_gem/dist/"

- uses: "actions/setup-python@v4"
with:
python-version: "3.8"

- name: "Install python dependencies"
run: |
echo ::group::PYDEPS
pip install twine
echo ::endgroup::

- name: "Setting secrets"
run: |
python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT"
env:
SECRETS_CONTEXT: "${{ toJson(secrets) }}"

- name: "Deploy plugin to pypi"
run: |
.github/workflows/scripts/publish_plugin_pypi.sh ${{ github.ref_name }}
publish-python-bindings:
runs-on: "ubuntu-latest"
needs:
- "build-bindings-docs"

env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

steps:
- uses: "actions/checkout@v4"
with:
fetch-depth: 1
path: "pulp_gem"

- name: "Download Python client"
uses: "actions/download-artifact@v3"
with:
name: "python-client.tar"
path: "pulp_gem/"

- name: "Untar python client packages"
run: |
tar -xvf gem-python-client.tar

- uses: "actions/setup-python@v4"
with:
python-version: "3.8"

- name: "Install python dependencies"
run: |
echo ::group::PYDEPS
pip install twine
echo ::endgroup::

- name: "Setting secrets"
run: |
python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT"
env:
SECRETS_CONTEXT: "${{ toJson(secrets) }}"

- name: "Publish client to pypi"
run: |
bash .github/workflows/scripts/publish_client_pypi.sh ${{ github.ref_name }}
publish-ruby-bindings:
runs-on: "ubuntu-latest"
needs:
- "build-bindings-docs"

env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

steps:
- uses: "actions/checkout@v4"
with:
fetch-depth: 1
path: "pulp_gem"

- name: "Download Ruby client"
uses: "actions/download-artifact@v3"
with:
name: "ruby-client.tar"
path: "pulp_gem/"

- name: "Untar Ruby client packages"
run: |
tar -xvf gem-ruby-client.tar

- uses: ruby/setup-ruby@v1
with:
ruby-version: "2.6"

- name: "Setting secrets"
run: |
python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT"
env:
SECRETS_CONTEXT: "${{ toJson(secrets) }}"

- name: "Publish client to rubygems"
run: |
bash .github/workflows/scripts/publish_client_gem.sh ${{ github.ref_name }}
publish-docs:
runs-on: "ubuntu-latest"
needs:
- "build-bindings-docs"

env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

steps:
- uses: "actions/checkout@v4"
with:
fetch-depth: 1
path: "pulp_gem"

- uses: "actions/setup-python@v4"
with:
python-version: "3.8"

- name: "Install python dependencies"
run: |
echo ::group::PYDEPS
pip install 'packaging~=21.3' requests
echo ::endgroup::

- name: "Setting secrets"
run: |
python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT"
env:
SECRETS_CONTEXT: "${{ toJson(secrets) }}"

- name: "Download built docs"
uses: "actions/download-artifact@v3"
with:
name: "docs.tar"
path: "pulp_gem/"

- name: "Download Python client docs"
uses: "actions/download-artifact@v3"
with:
name: "python-client-docs.tar"
path: "pulp_gem/"

- name: "Publish docs to pulpproject.org"
run: |
tar -xvf docs.tar
.github/workflows/scripts/publish_docs.sh tag ${{ github.ref_name }}

create-gh-release:
runs-on: "ubuntu-latest"
needs:
- "build-bindings-docs"
- "publish-package"
- "publish-python-bindings"
- "publish-ruby-bindings"
- "publish-docs"

steps:
- name: "Create release on GitHub"
uses: "actions/github-script@v7"
env:
TAG_NAME: "${{ github.ref_name }}"
with:
script: |
const { TAG_NAME } = process.env;

await github.rest.repos.createRelease({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: TAG_NAME,
make_latest: "legacy",
});
Loading
Loading