diff --git a/.github/workflows/cuda-test.yml b/.github/workflows/cuda-test.yml new file mode 100644 index 00000000..65bef911 --- /dev/null +++ b/.github/workflows/cuda-test.yml @@ -0,0 +1,65 @@ +name: test for rocker scripts + +on: + pull_request: + branches: + - master + paths: + - tests/rocker_scripts/Dockerfile + - tests/rocker_scripts/cuda_matrix.json + - tests/rocker_scripts/test.sh + - scripts/*.sh + - "!scripts/install_R_*.sh" + - "!scripts/setup_R.sh" + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + generate_matrix: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - uses: actions/checkout@v4 + - id: set-matrix + run: | + CONTENT=$(jq 'tostring' -r tests/rocker_scripts/cuda_matrix.json) + echo ::set-output name=matrix::"${CONTENT}" + echo "${CONTENT}" + + build: + needs: generate_matrix + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: ${{fromJson(needs.generate_matrix.outputs.matrix)}} + steps: + - uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Prepare build + id: prep + run: | + lower_script_name=$(echo ${{ matrix.script_name }} | tr '[:upper:]' '[:lower:]') + test_name="${{ matrix.base_image }}-${{ matrix.tag }}-${lower_script_name}-${{ matrix.script_arg }}" + echo ::set-output name=output_tag::"${test_name/"/"/"-"}" + - name: test build + run: | + docker buildx build . -f tests/rocker_scripts/Dockerfile \ + --output=type=docker \ + --build-arg base_image=${{ matrix.base_image }} \ + --build-arg tag=${{ matrix.tag }} \ + --build-arg script_name=${{ matrix.script_name }} \ + --build-arg script_arg=${{ matrix.script_arg }} \ + --tag ${{ steps.prep.outputs.output_tag }} + - name: inspect image + run: | + make inspect-image/"${{ steps.prep.outputs.output_tag }}" + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: + name: tmp + path: tmp diff --git a/tests/rocker_scripts/cuda_matrix.json b/tests/rocker_scripts/cuda_matrix.json new file mode 100644 index 00000000..23589c3b --- /dev/null +++ b/tests/rocker_scripts/cuda_matrix.json @@ -0,0 +1,21 @@ +{ + "base_image": [ + "rocker/cuda" + ], + "tag": [ + "latest" + ], + "script_name": [ + "install_rstudio.sh" + ], + "script_arg": [ + "none" + ], + "include": [ + { + "base_image": "rocker/cuda", + "tag": "4.0.0", + "script_name": "install_rstudio.sh" + } + ] +}