-
Notifications
You must be signed in to change notification settings - Fork 6
172 lines (172 loc) · 6.45 KB
/
test-am-debs.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
name: Archivematica DEB Packages Test
on:
workflow_dispatch:
inputs:
build_packages:
description: "Build local packages"
required: true
default: true
type: "boolean"
pull_request:
paths:
- "debs/jammy/archivematica/**"
- "debs/jammy/archivematica-storage-service/**"
- "tests/archivematica/**"
- "!tests/archivematica/README.md"
- "!tests/archivematica/EL9/**"
push:
branches:
- "stable/**"
- "qa/**"
paths:
- "debs/jammy/archivematica/**"
- "debs/jammy/archivematica-storage-service/**"
- "tests/archivematica/**"
- "!tests/archivematica/README.md"
- "!tests/archivematica/EL9/**"
schedule:
- cron: "0 2 * * *"
jobs:
build-am-packages:
name: Build Archivematica packages
runs-on: ubuntu-latest
if: "${{ github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.build_packages) }}"
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Build
run: |
make -C ${{ github.workspace }}/debs/jammy/archivematica
- name: Save artifacts
uses: actions/upload-artifact@v4
with:
name: archivematica-packages
path: |
${{ github.workspace }}/debs/jammy/archivematica/repo
build-ss-packages:
name: Build Storage Service packages
runs-on: ubuntu-latest
if: "${{ github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.build_packages) }}"
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Build
run: |
make -C ${{ github.workspace }}/debs/jammy/archivematica-storage-service
- name: Save artifacts
uses: actions/upload-artifact@v4
with:
name: archivematica-storage-service-packages
path: |
${{ github.workspace }}/debs/jammy/archivematica-storage-service/repo
create-package-repo:
name: Create package repository
runs-on: ubuntu-latest
if: "${{ github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.build_packages) }}"
needs:
- build-am-packages
- build-ss-packages
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Restore Archivematica packages
uses: actions/download-artifact@v4
with:
name: archivematica-packages
path: |
${{ github.workspace }}/debs/jammy/archivematica/repo
- name: Restore Storage Service packages
uses: actions/download-artifact@v4
with:
name: archivematica-storage-service-packages
path: |
${{ github.workspace }}/debs/jammy/archivematica-storage-service/repo
- name: Create repository
run: |
make -C ${{ github.workspace }}/debs/jammy createrepo
- name: Save package repository
uses: actions/upload-artifact@v4
with:
name: package-repository
path: |
${{ github.workspace }}/debs/jammy/_deb_repository
test:
name: Test packages
needs: create-package-repo
runs-on: ubuntu-latest
if: "${{ always() }}"
env:
build_packages: "${{ github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.build_packages) }}"
steps:
- name: Check if the repository creation job failed
if: "${{ needs.create-package-repo.result != 'skipped' && ! env.build_packages }}"
run: |
exit 1
- name: Check out code
uses: actions/checkout@v4
- name: Restore package repository
if: needs.create-package-repo.result == 'success'
uses: actions/download-artifact@v4
with:
name: package-repository
path: ${{ github.workspace }}/debs/jammy/_deb_repository
- name: "Upgrade crun (supports Ubuntu's systemd in the Dockerfile)"
run: |
wget https://github.com/containers/crun/releases/download/1.15/crun-1.15-linux-amd64
sudo install crun-1.15-linux-amd64 /usr/bin/crun
rm crun-1.15-linux-amd64
- name: "Install Python"
uses: "actions/setup-python@v5"
with:
python-version: "3.10"
cache: "pip"
cache-dependency-path: |
tests/archivematica/requirements.txt
- name: "Cache the virtual environment"
id: "venv-cache"
uses: "actions/cache@v4"
with:
path: |
tests/archivematica/.venv/
key: "os-${{ runner.os }}-python_version-${{ env.python_version }}-hash-${{ hashFiles('tests/archivematica/requirements.txt') }}"
- name: "Set up the virtual environment"
if: "steps.venv-cache.outputs.cache-hit == false"
working-directory: "${{ github.workspace }}/tests/archivematica"
run: |
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
- name: "Add virtual environment to PATH"
working-directory: "${{ github.workspace }}/tests/archivematica"
run:
echo "$PWD/.venv/bin" >> $GITHUB_PATH
- name: "Start the Compose environment"
working-directory: "${{ github.workspace }}/tests/archivematica"
env:
DOCKER_IMAGE_NAME: "ubuntu"
DOCKER_IMAGE_TAG: "22.04"
run: |
podman-compose up --detach
- name: Install packages
working-directory: ${{ github.workspace }}/tests/archivematica
run: |
podman-compose exec --env LOCAL_REPOSITORY="${{ env.build_packages }}" --user ubuntu archivematica /am-packbuild/tests/archivematica/jammy/install.sh
- name: Test AM API - Get processing configurations
run: |
test $( \
curl \
--silent \
--header 'Authorization: ApiKey admin:apikey' \
--header 'Content-Type: application/json' \
'http://localhost:8000/api/processing-configuration/' \
| jq -r '.processing_configurations == ["automated", "default"]' \
) == true
- name: Test SS API - Get pipeline count
run: |
test $( \
curl \
--silent \
--header 'Authorization: ApiKey admin:apikey' \
--header 'Content-Type: application/json' \
'http://localhost:8001/api/v2/pipeline/' \
| jq -r '.meta.total_count == 1' \
) == true