diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml index 957e310f..bf2099ec 100644 --- a/.github/workflows/dockerhub.yml +++ b/.github/workflows/dockerhub.yml @@ -1,228 +1,269 @@ name: Docker Hub build + on: push: branches: - "develop" - "master" - "release/*" + tags: + - "carma-system-*" jobs: + determine_docker_org_and_tag: + runs-on: ubuntu-latest + outputs: + docker_organization: ${{ steps.docker-org-and-tag.outputs.docker_organization }} + docker_image_tag: ${{ steps.docker-org-and-tag.outputs.docker_image_tag }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - id: docker-org-and-tag + uses: usdot-fhwa-stol/actions/docker-org-and-tag@main + + determine_docker_image_metadata: + runs-on: ubuntu-latest + outputs: + build_date: ${{ steps.build-metadata.outputs.build_date }} + vcs_ref: ${{ steps.build-metadata.outputs.vcs_ref }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Determine Build Metadata + id: build-metadata + uses: usdot-fhwa-stol/actions/docker-build-metadata@main + dockerhub-telematic-cloud-messaging: + needs: [determine_docker_org_and_tag, determine_docker_image_metadata] runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 with: context: ./telematic_system/telematic_cloud_messaging/ - file: ./telematic_system/telematic_cloud_messaging/Dockerfile push: true - tags: usdotfhwastoldev/telematic_cloud_messaging:${{ github.ref_name }} + tags: ${{ needs.determine_docker_org_and_tag.outputs.docker_organization }}/telematic_cloud_messaging:${{ needs.determine_docker_org_and_tag.outputs.docker_image_tag }} + build-args: | + BUILD_DATE=${{ needs.determine_docker_image_metadata.outputs.build_date }} + VCS_REF=${{ needs.determine_docker_image_metadata.outputs.vcs_ref }} dockerhub-carma-streets-bridge: + needs: [determine_docker_org_and_tag, determine_docker_image_metadata] runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 with: context: ./telematic_system/telematic_units/carma_street_bridge/ - file: ./telematic_system/telematic_units/carma_street_bridge/Dockerfile push: true - tags: usdotfhwastoldev/carma_street_nats_bridge:${{ github.ref_name }} + tags: ${{ needs.determine_docker_org_and_tag.outputs.docker_organization }}/carma_street_nats_bridge:${{ needs.determine_docker_org_and_tag.outputs.docker_image_tag }} + build-args: | + BUILD_DATE=${{ needs.determine_docker_image_metadata.outputs.build_date }} + VCS_REF=${{ needs.determine_docker_image_metadata.outputs.vcs_ref }} dockerhub-carma-vehicle-bridge: + needs: [determine_docker_org_and_tag, determine_docker_image_metadata] runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 with: context: ./telematic_system/telematic_units/carma_vehicle_bridge/ - file: ./telematic_system/telematic_units/carma_vehicle_bridge/Dockerfile push: true - tags: usdotfhwastoldev/carma_vehicle_nats_bridge:${{ github.ref_name }} + tags: ${{ needs.determine_docker_org_and_tag.outputs.docker_organization }}/carma_vehicle_nats_bridge:${{ needs.determine_docker_org_and_tag.outputs.docker_image_tag }} + build-args: | + BUILD_DATE=${{ needs.determine_docker_image_metadata.outputs.build_date }} + VCS_REF=${{ needs.determine_docker_image_metadata.outputs.vcs_ref }} dockerhub-carma-cloud-bridge: + needs: [determine_docker_org_and_tag, determine_docker_image_metadata] runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 with: context: ./telematic_system/telematic_units/carma_cloud_bridge/ - file: ./telematic_system/telematic_units/carma_cloud_bridge/Dockerfile push: true - tags: usdotfhwastoldev/carma_cloud_nats_bridge:${{ github.ref_name }} + tags: ${{ needs.determine_docker_org_and_tag.outputs.docker_organization }}/carma_cloud_nats_bridge:${{ needs.determine_docker_org_and_tag.outputs.docker_image_tag }} + build-args: | + BUILD_DATE=${{ needs.determine_docker_image_metadata.outputs.build_date }} + VCS_REF=${{ needs.determine_docker_image_metadata.outputs.vcs_ref }} dockerhub-telematic-historical-data-processing: + needs: [determine_docker_org_and_tag, determine_docker_image_metadata] runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 with: context: ./telematic_system/telematic_historical_data_processing/ - file: ./telematic_system/telematic_historical_data_processing/Dockerfile push: true - tags: usdotfhwastoldev/telematic_historical_data_processing:${{ github.ref_name }} - + tags: ${{ needs.determine_docker_org_and_tag.outputs.docker_organization }}/telematic_historical_data_processing:${{ needs.determine_docker_org_and_tag.outputs.docker_image_tag }} + build-args: | + BUILD_DATE=${{ needs.determine_docker_image_metadata.outputs.build_date }} + VCS_REF=${{ needs.determine_docker_image_metadata.outputs.vcs_ref }} + dockerhub-telematic-web-server: + needs: [determine_docker_org_and_tag, determine_docker_image_metadata] runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 with: context: ./telematic_system/telematic_apps/web_app/server - file: ./telematic_system/telematic_apps/web_app/server/Dockerfile push: true - tags: usdotfhwastoldev/telematic_web_server:${{ github.ref_name }} - + tags: ${{ needs.determine_docker_org_and_tag.outputs.docker_organization }}/telematic_web_server:${{ needs.determine_docker_org_and_tag.outputs.docker_image_tag }} + build-args: | + BUILD_DATE=${{ needs.determine_docker_image_metadata.outputs.build_date }} + VCS_REF=${{ needs.determine_docker_image_metadata.outputs.vcs_ref }} + dockerhub-telematic-web-client: + needs: [determine_docker_org_and_tag, determine_docker_image_metadata] runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 with: context: ./telematic_system/telematic_apps/web_app/client - file: ./telematic_system/telematic_apps/web_app/client/Dockerfile push: true - tags: usdotfhwastoldev/telematic_web_client:${{ github.ref_name }} - + tags: ${{ needs.determine_docker_org_and_tag.outputs.docker_organization }}/telematic_web_client:${{ needs.determine_docker_org_and_tag.outputs.docker_image_tag }} + build-args: | + BUILD_DATE=${{ needs.determine_docker_image_metadata.outputs.build_date }} + VCS_REF=${{ needs.determine_docker_image_metadata.outputs.vcs_ref }} + dockerhub-telematic-apache2: + needs: [determine_docker_org_and_tag, determine_docker_image_metadata] runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 with: context: ./telematic_system/telematic_apps/apache2 - file: ./telematic_system/telematic_apps/apache2/Dockerfile push: true - tags: usdotfhwastoldev/telematic_apache2:${{ github.ref_name }} - + tags: ${{ needs.determine_docker_org_and_tag.outputs.docker_organization }}/telematic_apache2:${{ needs.determine_docker_org_and_tag.outputs.docker_image_tag }} + build-args: | + BUILD_DATE=${{ needs.determine_docker_image_metadata.outputs.build_date }} + VCS_REF=${{ needs.determine_docker_image_metadata.outputs.vcs_ref }} + dockerhub-telematic-grafana: + needs: [determine_docker_org_and_tag, determine_docker_image_metadata] runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 with: context: ./telematic_system/telematic_apps/grafana - file: ./telematic_system/telematic_apps/grafana/Dockerfile push: true - tags: usdotfhwastoldev/telematic_grafana:${{ github.ref_name }} + tags: ${{ needs.determine_docker_org_and_tag.outputs.docker_organization }}/telematic_grafana:${{ needs.determine_docker_org_and_tag.outputs.docker_image_tag }} + build-args: | + BUILD_DATE=${{ needs.determine_docker_image_metadata.outputs.build_date }} + VCS_REF=${{ needs.determine_docker_image_metadata.outputs.vcs_ref }} dockerhub-telematic-local-apache2: + needs: [determine_docker_org_and_tag, determine_docker_image_metadata] runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 with: context: ./telematic_system/telematic_apps/apache2 file: ./telematic_system/telematic_apps/apache2/local.Dockerfile push: true - tags: usdotfhwastoldev/telematic_local_apache2:${{ github.ref_name }} - - dockerhub-telematic-local-messaging: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Login to DockerHub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build - uses: docker/build-push-action@v3 - with: - context: ./telematic_system/telematic_cloud_messaging/ - file: ./telematic_system/telematic_cloud_messaging/local.Dockerfile - push: true - tags: usdotfhwastoldev/telematic_local_messaging:${{ github.ref_name }} \ No newline at end of file + tags: ${{ needs.determine_docker_org_and_tag.outputs.docker_organization }}/telematic_local_apache2:${{ needs.determine_docker_org_and_tag.outputs.docker_image_tag }} + build-args: | + BUILD_DATE=${{ needs.determine_docker_image_metadata.outputs.build_date }} + VCS_REF=${{ needs.determine_docker_image_metadata.outputs.vcs_ref }} \ No newline at end of file