name: API - Build and Push containers on: push: branches: - "master" paths: - "api/**" - "prowler/**" - ".github/workflows/api-build-lint-push-containers.yml" # Uncomment the code below to test this action on PRs # pull_request: # branches: # - "master" # paths: # - "api/**" # - ".github/workflows/api-build-lint-push-containers.yml" release: types: [published] env: # Tags LATEST_TAG: latest RELEASE_TAG: ${{ github.event.release.tag_name }} STABLE_TAG: stable WORKING_DIRECTORY: ./api # Container Registries PROWLERCLOUD_DOCKERHUB_REPOSITORY: prowlercloud PROWLERCLOUD_DOCKERHUB_IMAGE: prowler-api jobs: repository-check: name: Repository check runs-on: ubuntu-latest outputs: is_repo: ${{ steps.repository_check.outputs.is_repo }} steps: - name: Repository check id: repository_check working-directory: /tmp run: | if [[ ${{ github.repository }} == "prowler-cloud/prowler" ]] then echo "is_repo=true" >> "${GITHUB_OUTPUT}" else echo "This action only runs for prowler-cloud/prowler" echo "is_repo=false" >> "${GITHUB_OUTPUT}" fi # Build Prowler OSS container container-build-push: needs: repository-check if: needs.repository-check.outputs.is_repo == 'true' runs-on: ubuntu-latest defaults: run: working-directory: ${{ env.WORKING_DIRECTORY }} steps: - name: Checkout uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Set short git commit SHA id: vars run: | shortSha=$(git rev-parse --short ${{ github.sha }}) echo "SHORT_SHA=${shortSha}" >> $GITHUB_ENV - name: Login to DockerHub uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1 - name: Build and push container image (latest) # Comment the following line for testing if: github.event_name == 'push' uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 with: context: ${{ env.WORKING_DIRECTORY }} # Set push: false for testing push: true tags: | ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${{ env.LATEST_TAG }} ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${{ env.SHORT_SHA }} cache-from: type=gha cache-to: type=gha,mode=max - name: Build and push container image (release) if: github.event_name == 'release' uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 with: context: ${{ env.WORKING_DIRECTORY }} push: true tags: | ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${{ env.RELEASE_TAG }} ${{ env.PROWLERCLOUD_DOCKERHUB_REPOSITORY }}/${{ env.PROWLERCLOUD_DOCKERHUB_IMAGE }}:${{ env.STABLE_TAG }} cache-from: type=gha cache-to: type=gha,mode=max - name: Trigger deployment if: github.event_name == 'push' uses: peter-evans/repository-dispatch@5fc4efd1a4797ddb68ffd0714a238564e4cc0e6f # v4.0.0 with: token: ${{ secrets.PROWLER_BOT_ACCESS_TOKEN }} repository: ${{ secrets.CLOUD_DISPATCH }} event-type: prowler-api-deploy client-payload: '{"sha": "${{ github.sha }}", "short_sha": "${{ env.SHORT_SHA }}"}'