diff --git a/.github/workflows/collection-publish.yml b/.github/workflows/collection-publish.yml new file mode 100644 index 00000000..2dcd5324 --- /dev/null +++ b/.github/workflows/collection-publish.yml @@ -0,0 +1,41 @@ +name: Collection release and publish +on: + push: + tags: + - '[0-9]+\.[0-9]+\.[0-9]+' + +jobs: + publish-collection-artifact: + name: Publish + runs-on: ${{ matrix.runner-os }} + strategy: + matrix: + runner-os: + - ubuntu-16.04 + ansible-version: + - git+https://github.com/ansible/ansible.git@devel + runner-python-version: + - 3.7 + steps: + + - name: Check out ${{ github.repository }} on disk + uses: actions/checkout@master + + - name: Set up Python ${{ matrix.runner-python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.runner-python-version }} + + - name: Install Ansible ${{ matrix.ansible-version }} + run: | + python -m pip install --user -r contrib/publish-requirements.txt + python -m pip install --user -U --force '${{ matrix.ansible-version }}' + python -m virtualenv /tmp/new-ansible + /tmp/new-ansible/bin/pip install '${{ matrix.ansible-version }}' + + - name: Generate a version from tag + run: >- + ./contrib/publish.sh ${GITHUB_REF##*/} + env: + API_GALAXY_TOKEN: ${{ secrets.API_GALAXY_TOKEN }} + GALAXY_PATH: /tmp/new-ansible/bin/ansible-galaxy diff --git a/contrib/build.py b/contrib/build.py new file mode 100755 index 00000000..87a5f475 --- /dev/null +++ b/contrib/build.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +import sys +import yaml + +if len(sys.argv) < 2: + print("No version was provided!") + sys.exit(1) + +version = sys.argv[1] +with open("galaxy.yml.in") as f: + y = yaml.safe_load(f) +y['version'] = version +with open("galaxy.yml", "w") as ff: + yaml.safe_dump(y, ff) diff --git a/contrib/publish-requirements.txt b/contrib/publish-requirements.txt new file mode 100644 index 00000000..0eb855b8 --- /dev/null +++ b/contrib/publish-requirements.txt @@ -0,0 +1,3 @@ +PyYAML +galaxy-importer +virtualenv diff --git a/contrib/publish.sh b/contrib/publish.sh new file mode 100755 index 00000000..29247301 --- /dev/null +++ b/contrib/publish.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +set -eux + +if [[ -z "$1" ]]; then + echo "Please provide a tag!" + exit 1 +fi +ANSIBLE_GALAXY_BIN=${GALAXY_PATH:-'ansible-galaxy'} + +echo "Start building collection" +echo "Generating galaxy.yml for version $1" +./contrib/build.py "$1" + +rm -rf build_artifact +mkdir -p build_artifact + +${ANSIBLE_GALAXY_BIN} collection build --force --output-path build_artifact/ +COLLECTION_P=$(ls build_artifact/*tar.gz) + +echo "Publishing collection $COLLECTION_P" + +output=$(python -m galaxy_importer.main $COLLECTION_P) +if echo $output | grep ERROR: ; then + echo "Failed check of galaxy importer!" + exit 1 +fi + +echo "Running: ${ANSIBLE_GALAXY_BIN} collection publish --api-key HIDDEN $COLLECTION_P" +${ANSIBLE_GALAXY_BIN} collection publish --api-key $API_GALAXY_TOKEN $COLLECTION_P diff --git a/galaxy.yml b/galaxy.yml index 0764299a..1fabeb5d 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -27,3 +27,5 @@ build_ignore: - ".idea" - ".github" - contrib + - galaxy.yml.in + - importer_result.json diff --git a/galaxy.yml.in b/galaxy.yml.in new file mode 100644 index 00000000..9c40e3f4 --- /dev/null +++ b/galaxy.yml.in @@ -0,0 +1,30 @@ +namespace: containers +name: podman +# version: +readme: README.md +authors: + - Sagi Shnaidman + - Ansible team +description: Podman container Ansible modules +license: GPL-3.0-or-later +tags: + - containers + - podman + - libpod +dependencies: {} +repository: https://github.com/containers/ansible-podman-collections.git +documentation: https://github.com/containers/ansible-podman-collections +homepage: https://github.com/containers/ansible-podman-collections +issues: https://github.com/containers/ansible-podman-collections/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc +build_ignore: + - ci + - tests/output + - build_artifact + - "*.tar.gz" + - ".gitignore" + - ".history" + - ".vscode" + - ".idea" + - ".github" + - contrib + - importer_result.json