90c427d630
To match change I2870450ffd02f55509fcc1297d050b09deafbfb9 in Zuul. This does not use the versioning feature due to the nature of this repo. This also corrects a reference which is now an error. Change-Id: Ia1d31df932b447f11bc588925de9974d4f6dfc7d
138 lines
4.8 KiB
YAML
138 lines
4.8 KiB
YAML
- hosts: all
|
|
tasks:
|
|
- name: Ensure docker is installed
|
|
include_role:
|
|
name: ensure-docker
|
|
|
|
- name: Start artifactory in a container
|
|
command: >-
|
|
docker run -d
|
|
-p 8081:8081 -p 8082:8082
|
|
--name {{ zuul.build }}
|
|
docker.bintray.io/jfrog/artifactory-oss:latest
|
|
|
|
- name: Wait for artifactory to start
|
|
uri:
|
|
url: http://localhost:8082/artifactory/api/system/ping
|
|
method: GET
|
|
register: artifactory_status
|
|
until: artifactory_status.status == 200
|
|
retries: 12
|
|
delay: 10
|
|
|
|
- name: Create a generic repository in artifactory
|
|
uri:
|
|
url: http://localhost:8082/artifactory/api/system/configuration
|
|
user: admin
|
|
password: password
|
|
force_basic_auth: true
|
|
method: PATCH
|
|
body: |
|
|
localRepositories:
|
|
generic-repository:
|
|
type: generic
|
|
headers:
|
|
Content-Type: application/yaml
|
|
|
|
- name: Create an api key for the admin user
|
|
uri:
|
|
url: http://localhost:8082/artifactory/api/security/apiKey
|
|
user: admin
|
|
password: password
|
|
status_code: 201
|
|
return_content: true
|
|
method: POST
|
|
register: artifactory_api_key
|
|
|
|
- name: Set artifactory instances fact
|
|
set_fact:
|
|
cacheable: true
|
|
upload_artifactory_instances:
|
|
localhost_password:
|
|
fqdn: localhost:8081
|
|
transport: http
|
|
user: admin
|
|
password: password
|
|
force_basic_auth: true
|
|
localhost_api_key:
|
|
fqdn: localhost:8081
|
|
transport: http
|
|
user: admin
|
|
api_key: "{{ (artifactory_api_key.content | from_json)['apiKey'] }}"
|
|
localhost_properties:
|
|
fqdn: localhost:8081
|
|
transport: http
|
|
user: admin
|
|
api_key: "{{ (artifactory_api_key.content | from_json)['apiKey'] }}"
|
|
|
|
- hosts: all
|
|
vars:
|
|
# Since we're testing a role that normally requires a
|
|
# trusted context flip the delegate_to so we execute on the
|
|
# remote instead. Also set the working directory to something
|
|
# that is known to exist on the remote.
|
|
_undocumented_test_worker_node_: "{{ inventory_hostname }}"
|
|
_undocumented_test_work_dir_: "{{ ansible_user_dir }}/zuul-output"
|
|
pre_tasks:
|
|
- name: Write a file with some content to artifacts directory
|
|
copy:
|
|
content: |
|
|
First file
|
|
dest: "{{ ansible_user_dir }}/zuul-output/artifacts/test-file.txt"
|
|
- name: Set upload_artifactory_manifest_basic fact
|
|
set_fact:
|
|
upload_artifactory_manifest:
|
|
artifacts:
|
|
- name: test-password.txt
|
|
src: test-file.txt
|
|
dest: generic-repository/path/to/dest/test-password.txt
|
|
instance: localhost_password
|
|
- name: test-api-key.txt
|
|
src: test-file.txt
|
|
dest: generic-repository/path/to/dest/test-api-key.txt
|
|
instance: localhost_api_key
|
|
- name: test-properties.txt
|
|
src: test-file.txt
|
|
dest: generic-repository/path/to/dest/test-properties.txt
|
|
instance: localhost_properties
|
|
properties:
|
|
version: 1.0.0
|
|
supports:
|
|
- 1.0.1
|
|
- 1.0.2
|
|
roles:
|
|
- role: upload-artifactory
|
|
|
|
post_tasks:
|
|
- name: Load artifacts information from zuul_return
|
|
set_fact:
|
|
artifacts: "{{ (lookup('file', zuul.executor.work_root + '/results.json') | from_json) ['data']['zuul']['artifacts'] }}"
|
|
- name: Expected artifacts are backwards
|
|
set_fact:
|
|
expected_artifacts:
|
|
- name: test-properties.txt
|
|
url: http://localhost:8081/artifactory/generic-repository/path/to/dest/test-properties.txt
|
|
- name: test-api-key.txt
|
|
url: http://localhost:8081/artifactory/generic-repository/path/to/dest/test-api-key.txt
|
|
- name: test-password.txt
|
|
url: http://localhost:8081/artifactory/generic-repository/path/to/dest/test-password.txt
|
|
- name: Assert artifact
|
|
assert:
|
|
that:
|
|
- item.0.name == item.1.name
|
|
- item.0.url == item.1.url
|
|
loop: "{{ artifacts | zip(expected_artifacts) | list }}"
|
|
|
|
- name: Query properties artifact
|
|
uri:
|
|
method: POST
|
|
url: 'http://localhost:8081/artifactory/api/search/aql'
|
|
headers:
|
|
X-JFrog-Art-Api: "{{ (artifactory_api_key.content | from_json)['apiKey'] }}"
|
|
Content-Type: 'text/plain'
|
|
body: 'items.find({"$and":[{"repo":"generic-repository"},{"path":"path/to/dest"},{"@version":"1.0.0"}]})'
|
|
register: artifact_query
|
|
- name: Assert property filtered response
|
|
assert:
|
|
that: artifact_query.json.results[0].name == 'test-properties.txt'
|