diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml new file mode 100644 index 00000000..503448f3 --- /dev/null +++ b/.github/workflows/push.yaml @@ -0,0 +1,64 @@ +name: Build container images + +on: # yamllint disable-line rule:truthy + push: + branches: [main] + pull_request_target: + types: [opened, syncronize, reopened, ready_for_review] + +jobs: + build: + name: Build images + runs-on: ubuntu-22.04 + strategy: + matrix: + include: + - directory: server + image_base: quay.io/konflux-workspaces/workspaces-server + - directory: operator + image_base: quay.io/konflux-workspaces/workspaces-operator + + steps: + - name: Checkout Git Repository + uses: actions/checkout@v4 + if: ${{ github.event_name == 'pull_request_target' }} + with: + ref: ${{ github.event.pull_request.head.ref }} + repository: ${{ github.event.pull_request.head.repo.full_name }} + + - name: Checkout Git Repository + uses: actions/checkout@v4 + if: ${{ github.event_name == 'push' }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Determine image tag + id: tag + run: | + if [[ "${GITHUB_EVENT_NAME}" -eq "pull_request_target" ]]; then + echo "tag=${{ matrix.image_base }}:pr-${{ github.event.pull_request.number }}-${GITHUB_SHA:0:8}" >> ${GITHUB_OUTPUT} + else + echo "tag=${{ matrix.image_base }}:${GITHUB_SHA:0:8}" >> ${GITHUB_OUTPUT} + fi + + - name: Build image + env: + LATEST: ${{ matrix.image_base }}:latest + IMG: ${{ steps.tag.outputs.tag }} + run: | + make -C "${{ matrix.directory }}" docker-build + if [[ "${GITHUB_EVENT_NAME}" -eq "push" ]]; then + docker tag "${IMG}" "${LATEST}" + fi + + - name: Login to Quay + uses: docker/login-action@v3 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_TOKEN }} + + - name: Push images + run: | + docker push -a ${{ matrix.image_base }}