diff --git a/.github/workflows/build-images-action.yml b/.github/workflows/build-images-action.yml index a05c359527..85597f6594 100644 --- a/.github/workflows/build-images-action.yml +++ b/.github/workflows/build-images-action.yml @@ -1,56 +1,118 @@ name: build-images-action on: - push: - branches: - - 'main' - - 'release-*' - tags: - - 'v*' - -permissions: {} + pull_request + # push: + # branches: + # - 'main' + # - 'release-*' + # tags: + # - 'v*' jobs: - build: - name: Build container images - runs-on: ubuntu-latest - - permissions: - contents: read - - if: github.repository == 'metal3-io/baremetal-operator' - steps: - - name: build bmo image - uses: toptal/jenkins-job-trigger-action@137fff703dd260b52b53d3ba1960396415abc568 # 1.0.2 - with: - jenkins_url: "https://jenkins.nordix.org/" - jenkins_user: "metal3.bot@gmail.com" - jenkins_token: ${{ secrets.JENKINS_TOKEN }} - job_name: "metal3_baremetal-operator_container_image_building" - job_params: | - { - "BUILD_CONTAINER_IMAGE_GIT_REFERENCE": "${{ github.ref }}" - } - job_timeout: "1000" - - name: build keepalived image - uses: toptal/jenkins-job-trigger-action@137fff703dd260b52b53d3ba1960396415abc568 # 1.0.2 - with: - jenkins_url: "https://jenkins.nordix.org/" - jenkins_user: "metal3.bot@gmail.com" - jenkins_token: ${{ secrets.JENKINS_TOKEN }} - job_name: "metal3_keepalived_container_image_building" - job_params: | - { - "BUILD_CONTAINER_IMAGE_GIT_REFERENCE": "${{ github.ref }}" - } - job_timeout: "1000" - - name: Slack Notification on Failure - if: ${{ failure() }} - uses: rtCamp/action-slack-notify@4e5fb42d249be6a45a298f3c9543b111b02f7907 # 2.3.0 - env: - SLACK_TITLE: 'GitHub Action Failed in ${{ github.repository }}' - SLACK_COLOR: '#FF0000' - SLACK_MESSAGE: 'The GitHub Action workflow failed for baremetal operator image build.' - SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} - SLACK_CHANNEL: metal3-github-actions-notify - SLACK_USERNAME: metal3-github-actions-notify + build_bmo: + # uses: Nordix/metal3-project-infra/.github/workflow-templates/container-image-build.yml@mquhuy/add-container-image-build-wf-template + uses: .github/workflows/container-image-build.yml + with: + image-name: "baremetal-operator" + build_keepalived: + uses: Nordix/metal3-project-infra/.github/workflow-templates/container-image-build.yml@mquhuy/add-container-image-build-wf-template + with: + image-name: "keepalived" + dockerfile-directory: resources/keepalived-docker + # name: Build BMO container image + # runs-on: ubuntu-latest + # + # permissions: + # contents: read + # + # if: github.repository == 'metal3-io/baremetal-operator' + # steps: + # + # - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + # with: + # ref: ${{ github.ref }} + # + # - name: Get current date + # id: date + # run: echo "current_date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + # + # - name: Get image tags + # id: image_tags + # run: | + # BASE_TAG=`echo "${{ github.ref_name }}" | sed 's/\//_/'` + # IMAGE_TAGS="${BASE_TAG}, ${BASE_TAG}_${{ steps.date.outputs.current_date }}_${{ github.sha }}" + # if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then + # IMAGE_TAGS="${IMAGE_TAGS}, latest" + # fi + # echo "IMAGE_TAGS=${IMAGE_TAGS}" >> $GITHUB_ENV + # + # - name: Build BMO image + # uses: mr-smithers-excellent/docker-build-push@59523c638baec979a74fea99caa9e29d97e5963c # v6.4 + # with: + # image: metal3-io/baremetal-operator + # tags: ${{ env.IMAGE_TAGS }} + # registry: quay.io + # username: ${{ secrets.QUAY_IO_USERNAME }} + # password: "${{ secrets.QUAY_IO_TOKEN }}" + # + # - name: Slack Notification on Failure + # if: ${{ failure() }} + # uses: rtCamp/action-slack-notify@4e5fb42d249be6a45a298f3c9543b111b02f7907 # 2.3.0 + # env: + # SLACK_TITLE: 'GitHub Action Failed in ${{ github.repository }}' + # SLACK_COLOR: '#FF0000' + # SLACK_MESSAGE: 'The GitHub Action workflow failed for BMO image build.' + # SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + # SLACK_CHANNEL: metal3-github-actions-notify + # SLACK_USERNAME: metal3-github-actions-notify + # + # build_keepalived: + # name: Build keepalived container image + # runs-on: ubuntu-latest + # + # permissions: + # contents: read + # + # if: github.repository == 'metal3-io/baremetal-operator' + # steps: + # + # - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + # with: + # ref: ${{ github.ref }} + # + # - name: Get current date + # id: date + # run: echo "current_date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + # + # - name: Get image tags + # id: image_tags + # run: | + # BASE_TAG=`echo "${{ github.ref_name }}" | sed 's/\//_/'` + # IMAGE_TAGS="${BASE_TAG}, ${BASE_TAG}_${{ steps.date.outputs.current_date }}_${{ github.sha }}" + # if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then + # IMAGE_TAGS="${IMAGE_TAGS}, latest" + # fi + # echo "IMAGE_TAGS=${IMAGE_TAGS}" >> $GITHUB_ENV + # + # - name: Build keepalived image + # uses: mr-smithers-excellent/docker-build-push@59523c638baec979a74fea99caa9e29d97e5963c # v6.4 + # with: + # image: metal3-io/keepalived + # tags: ${{ env.IMAGE_TAGS }} + # dockerfile: resources/keepalived-docker/Dockerfile + # directory: resources/keepalived-docker + # registry: quay.io + # username: ${{ secrets.QUAY_IO_USERNAME }} + # password: "${{ secrets.QUAY_IO_TOKEN }}" + # + # - name: Slack Notification on Failure + # if: ${{ failure() }} + # uses: rtCamp/action-slack-notify@4e5fb42d249be6a45a298f3c9543b111b02f7907 # 2.3.0 + # env: + # SLACK_TITLE: 'GitHub Action Failed in ${{ github.repository }}' + # SLACK_COLOR: '#FF0000' + # SLACK_MESSAGE: 'The GitHub Action workflow failed for keepalived image build.' + # SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + # SLACK_CHANNEL: metal3-github-actions-notify + # SLACK_USERNAME: metal3-github-actions-notify diff --git a/.github/workflows/container-image-build.yml b/.github/workflows/container-image-build.yml new file mode 100644 index 0000000000..401ce9e9d4 --- /dev/null +++ b/.github/workflows/container-image-build.yml @@ -0,0 +1,65 @@ +name: build-images action template +permissions: {} + +on: + worklow_call: + inputs: + image-name: + required: true + description: "Name of the image to build" + type: string + dockerfile-directory: + required: false + description: "The directory where the dockerfile locates, as relative to the repo root" + type: string + default: . + +jobs: + job: + runs-on: ubuntu-latest + if: github.repository.fork == false + + permissions: + contents: read + + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + ref: ${{ github.ref }} + + - name: Get current date + id: date + run: echo "current_date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + + - name: Get image tags + id: image_tags + run: | + BASE_TAG=`echo "${{ github.ref_name }}" | sed 's/\//_/'` + IMAGE_TAGS="${BASE_TAG}, ${BASE_TAG}_${{ steps.date.outputs.current_date }}_${{ github.sha }}" + if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then + IMAGE_TAGS="${IMAGE_TAGS}, latest" + fi + echo "IMAGE_TAGS=${IMAGE_TAGS}" >> $GITHUB_ENV + + - name: Build ${{ inputs.image-name }} image + uses: mr-smithers-excellent/docker-build-push@59523c638baec979a74fea99caa9e29d97e5963c # v6.4 + with: + image: metal3-io/${{ inputs.image-name }} + tags: ${{ env.IMAGE_TAGS }} + directory: ${{ inputs.dockerfile-directory }} + dockerfile: ${{ inputs.dockerfile-directory }}/Dockerfile + registry: quay.io + username: ${{ secrets.QUAY_IO_USERNAME }} + password: "${{ secrets.QUAY_IO_TOKEN }}" + imagePush: false + + - name: Slack Notification on Failure + if: ${{ failure() }} + uses: rtCamp/action-slack-notify@4e5fb42d249be6a45a298f3c9543b111b02f7907 # 2.3.0 + env: + SLACK_TITLE: 'GitHub Action Failed in ${{ github.repository }}' + SLACK_COLOR: '#FF0000' + SLACK_MESSAGE: 'The GitHub Action workflow failed for ${{ inputs.image-name }} image build.' + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + SLACK_CHANNEL: metal3-github-actions-notify + SLACK_USERNAME: metal3-github-actions-notify