@@ -42,28 +42,103 @@ jobs:
4242 uses : ./.github/workflows/warp-nc-tests.yaml
4343
4444 build-noobaa-image :
45+ name : Build Noobaa Image
4546 runs-on : ubuntu-latest
4647 timeout-minutes : 90
4748 steps :
4849 - name : Checkout
4950 uses : actions/checkout@v4
5051
51- - name : make noobaa image
52- run : make tester
52+ - name : Prepare Tags
53+ id : prep
54+ run : |
55+ DOCKER_BUILDER_IMAGE=noobaa/noobaa-builder
56+ DOCKER_BASE_IMAGE=noobaa/noobaa-base
57+ BRANCH=${{github.base_ref}}
58+ BUILDER_TAGS="${DOCKER_BUILDER_IMAGE}:${BRANCH}-"
59+ BASE_TAGS="${DOCKER_BASE_IMAGE}:${BRANCH}-"
60+ EARLIEST_VERSION_PAST=20
61+ echo "basetags=${BASE_TAGS}" >> $GITHUB_OUTPUT
62+ echo "buildertags=${BUILDER_TAGS}" >> $GITHUB_OUTPUT
63+ echo "pull_tries=${EARLIEST_VERSION_PAST}" >> $GITHUB_OUTPUT
64+
65+ - name : Check changed files
66+ id : changed_files
67+ uses : tj-actions/changed-files@v44
68+
69+ - name : Should build noobaa base image
70+ id : should_build_base
71+ run : |
72+ base_files=("package.json" "base.dockerfile" ".nvmrc")
73+ output=false
74+ for file in ${{ steps.changed_files.outputs.all_changed_files }}; do
75+ if printf '%s\n' "${base_files[@]}" | grep -x -q "$file"; then
76+ echo "File ${file} has changed, building base image."
77+ output=true
78+ break;
79+ fi
80+ done
81+ echo "should_build=${output}" >> $GITHUB_OUTPUT
82+
83+ - name : Pull noobaa-base image
84+ id : pull_base_image
85+ if : ${{ steps.should_build_base.outputs.should_build == 'false' }}
86+ run : |
87+ output=false
88+ for i in $(seq 0 ${{ steps.prep.outputs.pull_tries }})
89+ do
90+ date=$(date -d "${i} days ago" +'%Y%m%d')
91+ base_tag="quay.io/${{ steps.prep.outputs.basetags }}${date}"
92+ echo ${base_tag}
93+ docker pull ${base_tag} || continue
94+ echo "Successfully pulled ${base_tag} from quay.io"
95+ docker tag ${base_tag} noobaa-base
96+ output=true
97+ break
98+ done
99+ echo "pull_succeed=${output}" >> $GITHUB_OUTPUT
100+
101+ - name : Pull noobaa-builder image
102+ id : should_build_builder
103+ if : ${{steps.should_build_base.outputs.should_build == 'true' ||
104+ steps.pull_base_image.outputs.pull_succeed == 'false'}}
105+ run : |
106+ output=true
107+ for i in $(seq 0 ${{ steps.prep.outputs.pull_tries }})
108+ do
109+ date=$(date -d "${i} days ago" +'%Y%m%d')
110+ builder_tag="quay.io/${{ steps.prep.outputs.buildertags }}${date}"
111+ docker pull ${builder_tag} || continue
112+ echo "Successfully pulled ${builder_tag} from quay.io"
113+ docker tag ${builder_tag} noobaa-builder
114+ output=false
115+ break
116+ done
117+ echo "should_build=${output}" >> $GITHUB_OUTPUT
118+
119+ - name : Build noobaa-base image
120+ if : ${{steps.should_build_base.outputs.should_build == 'true' ||
121+ steps.pull_base_image.outputs.pull_succeed == 'false'}}
122+ run : |
123+ ${{ steps.should_build_builder.outputs.should_build == 'false' }} && flags="-o builder"
124+ make base ${flags}
125+
126+ - name : Build noobaa image
127+ run : make tester -o base
53128
54129 - name : create docker artifact
55130 run : |
56131 docker save --output noobaa.tar noobaa
57132 docker save --output noobaa-tester.tar noobaa-tester
58133
59- - name : upload noobaa docker image
134+ - name : Upload noobaa docker image
60135 uses : actions/upload-artifact@v4
61136 with :
62137 name : noobaa-image
63138 path : noobaa.tar
64139 retention-days : " 1"
65140
66- - name : upload noobaa-tester docker image
141+ - name : Upload noobaa-tester docker image
67142 uses : actions/upload-artifact@v4
68143 with :
69144 name : noobaa-tester
0 commit comments