name: Weekly Docker Build on: push: schedule: - cron: '0 1 * * 0' # 01:00 sáng Chủ nhật (UTC) workflow_dispatch: # Cho phép chạy tay nếu cần env: BASE_IMAGE_PATH: git.thuanle.me/public/base IMAGE: arch-docker-node jobs: build: strategy: matrix: arch: - amd64 runs-on: ${{ matrix.arch }} steps: - name: Checkout uses: actions/checkout@v4 - name: Login to Docker Registry uses: docker/login-action@v3 with: registry: git.thuanle.me username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build Docker images run: | echo "Building image ${{ env.IMAGE }} for architecture: ${{ matrix.arch }}" docker build \ -f ${{ env.IMAGE }}.${{ matrix.arch }}.Dockerfile \ -t ${{ env.BASE_IMAGE_PATH }}:${{ env.IMAGE }}-${{ matrix.arch }}-latest \ --label "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \ --label "commit_sha=${{ github.sha }}" \ . docker push ${{ env.BASE_IMAGE_PATH }}:${{ env.IMAGE }}-${{ matrix.arch }}-latest # amend-manifest: # runs-on: ubuntu-latest # needs: [build] # steps: # - name: Login to Docker Registry # uses: docker/login-action@v3 # with: # registry: git.thuanle.me # username: ${{ secrets.DOCKER_USERNAME }} # password: ${{ secrets.DOCKER_PASSWORD }} # - name: Push Docker manifest # run: | # echo "Delete existing manifest" # docker manifest rm ${{ env.BASE_IMAGE_PATH }}:latest || true # echo "Create new manifest" # docker manifest create ${{ env.BASE_IMAGE_PATH }}:latest \ # ${{ env.BASE_IMAGE_PATH }}:amd64-latest \ # ${{ env.BASE_IMAGE_PATH }}:arm64-latest # docker manifest push ${{ env.BASE_IMAGE_PATH }}:latest