[CI/CD] Add support for Docker-specific version strings in version ge… #19
Workflow file for this run
This file contains hidden or 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: OpenCue Packaging Pipeline | |
| # Trigger this pipeline on new commits to master. | |
| on: | |
| push: | |
| branches: [ cicd-fix-packaging-v3 ] | |
| jobs: | |
| build_opencue_packages: | |
| name: Build Python Packages | |
| runs-on: ubuntu-22.04 | |
| container: python:3.7 | |
| outputs: | |
| opencue_proto_path: ${{ steps.package_outputs.outputs.opencue_proto_path }} | |
| opencue_pycue_path: ${{ steps.package_outputs.outputs.opencue_pycue_path }} | |
| opencue_pyoutline_path: ${{ steps.package_outputs.outputs.opencue_pyoutline_path }} | |
| opencue_cueadmin_path: ${{ steps.package_outputs.outputs.opencue_cueadmin_path }} | |
| opencue_cueman_path: ${{ steps.package_outputs.outputs.opencue_cueman_path }} | |
| opencue_cuesubmit_path: ${{ steps.package_outputs.outputs.opencue_cuesubmit_path }} | |
| opencue_rqd_path: ${{ steps.package_outputs.outputs.opencue_rqd_path }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-tags: true | |
| fetch-depth: 0 | |
| - name: Mark repository as safe (Fix for https://github.com/actions/checkout/issues/1048) | |
| run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
| - uses: ./.github/actions/build-python-packages | |
| - name: Gather package paths | |
| id: package_outputs | |
| run: | | |
| echo "opencue_proto_path=$(find ./packages -name 'opencue_proto-*.whl' -print -quit)" >> $GITHUB_OUTPUT | |
| echo "opencue_rqd_path=$(find ./packages -name 'opencue_rqd-*.whl' -print -quit)" >> $GITHUB_OUTPUT | |
| echo "opencue_pycue_path=$(find ./packages -name 'opencue_pycue-*.whl' -print -quit)" >> $GITHUB_OUTPUT | |
| echo "opencue_pyoutline_path=$(find ./packages -name 'opencue_pyoutline-*.whl' -print -quit)" >> $GITHUB_OUTPUT | |
| echo "opencue_cuesubmit_path=$(find ./packages -name 'opencue_cuesubmit-*.whl' -print -quit)" >> $GITHUB_OUTPUT | |
| echo "opencue_cueadmin_path=$(find ./packages -name 'opencue_cueadmin-*.whl' -print -quit)" >> $GITHUB_OUTPUT | |
| echo "opencue_cueman_path=$(find ./packages -name 'opencue_cueman-*.whl' -print -quit)" >> $GITHUB_OUTPUT | |
| echo "opencue_cuegui_path=$(find ./packages -name 'opencue_cuegui-*.whl' -print -quit)" >> $GITHUB_OUTPUT | |
| integration_test: | |
| needs: build_opencue_packages | |
| name: Run Integration Test | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: Mark repository as safe (Fix for https://github.com/actions/checkout/issues/1048) | |
| run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
| - name: Download a single artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: opencue_packages | |
| path: packages | |
| - name: Run test | |
| run: | | |
| export OPENCUE_PROTO_PACKAGE_PATH="${{ needs.build_opencue_packages.outputs.opencue_proto_path }}" | |
| export OPENCUE_PYCUE_PACKAGE_PATH="${{ needs.build_opencue_packages.outputs.opencue_pycue_path }}" | |
| export OPENCUE_PYOUTLINE_PACKAGE_PATH="${{ needs.build_opencue_packages.outputs.opencue_pyoutline_path }}" | |
| export OPENCUE_CUEADMIN_PACKAGE_PATH="${{ needs.build_opencue_packages.outputs.opencue_cueadmin_path }}" | |
| export OPENCUE_CUEMAN_PACKAGE_PATH="${{ needs.build_opencue_packages.outputs.opencue_cueadmin_path }}" | |
| export OPENCUE_CUESUBMIT_PACKAGE_PATH="${{ needs.build_opencue_packages.outputs.opencue_cuesubmit_path }}" | |
| export OPENCUE_RQD_PACKAGE_PATH="${{ needs.build_opencue_packages.outputs.opencue_rqd_path }}" | |
| # ci/run_integration_test.sh | |
| - name: Archive log files | |
| uses: actions/upload-artifact@v4 | |
| if: ${{ always() }} | |
| with: | |
| name: test-logs | |
| path: /tmp/opencue-test/*.log | |
| build_components: | |
| needs: integration_test | |
| strategy: | |
| matrix: | |
| component: [cuebot, rqd] | |
| include: | |
| - component: cuebot | |
| NAME: Cuebot | |
| ARTIFACTS: cuebot-${BUILD_ID}-all.jar opencue-cuebot-${BUILD_ID}-1.noarch.rpm | |
| - component: rqd | |
| NAME: RQD | |
| ARTIFACTS: rqd-${BUILD_ID}-all.tar.gz | |
| - component: cuegui | |
| NAME: CueGUI | |
| ARTIFACTS: cuegui-${BUILD_ID}-all.tar.gz | |
| - component: pycue | |
| NAME: PyCue | |
| ARTIFACTS: pycue-${BUILD_ID}-all.tar.gz | |
| - component: pyoutline | |
| NAME: PyOutline | |
| ARTIFACTS: pyoutline-${BUILD_ID}-all.tar.gz | |
| - component: cuesubmit | |
| NAME: CueSubmit | |
| ARTIFACTS: cuesubmit-${BUILD_ID}-all.tar.gz | |
| - component: cueadmin | |
| NAME: CueAdmin | |
| ARTIFACTS: cueadmin-${BUILD_ID}-all.tar.gz | |
| - component: cueman | |
| NAME: CueMan | |
| ARTIFACTS: cueman-${BUILD_ID}-all.tar.gz | |
| name: Build ${{ matrix.NAME }} | |
| runs-on: ubuntu-22.04 | |
| continue-on-error: true | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| with: | |
| # Fetch all Git history, otherwise the current version number will | |
| # not be correctly calculated. | |
| fetch-depth: 0 | |
| - name: Configure AWS credentials | |
| uses: aws-actions/configure-aws-credentials@v1 | |
| with: | |
| aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| aws-region: ${{ secrets.S3_REGION }} | |
| role-to-assume: ${{ secrets.AWS_S3_ROLE }} | |
| role-duration-seconds: 1800 | |
| continue-on-error: true | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKER_USER }} | |
| password: ${{ secrets.DOCKER_PASS }} | |
| continue-on-error: true | |
| - name: Set build ID | |
| run: | | |
| set -e | |
| echo "Build ID: $(ci/generate_version_number.py)" | |
| echo "BUILD_ID=$(ci/generate_version_number.py)" >> ${GITHUB_ENV} | |
| - name: Build Docker image | |
| uses: docker/build-push-action@v3 | |
| with: | |
| file: ${{ matrix.component }}/Dockerfile | |
| tags: opencuebuild/${{ matrix.component }}:${{ env.BUILD_ID }} | |
| context: . | |
| push: true | |
| - name: Extract Artifacts | |
| run: | | |
| set -e | |
| image_name="opencuebuild/${{ matrix.component }}:${BUILD_ID}" | |
| container_id=$(docker create ${image_name}) | |
| artifacts="${{ matrix.ARTIFACTS }}" | |
| mkdir -p "${GITHUB_WORKSPACE}/artifacts/" | |
| for artifact in $artifacts; do | |
| docker cp ${container_id}:/opt/opencue/${artifact} "${GITHUB_WORKSPACE}/artifacts/" | |
| done | |
| docker rm $container_id | |
| - name: Upload Artifacts | |
| env: | |
| S3_BUCKET: ${{ secrets.S3_BUCKET }} | |
| run: | | |
| artifacts="${{ matrix.ARTIFACTS }}" | |
| for artifact in $artifacts; do | |
| aws s3 cp ${GITHUB_WORKSPACE}/artifacts/${artifact} s3://${S3_BUCKET}/opencue/${BUILD_ID}/ | |
| done | |
| create_other_artifacts: | |
| name: Create Other Build Artifacts | |
| needs: build_components | |
| runs-on: ubuntu-22.04 | |
| continue-on-error: true | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| with: | |
| # Fetch all Git history, otherwise the current version number will | |
| # not be correctly calculated. | |
| fetch-depth: 0 | |
| - name: Configure AWS credentials | |
| uses: aws-actions/configure-aws-credentials@v1 | |
| with: | |
| aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| aws-region: ${{ secrets.S3_REGION }} | |
| role-to-assume: ${{ secrets.AWS_S3_ROLE }} | |
| role-duration-seconds: 1800 | |
| - name: Set build ID | |
| run: | | |
| set -e | |
| echo "Build ID: $(ci/generate_version_number.py)" | |
| echo "BUILD_ID=$(ci/generate_version_number.py)" >> ${GITHUB_ENV} | |
| - name: Extract database schema | |
| run: | | |
| mkdir -p "${GITHUB_WORKSPACE}/artifacts/" | |
| ci/extract_schema.sh ${BUILD_ID} "${GITHUB_WORKSPACE}/artifacts/" | |
| - name: Create build metadata | |
| run: | | |
| mkdir -p "${GITHUB_WORKSPACE}/artifacts/" | |
| echo "{\"git_commit\": \"$(BUILD_SOURCEVERSION)\"}" | tee "${GITHUB_WORKSPACE}/artifacts/build_metadata.json" | |
| - name: Upload artifacts | |
| env: | |
| S3_BUCKET: ${{ secrets.S3_BUCKET }} | |
| run: | | |
| aws s3 cp LICENSE s3://${S3_BUCKET}/opencue/${BUILD_ID}/ | |
| aws s3 cp VERSION s3://${S3_BUCKET}/opencue/${BUILD_ID}/ | |
| aws s3 cp "${GITHUB_WORKSPACE}/artifacts/schema-${BUILD_ID}.sql" s3://${S3_BUCKET}/opencue/${BUILD_ID}/ | |
| aws s3 cp "${GITHUB_WORKSPACE}/artifacts/seed_data-${BUILD_ID}.sql" s3://${S3_BUCKET}/opencue/${BUILD_ID}/ | |
| aws s3 cp "${GITHUB_WORKSPACE}/artifacts/build_metadata.json" s3://${S3_BUCKET}/opencue/${BUILD_ID}/ | |
| - name: Display artifacts | |
| env: | |
| S3_BUCKET: ${{ secrets.S3_BUCKET }} | |
| run: | | |
| aws s3 ls s3://${S3_BUCKET}/opencue/${BUILD_ID}/ |