diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 94711bb1..d583f959 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -45,555 +45,21 @@ jobs: echo "Workflow dispatch reason: $INPUTS_REASON" echo "Use test image: $INPUTS_USE_TEST_IMAGE" - acarshub_typescript: - runs-on: ubuntu-latest - steps: - # Check out our code - - name: Checkout - uses: actions/checkout@v4.1.0 - - - name: Get version - run: | - echo "VERSION=$(sed '1!d' ./version-nextgen)" >> $GITHUB_ENV - - # Show version tag - - name: Show version tag - run: | - echo "ACARS Hub Version: ${{ env.VERSION }}" - echo "ACARS Hub Build: ${{ github.run_number }}" - - - name: Build ACARSHub typescript test - working-directory: ./acarshub-typescript - run: | - set -xe - npm install - sed -i 's/Pre-Release/ACARS Hub NextGen: ${{ env.VERSION }} Build ${{ github.run_number }}/' ./src/helpers/menu.ts - npm run build - mkdir -p ./webapp/static/images - mkdir -p ./webapp/static/js - mkdir -p ./webapp/static/sounds - mkdir -p ./webapp/templates - cp -r ./dist/static/images ./webapp/static/ - cp -r ./dist/static/sounds ./webapp/static/ - cp -r ./dist/static/js ./webapp/static/ - mv ./dist/static/index.html ./webapp/templates/ - tar cvfz webapp.tar.gz ./webapp - cp webapp.tar.gz ../webapp.tar.gz - - - name: Save webapp.tar.gz - uses: actions/upload-artifact@v3 - with: - name: webapp - path: | - ./webapp.tar.gz - - deploy_ghcr_nextgen: - name: Deploy ACARS Hub Next Gen Base Image - runs-on: ubuntu-latest - - steps: - # Check out our code - - name: Checkout - uses: actions/checkout@v4.1.0 - with: - fetch-depth: 2 - - - name: Get specific changed files - id: changed-files-specific - uses: tj-actions/changed-files@v39.2.0 - with: - files: | - Dockerfile.nextgen - .github/workflows/deploy.yml - - - name: Login to ghcr.io - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Get metadata from repo - - name: Extract metadata (tags, labels) for Docker - id: meta - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - # Set up QEMU for multi-arch builds - - name: Set up QEMU - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/setup-qemu-action@v3 - - # Set up buildx for multi platform builds - - name: Set up Docker Buildx - id: buildx - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/setup-buildx-action@v3 - - # Change the dockerfile to use the test image if we've been triggered as a test - - - name: Change dockerfile if under baseimage test - id: change_dockerfile - if: ${{ github.event.inputs.use_test_image == 'true' }} - run: | - sed -i "s/:python/:python-test-pr/g" Dockerfile.nextgen - - - name: Set output tag - id: set-output - run: | - # if we're using the test image, set an env variable to ghcr.io/sdr-enthusiasts/docker-acarshub:nextgen-test-pr - if [ "${{ github.event.inputs.use_test_image == 'true' }}" = "true" ]; then - echo "dockertag=ghcr.io/sdr-enthusiasts/docker-acarshub:nextgen-test-pr" >> $GITHUB_ENV - else - echo "dockertag=ghcr.io/sdr-enthusiasts/docker-acarshub:nextgen" >> $GITHUB_ENV - fi - - # Build & Push Dockerfile (only push if this action was NOT triggered by a PR) - - name: Build & Push ghcr.io/sdr-enthusiasts/docker-acarshub:nextgen - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile.nextgen - no-cache: true - platforms: linux/amd64,linux/arm/v7,linux/arm/v6,linux/arm64 - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ env.dockertag }} - labels: ${{ steps.meta.outputs.labels }} - - deploy_ghcr_latest: - name: Deploy to latest to dockerhub - runs-on: ubuntu-latest - needs: [deploy_ghcr_nextgen, acarshub_typescript] - steps: - # Check out our code - - name: Checkout - uses: actions/checkout@v4.1.0 - with: - fetch-depth: 2 - - - name: Get specific changed files - id: changed-files-specific - uses: tj-actions/changed-files@v39.2.0 - with: - files: | - Dockerfile.nextgen - Dockerfile.acarshub - acarshub-typescript/** - rootfs/** - .github/workflows/deploy.yml - version-nextgen - - - name: Download webapp - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: actions/download-artifact@v3 - with: - name: webapp - - - name: Get version - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "VERSION=$(sed '1!d' ./version-nextgen)" >> $GITHUB_ENV - - # Show version tag - - name: Show version tag - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "ACARS Hub Version: ${{ env.VERSION }}" - echo "ACARS Hub Build: ${{ github.run_number }}" - - - name: Create ACARS Hub Version file - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "${{ env.VERSION }} Build ${{ github.run_number }}" > ./rootfs/version - - - name: Create version file - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - rm ./rootfs/version - echo "${{ env.VERSION }} Build ${{ github.run_number }}" >> ./rootfs/acarshub-version - - - name: Login to ghcr.io - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - # Change the dockerfile to use the test image if we've been triggered as a test - - - name: Change dockerfile if under baseimage test - id: change_dockerfile - if: ${{ github.event.inputs.use_test_image == 'true' }} - run: | - sed -i "s/:nextgen/:nextgen-test-pr/g" Dockerfile.acarshub - - - name: Set output tag - id: set-output - run: | - # if we're using the test image, set an env variable to ghcr.io/sdr-enthusiasts/docker-acarshub:nextgen-test-pr - if [ "${{ github.event.inputs.use_test_image == 'true' }}" = "true" ]; then - echo "dockertag=ghcr.io/sdr-enthusiasts/docker-acarshub:baseimage-test" >> $GITHUB_ENV - else - echo "dockertag=ghcr.io/sdr-enthusiasts/docker-acarshub:latest" >> $GITHUB_ENV - fi - # Get metadata from repo - - name: Extract metadata (tags, labels) for Docker - id: meta - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - # Set up QEMU for multi-arch builds - - name: Set up QEMU - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/setup-qemu-action@v3 - - # Set up buildx for multi platform builds - - name: Set up Docker Buildx - id: buildx - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/setup-buildx-action@v3 - - # Build & Push Dockerfile (only push if this action was NOT triggered by a PR) - - name: Build & Push ghcr.io/sdr-enthusiasts/docker-acarshub:latest - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile.acarshub - no-cache: true - platforms: linux/amd64,linux/arm/v7,linux/arm/v6,linux/arm64 - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ env.dockertag }} - labels: ${{ steps.meta.outputs.labels }} - - deploy_ghcr_version_specific: - name: Deploy version to dockerhub - runs-on: ubuntu-latest - needs: [deploy_ghcr_nextgen, acarshub_typescript] - if: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} - steps: - # Check out our code - - name: Checkout - uses: actions/checkout@v4.1.0 - with: - fetch-depth: 2 - - - name: Get specific changed files - id: changed-files-specific - uses: tj-actions/changed-files@v39.2.0 - with: - files: | - Dockerfile.nextgen - Dockerfile.acarshub - acarshub-typescript/** - rootfs/** - .github/deploy.yml - version - - - name: Download webapp - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: actions/download-artifact@v3 - with: - name: webapp - - - name: Get version - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "VERSION=$(sed '1!d' ./version-nextgen)" >> $GITHUB_ENV - - # Show version tag - - name: Show version tag - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "ACARS Hub Version: ${{ env.VERSION }}" - echo "ACARS Hub Build: ${{ github.run_number }}" - - - name: Create ACARS Hub Version file - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "${{ env.VERSION }} Build ${{ github.run_number }}" > ./rootfs/version - - - name: Create version file - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - rm ./rootfs/version - echo "${{ env.VERSION }} Build ${{ github.run_number }}" >> ./rootfs/acarshub-version - - - name: Login to ghcr.io - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Get metadata from repo - - name: Extract metadata (tags, labels) for Docker - id: meta - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - # Set up QEMU for multi-arch builds - - name: Set up QEMU - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/setup-qemu-action@v3 - - # Set up buildx for multi platform builds - - name: Set up Docker Buildx - id: buildx - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/setup-buildx-action@v3 - - # Build & Push Dockerfile (only push if this action was NOT triggered by a PR) - - name: Build & Push ghcr.io/sdr-enthusiasts/docker-acarshub:version specific - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile.acarshub - no-cache: true - platforms: linux/amd64,linux/arm/v7,linux/arm/v6,linux/arm64 - push: ${{ github.event_name != 'pull_request' }} - tags: ghcr.io/sdr-enthusiasts/docker-acarshub:${{ env.VERSION }}Build${{ github.run_number }} - labels: ${{ steps.meta.outputs.labels }} - - deploy_ghcr_latest_no_healthcheck: - name: Deploy to latest/no healthcheck - runs-on: ubuntu-latest - needs: [deploy_ghcr_nextgen, acarshub_typescript] - if: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} - steps: - # Check out our code - - name: Checkout - uses: actions/checkout@v4.1.0 - with: - fetch-depth: 2 - - - name: Get specific changed files - id: changed-files-specific - uses: tj-actions/changed-files@v39.2.0 - with: - files: | - Dockerfile.nextgen - Dockerfile.acarshub - acarshub-typescript/** - rootfs/** - .github/deploy.yml - version - - - name: Download webapp - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: actions/download-artifact@v3 - with: - name: webapp - - - name: Get version - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "VERSION=$(sed '1!d' ./version-nextgen)" >> $GITHUB_ENV - - # Show version tag - - name: Show version tag - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "ACARS Hub Version: ${{ env.VERSION }}" - echo "ACARS Hub Build: ${{ github.run_number }}" - - - name: Create ACARS Hub Version file - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "${{ env.VERSION }} Build ${{ github.run_number }}" > ./rootfs/version - - - name: Create version file - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - rm ./rootfs/version - echo "${{ env.VERSION }} Build ${{ github.run_number }}" >> ./rootfs/acarshub-version - - - name: Login to ghcr.io - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Get metadata from repo - - name: Extract metadata (tags, labels) for Docker - id: meta - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - # Set up QEMU for multi-arch builds - - name: Set up QEMU - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/setup-qemu-action@v3 - - # Set up buildx for multi platform builds - - name: Set up Docker Buildx - id: buildx - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/setup-buildx-action@v3 - - # Patch dockerfile to remove healthcheck - - name: Patch Dockerfile to remove healthcheck - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: sed '/^HEALTHCHECK /d' < Dockerfile.acarshub > Dockerfile.acarshub.nohealthcheck - - # Build & Push Dockerfile (only push if this action was NOT triggered by a PR) - - name: Build & Push ghcr.io/sdr-enthusiasts/docker-acarshub:latest_nohealthcheck - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile.acarshub.nohealthcheck - no-cache: true - platforms: linux/amd64,linux/arm/v7,linux/arm/v6,linux/arm64 - push: ${{ github.event_name != 'pull_request' }} - tags: ghcr.io/sdr-enthusiasts/docker-acarshub:latest_nohealthcheck - labels: ${{ steps.meta.outputs.labels }} - - deploy_ghcr_version_specific_no_healthcheck: - name: Deploy version specific no healthcheck to dockerhub - runs-on: ubuntu-latest - needs: [deploy_ghcr_nextgen, acarshub_typescript] - if: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} - outputs: - cleanupinfo: ${{ steps.set-output.outputs.do_release }} - steps: - # Check out our code - - name: Checkout - uses: actions/checkout@v4.1.0 - with: - fetch-depth: 2 - - - name: Get specific changed files - id: changed-files-specific - uses: tj-actions/changed-files@v39.2.0 - with: - files: | - Dockerfile.nextgen - Dockerfile.acarshub - acarshub-typescript/** - rootfs/** - .github/deploy.yml - version - - - name: Download webapp - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: actions/download-artifact@v3 - with: - name: webapp - - - name: Get version - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "VERSION=$(sed '1!d' ./version-nextgen)" >> $GITHUB_ENV - - # Show version tag - - name: Show version tag - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "ACARS Hub Version: ${{ env.VERSION }}" - echo "ACARS Hub Build: ${{ github.run_number }}" - - - name: Create ACARS Hub Version file - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - echo "${{ env.VERSION }} Build ${{ github.run_number }}" > ./rootfs/version - - - name: Create version file - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: | - rm ./rootfs/version - echo "${{ env.VERSION }} Build ${{ github.run_number }}" >> ./rootfs/acarshub-version - - - name: Login to ghcr.io - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Get metadata from repo - - name: Extract metadata (tags, labels) for Docker - id: meta - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - # Set up QEMU for multi-arch builds - - name: Set up QEMU - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/setup-qemu-action@v3 - - # Set up buildx for multi platform builds - - name: Set up Docker Buildx - id: buildx - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/setup-buildx-action@v3 - - # Patch dockerfile to remove healthcheck - - name: Patch Dockerfile to remove healthcheck - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - run: sed '/^HEALTHCHECK /d' < Dockerfile.acarshub > Dockerfile.acarshub.nohealthcheck - - # Build & Push Dockerfile (only push if this action was NOT triggered by a PR) - - name: Build & Push ghcr.io/sdr-enthusiasts/docker-acarshub:version_nohealthcheck - if: steps.changed-files-specific.outputs.any_changed == 'true' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.reason != '') - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile.acarshub.nohealthcheck - no-cache: true - platforms: linux/amd64,linux/arm/v7,linux/arm/v6,linux/arm64 - push: ${{ github.event_name != 'pull_request' }} - tags: ghcr.io/sdr-enthusiasts/docker-acarshub:${{ env.VERSION }}Build${{ github.run_number }}_nohealthcheck - labels: ${{ steps.meta.outputs.labels }} - - create_release: - name: Create Release - runs-on: ubuntu-latest - if: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} - needs: - - deploy_ghcr_nextgen - - acarshub_typescript - - deploy_ghcr_latest - - deploy_ghcr_version_specific - - deploy_ghcr_latest_no_healthcheck - - deploy_ghcr_version_specific_no_healthcheck - steps: - - name: Checkout code - uses: actions/checkout@v4.1.0 - - - name: Get version - run: | - echo "VERSION=$(sed '1!d' ./version-nextgen)" >> $GITHUB_ENV - - # Show version tag - - name: Show version tag - run: | - echo "ACARS Hub Version: ${{ env.VERSION }}" - echo "ACARS Hub Build: ${{ github.run_number }}" - - - name: Create Release - uses: ncipollo/release-action@v1 - with: - body: "See Commits" - allowUpdates: true - commit: ${{ github.ref }} - name: ${{ env.VERSION }} Build ${{ github.run_number }} - tag: ${{ env.VERSION }} - token: ${{ secrets.GITHUB_TOKEN }} + deploy: + name: Deploy + uses: sdr-enthusiasts/common-github-workflows/.github/workflows/build_and_push_image.yml@main + with: + push_enabled: true + push_destinations: ghcr.io + ghcr_repo_owner: ${{ github.repository_owner }} + ghcr_repo: ${{ github.repository }} + # set build_latest to true if github.event.inputs.use_test_image is false + build_latest: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} + build_baseimage_test: ${{ github.event.inputs.use_test_image == 'true' }} + # only build the entire stack if we are not using the test image + build_version_specific: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} + build_platform_specific: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} + build_nohealthcheck: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} + build_baseimage_url: :python/:python-test-pr + secrets: + ghcr_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test-pr build.yml b/.github/workflows/test-pr build.yml index 251a9669..6e2d72f0 100644 --- a/.github/workflows/test-pr build.yml +++ b/.github/workflows/test-pr build.yml @@ -69,168 +69,20 @@ jobs: - name: Run hadolint against Dockerfiles run: docker run --rm -i -v "$PWD":/workdir --workdir /workdir --entrypoint hadolint hadolint/hadolint $(find . -type f -iname "Dockerfile*") - deploy_ghcr_nextgen_test: - name: Deploy ACARS Hub Next Gen Base Image - runs-on: ubuntu-latest - steps: - # Check out our code - - name: Checkout - uses: actions/checkout@v4.1.0 - with: - fetch-depth: 0 - - - name: Get specific changed files - id: changed-files-specific - uses: tj-actions/changed-files@v39.2.0 - with: - files: | - Dockerfile.nextgen - .github/workflows/test-pr.yml - rootfs/webapp/requirements.txt - - - name: Login to ghcr.io - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Get metadata from repo - - name: Extract metadata (tags, labels) for Docker - id: meta - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - # Set up QEMU for multi-arch builds - - name: Set up QEMU - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: docker/setup-qemu-action@v3 - - # Set up buildx for multi platform builds - - name: Set up Docker Buildx - id: buildx - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: docker/setup-buildx-action@v3 - - # Build & Push Dockerfile (only push if this action was NOT triggered by a PR) - - name: Build & Push ghcr.io/sdr-enthusiasts/docker-acarshub:nextgen-test - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile.nextgen - no-cache: true - platforms: linux/386,linux/amd64,linux/arm/v7,linux/arm/v6,linux/arm64 - push: true - tags: ghcr.io/sdr-enthusiasts/docker-acarshub:nextgen-test - labels: ${{ steps.meta.outputs.labels }} - - deploy_ghcr_latest_test: - name: Deploy test to GHCR - runs-on: ubuntu-latest - needs: - - acarshub-typescript - - deploy_ghcr_nextgen_test - - steps: - # Check out our code - - name: Checkout - uses: actions/checkout@v4.1.0 - with: - fetch-depth: 0 - - - name: Get specific changed files - id: changed-files-specific - uses: tj-actions/changed-files@v39.2.0 - with: - files: | - Dockerfile.nextgen - Dockerfile.acarshub - acarshub-typescript/** - rootfs/** - .github/workflows/test-pr.yml - version - - - name: Get status of next file - id: changed-file-nextgen - uses: tj-actions/changed-files@v39.2.0 - with: - files: | - Dockerfile.nextgen - - - name: Download webapp - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: actions/download-artifact@v3 - with: - name: webapp - - - name: Get version - if: steps.changed-files-specific.outputs.any_changed == 'true' - run: | - echo "VERSION=$(sed '1!d' ./version-nextgen)" >> $GITHUB_ENV - - # Show version tag - - name: Show version tag - if: steps.changed-files-specific.outputs.any_changed == 'true' - run: | - echo "ACARS Hub Version: ${{ env.VERSION }}" - echo "ACARS Hub Build: ${{ github.run_number }}" - - - name: Create ACARS Hub Version file - if: steps.changed-files-specific.outputs.any_changed == 'true' - run: | - echo "${{ env.VERSION }} Build ${{ github.run_number }}" > ./rootfs/version - - - name: Create version file - if: steps.changed-files-specific.outputs.any_changed == 'true' - run: | - rm ./rootfs/version - echo "${{ env.VERSION }} Build ${{ github.run_number }}" >> ./rootfs/acarshub-version - - - name: Login to ghcr.io - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Get metadata from repo - - name: Extract metadata (tags, labels) for Docker - id: meta - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - # Set up QEMU for multi-arch builds - - name: Set up QEMU - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: docker/setup-qemu-action@v3 - - # Set up buildx for multi platform builds - - name: Set up Docker Buildx - id: buildx - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: docker/setup-buildx-action@v3 - - - name: Patch Dockerfile if Nextgen was built for this branch - if: steps.changed-file-nextgen.outputs.any_changed == 'true' - run: sed -i "s/^FROM ghcr.io\/sdr-enthusiasts\/docker-acarshub:nextgen/FROM ghcr.io\/sdr-enthusiasts\/docker-acarshub:nextgen-test/g" Dockerfile.acarshub - - # Build & Push Dockerfile (only push if this action was NOT triggered by a PR) - - name: Build & Push ghcr.io/sdr-enthusiasts/docker-acarshub:test - if: steps.changed-files-specific.outputs.any_changed == 'true' - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile.acarshub - no-cache: true - platforms: linux/386,linux/amd64,linux/arm/v7,linux/arm/v6,linux/arm64 - push: true - tags: ghcr.io/sdr-enthusiasts/docker-acarshub:test - #tags: ghcr.io/sdr-enthusiasts/docker-acarshub:test-${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} - labels: ${{ steps.meta.outputs.labels }} + deploy: + name: Deploy + uses: sdr-enthusiasts/common-github-workflows/.github/workflows/build_and_push_image.yml@main + with: + push_enabled: false + push_destinations: ghcr.io + ghcr_repo_owner: ${{ github.repository_owner }} + ghcr_repo: ${{ github.repository }} + # set build_latest to true if github.event.inputs.use_test_image is false + build_latest: true + build_baseimage_test: false + # only build the entire stack if we are not using the test image + build_version_specific: false + build_platform_specific: false + build_nohealthcheck: false + secrets: + ghcr_token: ${{ secrets.GITHUB_TOKEN }}