summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbaude <bbaude@redhat.com>2020-01-17 09:41:40 -0600
committerChris Evich <cevich@redhat.com>2020-01-17 15:41:33 -0500
commit9be6f30a42a8737f7e853dc3333b627242a962ab (patch)
tree81de580baddb004e7cb18f1111f65577f13cdef8
parentab7e1a4c400f4bdb47ab49a2a0c8ef9508c68e02 (diff)
downloadpodman-9be6f30a42a8737f7e853dc3333b627242a962ab.tar.gz
podman-9be6f30a42a8737f7e853dc3333b627242a962ab.tar.bz2
podman-9be6f30a42a8737f7e853dc3333b627242a962ab.zip
post-process swagger yaml for publish
Signed-off-by: baude <bbaude@redhat.com> Signed-off-by: Chris Evich <cevich@redhat.com>
-rw-r--r--.cirrus.yml23
-rw-r--r--Makefile6
-rwxr-xr-xcontrib/cirrus/build_swagger.sh17
-rwxr-xr-xcontrib/cirrus/upload_release_archive.sh40
-rw-r--r--pkg/api/Makefile4
-rw-r--r--pkg/api/server/register_containers.go5
6 files changed, 62 insertions, 33 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index abf3d0dd8..fb6dd4cdb 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -660,24 +660,17 @@ upload_snap_task:
- 'cd contrib/snapcraft && snapcraft && snapcraft push *.snap --release edge'
-test_docs_task:
+docs_task:
+
+ # Only run this for PRs on mention, but always run after merge
+ only_if: $CIRRUS_CHANGE_MESSAGE =~ '.*CI:DOCS.*' || $CIRRUS_BRANCH == $DEST_BRANCH
- only_if: >-
- $CIRRUS_BRANCH != $DEST_BRANCH &&
- $CIRRUS_CHANGE_MESSAGE =~ '.*CI:DOCS.*'
depends_on:
- "gating"
- - "vendor"
- #- "test_docs"
- #- "varlink_api"
- #- "build_each_commit"
- stub_script: '/bin/true'
-
-#publish_docs_task:
-#
-# only_if: $CIRRUS_BRANCH == $DEST_BRANCH &&
-# $CIRRUS_TAG =~ '^v[0-9]\.[0-9]\.[0-9]$'
+ script:
+ - "$SCRIPT_BASE/build_swagger.sh |& ${TIMESTAMP}"
+ - "$SCRIPT_BASE/upload_release_archive.sh |& ${TIMESTAMP}"
# Post message to IRC if everything passed PR testing
@@ -706,7 +699,7 @@ success_task:
- "test_building_snap"
- "upload_snap"
- "verify_test_built_images"
- - "test_docs"
+ - "docs"
env:
CIRRUS_WORKING_DIR: "/usr/src/libpod"
diff --git a/Makefile b/Makefile
index dabfc65dd..c794ffde7 100644
--- a/Makefile
+++ b/Makefile
@@ -212,6 +212,12 @@ run-docker-py-tests:
$(eval testLogs=$(shell mktemp))
./bin/podman run --rm --security-opt label=disable --privileged -v $(testLogs):/testLogs --net=host -e DOCKER_HOST=tcp://localhost:8080 $(DOCKERPY_IMAGE) sh -c "pytest $(DOCKERPY_TEST) "
+pkg/api/swagger.yaml: .gopathok release.txt
+ make -C pkg/api
+
+.PHONY: swagger
+swagger: pkg/api/swagger.yaml
+
clean: ## Clean artifacts
rm -rf \
.gopathok \
diff --git a/contrib/cirrus/build_swagger.sh b/contrib/cirrus/build_swagger.sh
new file mode 100755
index 000000000..0471f0c10
--- /dev/null
+++ b/contrib/cirrus/build_swagger.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+set -e
+
+source $(dirname $0)/lib.sh
+
+# Building this is a PITA, just grab binary for use in automation
+# Ref: https://goswagger.io/install.html#static-binary
+download_url=$(curl -s https://api.github.com/repos/go-swagger/go-swagger/releases/latest | \
+ jq -r '.assets[] | select(.name | contains("'"$(uname | tr '[:upper:]' '[:lower:]')"'_amd64")) | .browser_download_url')
+curl -o /usr/local/bin/swagger -L'#' "$download_url"
+chmod +x /usr/local/bin/swagger
+
+cd $GOSRC
+make swagger
+echo "Preserving build details for later use."
+mv -v release.txt actual_release.txt # Another 'make' during testing could overwrite it
diff --git a/contrib/cirrus/upload_release_archive.sh b/contrib/cirrus/upload_release_archive.sh
index eb7742375..2716c402c 100755
--- a/contrib/cirrus/upload_release_archive.sh
+++ b/contrib/cirrus/upload_release_archive.sh
@@ -9,6 +9,8 @@ req_env_var CI UPLDREL_IMAGE CIRRUS_BUILD_ID GOSRC RELEASE_GCPJSON RELEASE_GCPNA
[[ "$CI" == "true" ]] || \
die 56 "$0 must be run under Cirrus-CI to function"
+SWAGGER_FILEPATH="pkg/api/swagger.yaml"
+
# We store "releases" for each PR, mostly to validate the process is functional
unset PR_OR_BRANCH BUCKET
if [[ -n "$CIRRUS_PR" ]]
@@ -62,7 +64,7 @@ echo "$RELEASE_GCPJSON" > "$TMPF"
unset RELEASE_GCPJSON
cd $GOSRC
-for filename in $(ls -1 *.tar.gz *.zip *.msi)
+for filename in $(ls -1 *.tar.gz *.zip *.msi $SWAGGER_FILEPATH)
do
unset EXT
EXT=$(echo "$filename" | sed -r -e 's/.+\.(.+$)/\1/g')
@@ -76,24 +78,32 @@ do
EXT="tar.gz"
fi
- [[ "$OS_RELEASE_ID" == "ubuntu" ]] || \
- chcon -t container_file_t "$filename"
- # Form the generic "latest" file for this branch or pr
- TO_PREFIX="${RELEASE_BASENAME}-latest-${PR_OR_BRANCH}-${RELEASE_DIST}"
- # Form the fully-versioned filename for historical sake
- ALSO_PREFIX="${RELEASE_BASENAME}-${RELEASE_VERSION}-${PR_OR_BRANCH}-${RELEASE_DIST}"
- TO_SUFFIX="${RELEASE_ARCH}.${EXT}"
- if [[ "$RELEASE_DIST" == "windows" ]] || [[ "$RELEASE_DIST" == "darwin" ]]
+ if [[ $filename == $SWAGGER_FILEPATH ]]
then
- TO_FILENAME="${TO_PREFIX}-${TO_SUFFIX}"
- ALSO_FILENAME="${ALSO_PREFIX}-${TO_SUFFIX}"
+ # Support other tools referencing branch and/or version-specific refs.
+ TO_FILENAME="swagger-${RELEASE_VERSION}-${PR_OR_BRANCH}.yaml"
+ # For doc. ref. this must always be a static filename, e.g. swagger-latest-master.yaml
+ ALSO_FILENAME="swagger-latest-${PR_OR_BRANCH}.yaml"
else
- TO_FILENAME="${TO_PREFIX}-${RELEASE_DIST_VER}-${TO_SUFFIX}"
- ALSO_FILENAME="${ALSO_PREFIX}-${TO_SUFFIX}"
+ # Form the generic "latest" file for this branch or pr
+ TO_PREFIX="${RELEASE_BASENAME}-latest-${PR_OR_BRANCH}-${RELEASE_DIST}"
+ # Form the fully-versioned filename for historical sake
+ ALSO_PREFIX="${RELEASE_BASENAME}-${RELEASE_VERSION}-${PR_OR_BRANCH}-${RELEASE_DIST}"
+ TO_SUFFIX="${RELEASE_ARCH}.${EXT}"
+ if [[ "$RELEASE_DIST" == "windows" ]] || [[ "$RELEASE_DIST" == "darwin" ]]
+ then
+ TO_FILENAME="${TO_PREFIX}-${TO_SUFFIX}"
+ ALSO_FILENAME="${ALSO_PREFIX}-${TO_SUFFIX}"
+ else
+ TO_FILENAME="${TO_PREFIX}-${RELEASE_DIST_VER}-${TO_SUFFIX}"
+ ALSO_FILENAME="${ALSO_PREFIX}-${TO_SUFFIX}"
+ fi
fi
+ [[ "$OS_RELEASE_ID" == "ubuntu" ]] || \
+ chcon -t container_file_t "$filename"
+
echo "Running podman ... $UPLDREL_IMAGE for $filename -> $TO_FILENAME"
- echo "Warning: upload failures are completely ignored, avoiding any needless holdup of PRs."
podman run -i --rm \
-e "GCPNAME=$RELEASE_GCPNAME" \
-e "GCPPROJECT=$RELEASE_GCPROJECT" \
@@ -105,5 +115,5 @@ do
-e "BUCKET=$BUCKET" \
-v "$TMPF:$TMPF:ro" \
-v "$(realpath $GOSRC/$filename):/tmp/$filename:ro" \
- $UPLDREL_IMAGE || true
+ $UPLDREL_IMAGE
done
diff --git a/pkg/api/Makefile b/pkg/api/Makefile
index 5fb4e7da5..3d70376df 100644
--- a/pkg/api/Makefile
+++ b/pkg/api/Makefile
@@ -1,3 +1,5 @@
+SWAGGER_OUT ?= swagger.yaml
+
swagger:
- swagger generate spec -o swagger.yaml -w ./
+ swagger generate spec -o ${SWAGGER_OUT} -w ./
cat tags.yaml >> swagger.yaml
diff --git a/pkg/api/server/register_containers.go b/pkg/api/server/register_containers.go
index dbe194cd4..6f4222d8f 100644
--- a/pkg/api/server/register_containers.go
+++ b/pkg/api/server/register_containers.go
@@ -788,11 +788,13 @@ func (s *APIServer) RegisterContainersHandlers(r *mux.Router) error {
// '500':
// "$ref": "#/responses/InternalError"
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/stats"), APIHandler(s.Context, generic.StatsContainer)).Methods(http.MethodGet)
- // swagger:operation GET /libpod/containers/{nameOrID}/top containers topContainer
+ // swagger:operation GET /libpod/containers/{nameOrID}/top libpod libpodTopContainer
//
// List processes running inside a container. Note
//
// ---
+ // tags:
+ // - containers
// parameters:
// - in: path
// name: nameOrID
@@ -810,7 +812,6 @@ func (s *APIServer) RegisterContainersHandlers(r *mux.Router) error {
// - application/json
// responses:
// '200':
- // description: no error
// "ref": "#/responses/DockerTopResponse"
// '404':
// "$ref": "#/responses/NoSuchContainer"