|
2 | 2 | name: Build fat image
|
3 | 3 | 'on':
|
4 | 4 | workflow_dispatch:
|
5 |
| - inputs: |
6 |
| - use_RL8: |
7 |
| - required: true |
8 |
| - description: Include RL8 image build |
9 |
| - type: boolean |
10 |
| - default: false |
11 | 5 | concurrency:
|
12 |
| - group: ${{ github.ref }}-{{ matrix.os_version }} # to branch/PR + OS |
| 6 | + group: ${{ github.ref }}-{{ matrix.os_version }}-{{ matrix.build }} # to branch/PR + OS + build |
13 | 7 | cancel-in-progress: true
|
14 | 8 | jobs:
|
15 | 9 | openstack:
|
16 | 10 | name: openstack-imagebuild
|
17 |
| - runs-on: ubuntu-20.04 |
| 11 | + runs-on: ubuntu-22.04 |
18 | 12 | strategy:
|
19 | 13 | matrix:
|
20 |
| - os_version: [RL8, RL9] |
21 |
| - rl8_selected: |
22 |
| - - ${{ inputs.use_RL8 == true }} # only potentially true for workflow_dispatch |
| 14 | + os_version: |
| 15 | + - RL8 |
| 16 | + - RL9 |
| 17 | + build: |
| 18 | + - openstack.openhpc |
| 19 | + - openstack.openhpc-ofed |
23 | 20 | exclude:
|
24 | 21 | - os_version: RL8
|
25 |
| - rl8_selected: false |
| 22 | + build: openstack.openhpc-ofed |
| 23 | + - os_version: RL9 |
| 24 | + build: openstack.openhpc |
26 | 25 | env:
|
27 | 26 | ANSIBLE_FORCE_COLOR: True
|
28 | 27 | OS_CLOUD: openstack
|
@@ -63,19 +62,64 @@ jobs:
|
63 | 62 | . environments/.stackhpc/activate
|
64 | 63 | cd packer/
|
65 | 64 | packer init .
|
66 |
| - PACKER_LOG=1 packer build -on-error=${{ vars.PACKER_ON_ERROR }} -except=openstack.openhpc-extra -var-file=$PKR_VAR_environment_root/${{ vars.CI_CLOUD }}.pkrvars.hcl openstack.pkr.hcl |
| 65 | + PACKER_LOG=1 packer build -on-error=${{ vars.PACKER_ON_ERROR }} -only=${{ matrix.build }} -var-file=$PKR_VAR_environment_root/${{ vars.CI_CLOUD }}.pkrvars.hcl openstack.pkr.hcl |
67 | 66 | env:
|
68 | 67 | PKR_VAR_os_version: ${{ matrix.os_version }}
|
69 | 68 |
|
70 | 69 | - name: Get created image names from manifest
|
71 | 70 | id: manifest
|
72 | 71 | run: |
|
73 | 72 | . venv/bin/activate
|
74 |
| - for IMAGE_ID in $(jq --raw-output '.builds[].artifact_id' packer/packer-manifest.json) |
75 |
| - do |
76 |
| - while ! openstack image show -f value -c name $IMAGE_ID; do |
77 |
| - sleep 5 |
78 |
| - done |
79 |
| - IMAGE_NAME=$(openstack image show -f value -c name $IMAGE_ID) |
80 |
| - echo $IMAGE_NAME |
| 73 | + IMAGE_ID=$(jq --raw-output '.builds[-1].artifact_id' packer/packer-manifest.json) |
| 74 | + while ! openstack image show -f value -c name $IMAGE_ID; do |
| 75 | + sleep 5 |
81 | 76 | done
|
| 77 | + IMAGE_NAME=$(openstack image show -f value -c name $IMAGE_ID) |
| 78 | + echo "image-name=${IMAGE_NAME}" >> "$GITHUB_OUTPUT" |
| 79 | + echo "image-id=$IMAGE_ID" >> "$GITHUB_OUTPUT" |
| 80 | +
|
| 81 | + - name: Download image |
| 82 | + run: | |
| 83 | + . venv/bin/activate |
| 84 | + openstack image save --file ${{ steps.manifest.outputs.image-name }}.qcow2 ${{ steps.manifest.outputs.image-name }} |
| 85 | +
|
| 86 | + - name: Set up QEMU |
| 87 | + uses: docker/setup-qemu-action@v3 |
| 88 | + |
| 89 | + - name: install libguestfs |
| 90 | + run: | |
| 91 | + sudo apt -y update |
| 92 | + sudo apt -y install libguestfs-tools |
| 93 | +
|
| 94 | + - name: mkdir for mount |
| 95 | + run: sudo mkdir -p './${{ steps.manifest.outputs.image-name }}' |
| 96 | + |
| 97 | + - name: mount qcow2 file |
| 98 | + run: sudo guestmount -a ${{ steps.manifest.outputs.image-name }}.qcow2 -i --ro -o allow_other './${{ steps.manifest.outputs.image-name }}' |
| 99 | + |
| 100 | + - name: Run Trivy vulnerability scanner |
| 101 | + uses: aquasecurity/[email protected] |
| 102 | + with: |
| 103 | + scan-type: fs |
| 104 | + scan-ref: "./${{ steps.manifest.outputs.image-name }}" |
| 105 | + scanners: "vuln" |
| 106 | + format: sarif |
| 107 | + output: "${{ steps.manifest.outputs.image-name }}.sarif" |
| 108 | + # turn off secret scanning to speed things up |
| 109 | + |
| 110 | + - name: Upload Trivy scan results to GitHub Security tab |
| 111 | + uses: github/codeql-action/upload-sarif@v3 |
| 112 | + with: |
| 113 | + sarif_file: "${{ steps.manifest.outputs.image-name }}.sarif" |
| 114 | + category: "${{ matrix.os_version }}-${{ matrix.build }}" |
| 115 | + |
| 116 | + - name: Fail if scan has CRITICAL vulnerabilities |
| 117 | + uses: aquasecurity/[email protected] |
| 118 | + with: |
| 119 | + scan-type: fs |
| 120 | + scan-ref: "./${{ steps.manifest.outputs.image-name }}" |
| 121 | + scanners: "vuln" |
| 122 | + format: table |
| 123 | + exit-code: '1' |
| 124 | + severity: 'CRITICAL' |
| 125 | + ignore-unfixed: true |
0 commit comments