diff --git a/.github/workflows/image-release-submitter.yaml b/.github/workflows/image-release-submitter.yaml new file mode 100644 index 0000000000..78c65d517f --- /dev/null +++ b/.github/workflows/image-release-submitter.yaml @@ -0,0 +1,110 @@ +name: release-image-build-submitter + +on: + pull_request: + branches: + - master + - 'release-*' + push: + branches: + - master + - 'release-*' + +jobs: + release_submitter_image: + env: + working-directory: ./ray-operator + name: Release Submitter Docker Images + runs-on: ubuntu-latest + steps: + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: v1.22 + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + with: + ref: ${{ github.event.inputs.commit }} + + - name: Get revision SHA + id: vars + run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" + + - name: Get dependencies + run: go mod download + working-directory: ${{env.working-directory}} + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install Ray + run: pip install ray[default]==2.39.0 + + - name: Test + run: make test-e2erayjobsubmitter + working-directory: ${{env.working-directory}} + + - name: Set up Docker + uses: docker-practice/actions-setup-docker@master + + - name: Build Docker Image - Submitter + run: | + IMG=kuberay/submitter:${{ steps.vars.outputs.sha_short }} make docker-submitter-image + working-directory: ${{env.working-directory}} + + - name: Log in to Quay.io + uses: docker/login-action@v2 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_ROBOT_TOKEN }} + + # Build submitter inside the gh runner vm directly and then copy the go binaries to docker images using the Dockerfile.submitter.buildx + - name: Build linux/amd64 submitter go binary + env: + CGO_ENABLED: 0 + GOOS: linux + GOARCH: amd64 + run: | + CGO_ENABLED=$CGO_ENABLED GOOS=$GOOS GOARCH=$GOARCH go build -tags strictfipsruntime -a -o submitter-$GOARCH ./rayjobsubmitter/cmd/main.go + working-directory: ${{env.working-directory}} + + - name: Build linux/arm64 submitter binary + env: + CGO_ENABLED: 0 + GOOS: linux + GOARCH: arm64 + run: | + CGO_ENABLED=$CGO_ENABLED GOOS=$GOOS GOARCH=$GOARCH go build -tags strictfipsruntime -a -o submitter-$GOARCH ./rayjobsubmitter/cmd/main.go + working-directory: ${{env.working-directory}} + + - name: Build MultiArch Image + uses: docker/build-push-action@v5 + env: + PUSH: true + REPO_ORG: kuberay + REPO_NAME: submitter + with: + platforms: linux/amd64,linux/arm64 + context: ${{env.working-directory}} + file: ${{env.working-directory}}/Dockerfile.submitter.buildx + push: ${{env.PUSH}} + provenance: false + tags: | + quay.io/${{env.REPO_ORG}}/${{env.REPO_NAME}}:${{ steps.vars.outputs.sha_short }} + quay.io/${{env.REPO_ORG}}/${{env.REPO_NAME}}:${{ github.event.inputs.tag }} + + - name: Create tag + uses: actions/github-script@v6 + with: + script: | + await github.rest.git.createRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: 'refs/tags/ray-operator/${{ github.event.inputs.tag }}', + sha: '${{ github.event.inputs.commit }}' + })