(packageName, remoteTags)
| 161 | |
| 162 | // Update release records for given remoteTags. |
| 163 | const updateReleaseRecords = async function (packageName, remoteTags) { |
| 164 | // Remove failed local releases that not listed in remoteTags |
| 165 | let releases = await Release.fetchAll(packageName); |
| 166 | for (const rel of releases) { |
| 167 | if (rel.state == ReleaseState.Failed) { |
| 168 | // Remove failed but disappeared release. It happens when |
| 169 | // the remote tag has been removed |
| 170 | // the remote tag has been re-tagged |
| 171 | if (!remoteTags.find(x => x.tag == rel.tag && x.commit == rel.commit)) { |
| 172 | logger.warn( |
| 173 | { |
| 174 | pkg: packageName, |
| 175 | rel: `${packageName}@${rel.version}`, |
| 176 | tag: rel.tag, |
| 177 | commit: rel.commit |
| 178 | }, |
| 179 | "remove failed release that not listed in remoteTags" |
| 180 | ); |
| 181 | await removeRelease(packageName, rel.version); |
| 182 | } |
| 183 | } |
| 184 | } |
| 185 | // Convert remoteTags to releases |
| 186 | releases = []; |
| 187 | for (const remoteTag of remoteTags) { |
| 188 | let version = getVersionFromTag(remoteTag.tag); |
| 189 | let release = await Release.fetchOne(packageName, version); |
| 190 | if (!release) { |
| 191 | let record = { |
| 192 | packageName, |
| 193 | version, |
| 194 | commit: remoteTag.commit, |
| 195 | tag: remoteTag.tag |
| 196 | }; |
| 197 | release = await Release.save(record); |
| 198 | } |
| 199 | releases.push(release); |
| 200 | } |
| 201 | return releases; |
| 202 | }; |
| 203 | |
| 204 | // Add build release jobs for given release records. |
| 205 | const addReleaseJobs = async function (releases) { |
no test coverage detected