DIP Upload Test #67
Workflow file for this run
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
name: "DIP Upload Test" | |
on: | |
workflow_dispatch: | |
inputs: | |
am_version: | |
description: "Archivematica ref (branch, tag or SHA to checkout)" | |
default: "qa/1.x" | |
required: true | |
type: "string" | |
ss_version: | |
description: "Archivematica Storage Service ref (branch, tag or SHA to checkout)" | |
default: "qa/0.x" | |
required: true | |
type: "string" | |
atom_version: | |
description: "AtoM ref (branch, tag or SHA to checkout)" | |
default: "qa/2.x" | |
required: true | |
type: "string" | |
jobs: | |
test: | |
name: "DIP upload test" | |
runs-on: "ubuntu-latest" | |
env: | |
am_version: "${{ inputs.am_version }}" | |
ss_version: "${{ inputs.ss_version }}" | |
atom_version: "${{ inputs.atom_version }}" | |
steps: | |
- name: "Check out code" | |
uses: "actions/checkout@v4" | |
- name: "Upgrade crun (supports Ubuntu's systemd in the Dockerfile)" | |
run: | | |
wget https://github.com/containers/crun/releases/download/1.14.4/crun-1.14.4-linux-amd64 | |
sudo install crun-1.14.4-linux-amd64 /usr/bin/crun | |
rm crun-1.14.4-linux-amd64 | |
- name: "Install Python" | |
uses: "actions/setup-python@v5" | |
with: | |
python-version: "3.9" | |
cache: "pip" | |
cache-dependency-path: | | |
tests/dip-upload/requirements.txt | |
- name: "Install ansible" | |
working-directory: "${{ github.workspace }}/tests/dip-upload" | |
run: | | |
python3 -m venv .venv | |
source .venv/bin/activate | |
python3 -m pip install -r requirements.txt | |
- name: "Generate a SSH key and copy it next to the Dockerfile" | |
run: | | |
mkdir $HOME/.ssh | |
ssh-keygen -t rsa -f $HOME/.ssh/id_rsa -N "" | |
cp $HOME/.ssh/id_rsa.pub ${{ github.workspace }}/tests/dip-upload/ssh_pub_key | |
- name: "Start the Archivematica VM" | |
working-directory: "${{ github.workspace }}/tests/dip-upload" | |
run: | | |
podman build -t vm-am --build-arg UBUNTU_VERSION=22.04 . | |
podman run --rm --detach --hostname archivematica --network=bridge -p "2222:22,8000:80,8001:8000" vm-am | |
- name: "Install Archivematica" | |
working-directory: "${{ github.workspace }}/tests/dip-upload" | |
env: | |
ANSIBLE_HOST_KEY_CHECKING: "False" | |
ANSIBLE_REMOTE_PORT: 2222 | |
run: | | |
source .venv/bin/activate | |
ansible-galaxy install -f -p roles/ -r requirements.yml | |
ansible-playbook -i localhost, archivematica.yml \ | |
-u ubuntu \ | |
-e "archivematica_src_am_version=${{ env.am_version }} archivematica_src_ss_version=${{ env.ss_version }}" \ | |
-v | |
- name: "Add the ubuntu user to the archivematica group" | |
working-directory: "${{ github.workspace }}/tests/dip-upload" | |
run: | | |
ssh -o StrictHostKeyChecking=no -p 2222 ubuntu@localhost 'sudo usermod -a -G archivematica ubuntu' | |
- name: "Get the archivematica SSH public key" | |
id: archivematica_ssh_pub_key | |
working-directory: "${{ github.workspace }}/tests/dip-upload" | |
run: | | |
echo "key=$(ssh -o StrictHostKeyChecking=no -p 2222 ubuntu@localhost 'sudo cat /var/lib/archivematica/.ssh/id_rsa.pub')" >> $GITHUB_OUTPUT | |
- name: "Start the AtoM VM" | |
working-directory: "${{ github.workspace }}/tests/dip-upload" | |
run: | | |
podman build -t vm-atom --build-arg UBUNTU_VERSION=20.04 . | |
podman run --rm --detach --hostname atom --network=bridge -p "9222:22,9000:80,9001:8000" vm-atom | |
- name: "Install AtoM" | |
working-directory: "${{ github.workspace }}/tests/dip-upload" | |
env: | |
ANSIBLE_HOST_KEY_CHECKING: "False" | |
ANSIBLE_REMOTE_PORT: 9222 | |
run: | | |
source .venv/bin/activate | |
ansible-playbook -i localhost, atom.yml \ | |
-u ubuntu \ | |
-e "atom_repository_version=${{ env.atom_version }} archivematica_ssh_pub_key='${{ steps.archivematica_ssh_pub_key.outputs.key }}'" \ | |
-v | |
- name: "Call an Archivematica API endpoint" | |
run: | | |
curl \ | |
--header "Authorization: ApiKey admin:this_is_the_am_api_key" \ | |
http://localhost:8000/api/processing-configuration/ | |
- name: "Call a Storage Service API endpoint" | |
run: | | |
curl \ | |
--header "Authorization: ApiKey admin:this_is_the_ss_api_key" \ | |
http://localhost:8001/api/v2/pipeline/ | |
- name: "Call an AtoM API endpoint" | |
run: | | |
curl \ | |
--header "REST-API-Key: this_is_the_atom_dip_upload_api_key" \ | |
http://localhost:9000/index.php/api/informationobjects | |
- name: "Create a processing configuration for DIP upload" | |
working-directory: "${{ github.workspace }}/tests/dip-upload" | |
run: | | |
ssh -o StrictHostKeyChecking=no -p 2222 ubuntu@localhost "sudo -u archivematica cp /var/archivematica/sharedDirectory/sharedMicroServiceTasksConfigs/processingMCPConfigs/automatedProcessingMCP.xml /var/archivematica/sharedDirectory/sharedMicroServiceTasksConfigs/processingMCPConfigs/dipuploadProcessingMCP.xml" | |
- name: "Update the DIP upload processing configuration" | |
working-directory: "${{ github.workspace }}/tests/dip-upload" | |
run: | | |
# Change 'Normalize for preservation' to 'Normalize for preservation and access' | |
ssh -o StrictHostKeyChecking=no -p 2222 ubuntu@localhost "sudo -u archivematica sed --in-place 's|612e3609-ce9a-4df6-a9a3-63d634d2d934|b93cecd4-71f2-4e28-bc39-d32fd62c5a94|g' /var/archivematica/sharedDirectory/sharedMicroServiceTasksConfigs/processingMCPConfigs/dipuploadProcessingMCP.xml" | |
# Change 'Do not upload DIP' to 'Upload DIP to AtoM/Binder' | |
ssh -o StrictHostKeyChecking=no -p 2222 ubuntu@localhost "sudo -u archivematica sed --in-place 's|6eb8ebe7-fab3-4e4c-b9d7-14de17625baa|0fe9842f-9519-4067-a691-8a363132ae24|g' /var/archivematica/sharedDirectory/sharedMicroServiceTasksConfigs/processingMCPConfigs/dipuploadProcessingMCP.xml" | |
- name: "Import Atom sample data" | |
working-directory: "${{ github.workspace }}/tests/dip-upload" | |
run: | | |
ssh -o StrictHostKeyChecking=no -p 9222 ubuntu@localhost "cd /usr/share/nginx/atom/ && sudo -u www-data php -d memory_limit=-1 symfony csv:import /usr/share/nginx/atom/lib/task/import/example/isad/example_information_objects_isad.csv" | |
ssh -o StrictHostKeyChecking=no -p 9222 ubuntu@localhost "cd /usr/share/nginx/atom/ && sudo -u www-data php -d memory_limit=-1 symfony propel:build-nested-set" | |
ssh -o StrictHostKeyChecking=no -p 9222 ubuntu@localhost "cd /usr/share/nginx/atom/ && sudo -u www-data php -d memory_limit=-1 symfony cc" | |
ssh -o StrictHostKeyChecking=no -p 9222 ubuntu@localhost "cd /usr/share/nginx/atom/ && sudo -u www-data php -d memory_limit=-1 symfony search:populate" | |
- name: "Start a transfer and upload the DIP to the sample archival description" | |
run: | | |
curl \ | |
--header "Authorization: ApiKey admin:this_is_the_am_api_key" \ | |
--request POST \ | |
--data "{ \ | |
\"name\": \"dip-upload-test\", \ | |
\"path\": \"$(echo -n '/home/ubuntu/archivematica-sampledata/SampleTransfers/DemoTransferCSV' | base64 -w 0)\", \ | |
\"type\": \"standard\", \ | |
\"processing_config\": \"dipupload\", \ | |
\"access_system_id\": \"example-item\" \ | |
}" \ | |
http://localhost:8000/api/v2beta/package | |
- name: "Wait for the transfer to finish" | |
run: | | |
sleep 180 | |
- name: "Verify a digital object was uploaded and attached to the sample archival description" | |
run: | | |
curl \ | |
--header "REST-API-Key: this_is_the_atom_dip_upload_api_key" \ | |
http://localhost:9000/index.php/api/informationobjects/beihai-guanxi-china-1988 | python3 -m json.tool | grep '"parent": "example-item"' |