Skip to content

Commit 6198656

Browse files
authored
Added usage of gh-push-to-neofs action to test workflows (#920)
fixes #910
2 parents e5cd39d + c9003d0 commit 6198656

File tree

2 files changed

+95
-218
lines changed

2 files changed

+95
-218
lines changed

.github/workflows/s3-tests.yml

+47-127
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ permissions: write-all
2525

2626
env:
2727
S3_TESTS_CONFIG: s3tests.conf
28+
ALLURE_RESULTS_DIR: ${{ github.workspace }}/allure-results
2829

2930
jobs:
3031
build-and-test:
@@ -67,14 +68,6 @@ jobs:
6768
ref: master
6869
path: neofs-s3-dev-env
6970

70-
- name: Download latest stable neofs-cli for uploading reports to NeoFS
71-
uses: dsaltares/fetch-gh-release-asset@1.1.1
72-
with:
73-
repo: 'nspcc-dev/neofs-node'
74-
version: 'tags/v0.37.0'
75-
file: 'neofs-cli-amd64'
76-
target: 'neofs-node-stable/neofs-cli'
77-
7871
- name: Checkout neofs-testcases repository
7972
uses: actions/checkout@v3
8073
with:
@@ -238,149 +231,76 @@ jobs:
238231
- name: s3 tests
239232
run: |
240233
source virtualenv/bin/activate
241-
S3TEST_CONF=${S3_TESTS_CONFIG} pytest -m 'not fails_on_aws and not fails_on_dbstore' --alluredir=${GITHUB_WORKSPACE}/allure-results -v -s s3tests_boto3/functional/test_s3.py s3tests_boto3/functional/test_s3_neofs.py 2>&1 | tee s3-tests.log
234+
S3TEST_CONF=${S3_TESTS_CONFIG} pytest -m 'not fails_on_aws and not fails_on_dbstore' --alluredir=${{ env.ALLURE_RESULTS_DIR }} -v -s s3tests_boto3/functional/test_s3.py s3tests_boto3/functional/test_s3.py
242235
working-directory: s3-tests
243236

244-
245-
################################################################
246-
- name: Generate Allure report
247-
timeout-minutes: 60
248-
uses: simple-elf/allure-report-action@v1.6
249-
if: always()
250-
id: allure-report
251-
with:
252-
keep_reports: 100000
253-
allure_results: allure-results
254-
allure_report: allure-report
255-
allure_history: allure-history
256-
257-
- name: Enable stable neofs-cli
258-
if: always()
259-
run: |
260-
echo "$(pwd)" >> $GITHUB_PATH
261-
working-directory: neofs-node-stable
262-
263-
- name: Create wallet
264-
if: always()
265-
env:
266-
TEST_RESULTS_WALLET: ${{ secrets.TEST_RESULTS_WALLET }}
267-
run: |
268-
echo "$TEST_RESULTS_WALLET" | base64 -d > wallet.json
269-
working-directory: neofs-testcases
270-
271-
- name: Define expiration
272-
if: always()
273-
env:
274-
TEST_RESULTS_NEOFS_NETWORK_DOMAIN: ${{ vars.TEST_RESULTS_NEOFS_NETWORK_DOMAIN }}
275-
MASTER_EXPIRATION_PERIOD: ${{ vars.MASTER_EXPIRATION_PERIOD }}
276-
PR_EXPIRATION_PERIOD: ${{ vars.PR_EXPIRATION_PERIOD }}
277-
MANUAL_RUN_EXPIRATION_PERIOD: ${{ vars.MANUAL_RUN_EXPIRATION_PERIOD }}
278-
OTHER_EXPIRATION_PERIOD: ${{ vars.OTHER_EXPIRATION_PERIOD }}
279-
run: |
280-
CURRENT_EPOCH=$(neofs-cli netmap epoch --rpc-endpoint st1.$TEST_RESULTS_NEOFS_NETWORK_DOMAIN:8080)
281-
if [[ "${{ github.event_name }}" == "push" ]]; then
282-
EXP_EPOCH=$((MASTER_EXPIRATION_PERIOD + CURRENT_EPOCH))
283-
elif [[ "${{ github.event_name }}" == "pull_request" ]]; then
284-
EXP_EPOCH=$((PR_EXPIRATION_PERIOD + CURRENT_EPOCH))
285-
elif [[ "${{ github.event_name }}" == "release" ]]; then
286-
EXP_EPOCH=0 # For test reports from releases - no expiration period
287-
elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
288-
EXP_EPOCH=$((MANUAL_RUN_EXPIRATION_PERIOD + CURRENT_EPOCH))
289-
else
290-
EXP_EPOCH=$((OTHER_EXPIRATION_PERIOD + CURRENT_EPOCH))
291-
fi
292-
echo "EXP_EPOCH=$EXP_EPOCH" >> $GITHUB_ENV
293-
working-directory: neofs-testcases
294-
295-
- name: Put allure report to NeoFS
237+
################################################################
238+
239+
- name: Publish to NeoFS
296240
id: put_report
297241
if: always() && steps.prepare_test_env.outcome == 'success'
298-
env:
299-
TEST_RESULTS_PASSWORD: ${{ secrets.TEST_RESULTS_PASSWORD }}
300-
TEST_RESULTS_NEOFS_NETWORK_DOMAIN: ${{ vars.TEST_RESULTS_NEOFS_NETWORK_DOMAIN }}
301-
TEST_RESULTS_CID: ${{ vars.TEST_RESULTS_CID }}
302-
run: |
303-
sudo chmod -R a+rw ${GITHUB_WORKSPACE}/allure-report
304-
source ${GITHUB_WORKSPACE}/s3-tests/virtualenv/bin/activate
305-
python ./tools/src/process-allure-reports.py \
306-
--expire-at $EXP_EPOCH \
307-
--neofs_domain $TEST_RESULTS_NEOFS_NETWORK_DOMAIN \
308-
--run_id $RUN_ID --cid $TEST_RESULTS_CID \
309-
--allure_report ${GITHUB_WORKSPACE}/allure-report \
310-
--wallet wallet.json
311-
working-directory: neofs-testcases
312-
313-
- name: Post the link to the report
242+
uses: nspcc-dev/gh-push-allure-report-to-neofs@master
243+
with:
244+
NEOFS_WALLET: ${{ secrets.TEST_RESULTS_WALLET }}
245+
NEOFS_WALLET_PASSWORD: ${{ secrets.TEST_RESULTS_PASSWORD }}
246+
NEOFS_NETWORK_DOMAIN: ${{ vars.TEST_RESULTS_NEOFS_NETWORK_DOMAIN }}
247+
NEOFS_HTTP_GATE: ${{ vars.TEST_RESULTS_HTTP_GATE }}
248+
STORE_OBJECTS_CID: ${{ vars.TEST_RESULTS_CID }}
249+
PR_LIFETIME: ${{ vars.PR_EXPIRATION_PERIOD }}
250+
MASTER_LIFETIME: ${{ vars.MASTER_EXPIRATION_PERIOD }}
251+
MANUAL_RUN_LIFETIME: ${{ vars.MANUAL_RUN_EXPIRATION_PERIOD }}
252+
OTHER_LIFETIME: ${{ vars.OTHER_EXPIRATION_PERIOD }}
253+
ALLURE_RESULTS_DIR: ${{ env.ALLURE_RESULTS_DIR }}
254+
ALLURE_GENERATED_DIR: 'neofs-test-allure-generated-report'
255+
256+
- name: Post link to s3 tests report
314257
id: post_report_link
315258
timeout-minutes: 60
316259
if: always() && steps.put_report.outcome == 'success'
317260
env:
318-
TEST_RESULTS_HTTP_GATE: ${{ vars.TEST_RESULTS_HTTP_GATE }}
319-
TEST_RESULTS_CID: ${{ vars.TEST_RESULTS_CID }}
261+
REPORT_NEOFS_URL: ${{ steps.put_report.outputs.REPORT_NEOFS_URL }}index.html
320262
uses: Sibz/github-status-action@v1
321263
with:
322264
authToken: ${{secrets.GITHUB_TOKEN}}
323-
context: 'Test report'
265+
context: 'S3 tests report'
324266
state: 'success'
325267
sha: ${{github.event.pull_request.head.sha || github.sha}}
326-
target_url: https://${{ env.TEST_RESULTS_HTTP_GATE }}/${{ env.TEST_RESULTS_CID }}/${{ env.RUN_ID }}/index.html
327-
328-
- name: Post only tests logs
329-
id: post_s3_tests_logs
330-
if: always()
331-
env:
332-
TEST_RESULTS_PASSWORD: ${{ secrets.TEST_RESULTS_PASSWORD }}
333-
TEST_RESULTS_NEOFS_NETWORK_DOMAIN: ${{ vars.TEST_RESULTS_NEOFS_NETWORK_DOMAIN }}
334-
TEST_RESULTS_CID: ${{ vars.TEST_RESULTS_CID }}
335-
run: |
336-
source ${GITHUB_WORKSPACE}/s3-tests/virtualenv/bin/activate
337-
zip s3-tests.zip ${GITHUB_WORKSPACE}/s3-tests/s3-tests.log
338-
NEOFS_CLI_PASSWORD=$TEST_RESULTS_PASSWORD neofs-cli --rpc-endpoint st1.$TEST_RESULTS_NEOFS_NETWORK_DOMAIN:8080 \
339-
--wallet wallet.json object put --file s3-tests.zip --cid $TEST_RESULTS_CID --timeout 1200s \
340-
--expire-at $EXP_EPOCH \
341-
--attributes FilePath=$RUN_ID/data/s3-tests.zip,RunNumber=$RUN_ID,ContentType=application/zip
342-
working-directory: neofs-testcases
268+
target_url: ${{ env.REPORT_NEOFS_URL }}
343269

344-
- name: Post the link to the tests logs
345-
timeout-minutes: 60
346-
if: always() && ( steps.post_s3_tests_logs.outcome == 'success' )
347-
env:
348-
TEST_RESULTS_HTTP_GATE: ${{ vars.TEST_RESULTS_HTTP_GATE }}
349-
TEST_RESULTS_CID: ${{ vars.TEST_RESULTS_CID }}
350-
uses: Sibz/github-status-action@v1
351-
with:
352-
authToken: ${{secrets.GITHUB_TOKEN}}
353-
context: 'S3 tests logs'
354-
state: 'success'
355-
sha: ${{github.event.pull_request.head.sha || github.sha}}
356-
target_url: https://${{ env.TEST_RESULTS_HTTP_GATE }}/${{ env.TEST_RESULTS_CID }}/${{ env.RUN_ID }}/data/s3-tests.zip
357270

271+
- name: Set docker logs directory
272+
run: echo "DOCKER_LOGS=${{ github.workspace }}/${{ vars.TEST_RESULTS_CID }}/${{ env.RUN_ID }}/data/docker-logs" >> $GITHUB_ENV
358273

359-
- name: Post only docker logs
360-
id: post_dockers_logs
274+
- name: Gather docker logs
275+
id: gather_dockers_logs
361276
if: always() && ( steps.prepare_test_env.outcome != 'success' || steps.put_report.outcome != 'success' )
362-
env:
363-
TEST_RESULTS_PASSWORD: ${{ secrets.TEST_RESULTS_PASSWORD }}
364-
TEST_RESULTS_NEOFS_NETWORK_DOMAIN: ${{ vars.TEST_RESULTS_NEOFS_NETWORK_DOMAIN }}
365-
TEST_RESULTS_CID: ${{ vars.TEST_RESULTS_CID }}
366277
run: |
367-
source venv.local-pytest/bin/activate && python ./tools/src/zip_dev_env_logs.py
368-
NEOFS_CLI_PASSWORD=$TEST_RESULTS_PASSWORD neofs-cli --rpc-endpoint st1.$TEST_RESULTS_NEOFS_NETWORK_DOMAIN:8080 \
369-
--wallet wallet.json object put --file containers_logs.zip --cid $TEST_RESULTS_CID --timeout 1200s \
370-
--expire-at $EXP_EPOCH \
371-
--attributes FilePath=$RUN_ID/data/containers_logs.zip,RunNumber=$RUN_ID,ContentType=application/zip
278+
source venv.local-pytest/bin/activate
279+
mkdir -p ${{ env.DOCKER_LOGS }} && cd ${{ env.DOCKER_LOGS }}
280+
python ${{ github.workspace }}/neofs-testcases/tools/src/zip_dev_env_logs.py
372281
working-directory: neofs-testcases
373282

374-
- name: Post the link to the docker logs
283+
- name: Post only docker logs
284+
uses: nspcc-dev/gh-push-to-neofs@master
285+
id: post_dockers_logs
286+
if: steps.gather_dockers_logs.outcome == 'success'
287+
with:
288+
NEOFS_WALLET: ${{ secrets.TEST_RESULTS_WALLET }}
289+
NEOFS_WALLET_PASSWORD: ${{ secrets.TEST_RESULTS_PASSWORD }}
290+
NEOFS_NETWORK_DOMAIN: ${{ vars.TEST_RESULTS_NEOFS_NETWORK_DOMAIN }}
291+
NEOFS_HTTP_GATE: ${{ vars.TEST_RESULTS_HTTP_GATE }}
292+
STORE_OBJECTS_CID: ${{ vars.TEST_RESULTS_CID }}
293+
LIFETIME: ${{ vars.OTHER_EXPIRATION_PERIOD }}
294+
PATH_TO_FILES_DIR: ${{ env.DOCKER_LOGS }}
295+
URL_PREFIX: ${{ env.RUN_ID }}/data
296+
297+
- name: Post link to docker logs
375298
timeout-minutes: 60
376-
if: always() && ( steps.post_dockers_logs.outcome == 'success' )
377-
env:
378-
TEST_RESULTS_HTTP_GATE: ${{ vars.TEST_RESULTS_HTTP_GATE }}
379-
TEST_RESULTS_CID: ${{ vars.TEST_RESULTS_CID }}
299+
if: steps.post_dockers_logs.outcome == 'success'
380300
uses: Sibz/github-status-action@v1
381301
with:
382302
authToken: ${{secrets.GITHUB_TOKEN}}
383303
context: 'Docker logs'
384304
state: 'success'
385305
sha: ${{github.event.pull_request.head.sha || github.sha}}
386-
target_url: https://${{ env.TEST_RESULTS_HTTP_GATE }}/${{ env.TEST_RESULTS_CID }}/${{ env.RUN_ID }}/data/containers_logs.zip
306+
target_url: https://${{ vars.TEST_RESULTS_HTTP_GATE }}/${{ vars.TEST_RESULTS_CID }}/${{ env.RUN_ID }}/data/docker-logs/containers_logs.zip

0 commit comments

Comments
 (0)