diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ff6aac73..ff98ffa1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,20 +11,49 @@ jobs: build: name: Build images runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + # Build binaries + - name: Run ci + run: make ci + + - name: Upload binaries + uses: actions/upload-artifact@v4 + with: + name: binaries_artifact + path: ./bin/* + + push_image: + name: Build images + runs-on: ubuntu-latest + needs: build + # if: ${{ startsWith(github.ref, 'refs/heads/') || startsWith(github.ref, 'refs/tags/') }} permissions: contents: read id-token: write # for reading credential https://github.com/rancher-eio/read-vault-secrets - container: - image: rancher/dapper:v0.6.0 steps: - # Git is not in Dapper container image. Add it manually for dirty check. - - name: Add Git - run: apk add -U git - name: Checkout code uses: actions/checkout@v4 - - name: Declare branch + + - name: Download binaries + uses: actions/download-artifact@v4 + with: + name: binaries_artifact + path: ./bin/ + + - name: Copy binaries to package run: | - echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> "$GITHUB_ENV" + cp -r ./bin/* ./package/ + + # - name: Read Secrets + # if: ${{ startsWith(github.ref, 'refs/heads/') || startsWith(github.ref, 'refs/tags/') }} + # uses: rancher-eio/read-vault-secrets@main + # with: + # secrets: | + # secret/data/github/repo/${{ github.repository }}/dockerhub/harvester/credentials username | DOCKER_USERNAME ; + # secret/data/github/repo/${{ github.repository }}/dockerhub/harvester/credentials password | DOCKER_PASSWORD # For multi-platform support - name: Set up QEMU @@ -32,38 +61,30 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - # Build binaries - - name: Run dapper ci - run: dapper ci - - name: Copy bin folder to package + - name: Declare branch run: | - cp -r ./bin/* ./package/ - - - name: Read Secrets - if: ${{ startsWith(github.ref, 'refs/heads/') || startsWith(github.ref, 'refs/tags/') }} - uses: rancher-eio/read-vault-secrets@main - with: - secrets: | - secret/data/github/repo/${{ github.repository }}/dockerhub/harvester/credentials username | DOCKER_USERNAME ; - secret/data/github/repo/${{ github.repository }}/dockerhub/harvester/credentials password | DOCKER_PASSWORD + echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> "$GITHUB_ENV" - name: Login to Docker Hub - if: ${{ startsWith(github.ref, 'refs/heads/') || startsWith(github.ref, 'refs/tags/') }} + # if: ${{ startsWith(github.ref, 'refs/heads/') || startsWith(github.ref, 'refs/tags/') }} uses: docker/login-action@v3 with: - username: ${{ env.DOCKER_USERNAME }} - password: ${{ env.DOCKER_PASSWORD }} + # username: ${{ env.DOCKER_USERNAME }} + # password: ${{ env.DOCKER_PASSWORD }} + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} # rancher/terraform-provider-harvester image - name: docker-publish - if: ${{ startsWith(github.ref, 'refs/heads/') }} + # if: ${{ startsWith(github.ref, 'refs/heads/') }} uses: docker/build-push-action@v5 with: context: package/ push: true platforms: linux/amd64,linux/arm64 - tags: rancher/terraform-provider-harvester:${{ env.branch }}-head + tags: frankyang/terraform-provider-harvester:${{ env.branch }}-head file: package/Dockerfile + - name: docker-publish-with-tag if: ${{ startsWith(github.ref, 'refs/tags/') }} uses: docker/build-push-action@v5 @@ -71,7 +92,7 @@ jobs: context: package/ push: true platforms: linux/amd64,linux/arm64 - tags: rancher/terraform-provider-harvester:${{ github.ref_name }} + tags: frankyang/terraform-provider-harvester:${{ github.ref_name }} file: package/Dockerfile build-args: | VERSION=${{ github.ref_name }} diff --git a/package/Dockerfile b/package/Dockerfile index e5a14b33..a790079f 100644 --- a/package/Dockerfile +++ b/package/Dockerfile @@ -1,3 +1,5 @@ +# syntax=docker/dockerfile:1.7.0 + FROM registry.suse.com/bci/bci-base:15.5 ARG TARGETPLATFORM diff --git a/scripts/package b/scripts/package index 4830d4c2..af8e1ebf 100755 --- a/scripts/package +++ b/scripts/package @@ -33,17 +33,6 @@ DOCKERFILE=Dockerfile rm -rf ./terraform-provider-harvester-* cp ../bin/terraform-provider-harvester-* . -docker run --privileged --rm tonistiigi/binfmt --install all -buildx create --platform linux/arm64,linux/amd64 --use -buildx ls - -# In old docker version, it doesn't support multiple values in --platform with --load. -# So we only load image with current platform. -# Ref: https://github.com/docker/buildx/issues/59#issuecomment-616050491 -buildx build \ - --build-arg PROVIDER_VERSION=${PROVIDER_VERSION} \ - --platform linux/amd64,linux/arm64 \ - -f ${DOCKERFILE} -t ${IMAGE} . buildx build --load \ --build-arg PROVIDER_VERSION=${PROVIDER_VERSION} \ -f ${DOCKERFILE} -t ${IMAGE} .