@@ -19,10 +19,11 @@ import {
1919 getChangelogEntry ,
2020 getOptionalInput ,
2121 getVersionsByDirectory ,
22+ GITLAB_MAX_TAGS ,
2223 sortTheThings ,
2324} from './utils.js'
2425
25- const createRelease = async (
26+ export const createRelease = async (
2627 api : Gitlab ,
2728 { pkg, tagName } : { pkg : Package ; tagName : string } ,
2829) => {
@@ -55,26 +56,21 @@ const createRelease = async (
5556 }
5657}
5758
58- interface PublishOptions {
59+ export interface PublishOptions {
5960 script : string
6061 gitlabToken : string
6162 createGitlabReleases ?: boolean
6263 cwd ?: string
6364}
6465
65- interface PublishedPackage {
66+ export interface PublishedPackage {
6667 name : string
6768 version : string
6869}
6970
70- type PublishResult =
71- | {
72- published : false
73- }
74- | {
75- published : true
76- publishedPackages : PublishedPackage [ ]
77- }
71+ export type PublishResult =
72+ | { published : false }
73+ | { published : true ; publishedPackages : PublishedPackage [ ] }
7874
7975// eslint-disable-next-line sonarjs/cognitive-complexity
8076export async function runPublish ( {
@@ -92,13 +88,23 @@ export async function runPublish({
9288 { cwd } ,
9389 )
9490
95- await gitUtils . pushTags ( )
96-
9791 const { packages, tool } = await getPackages ( cwd )
92+
93+ const pushAllTags =
94+ packages . length <= GITLAB_MAX_TAGS ||
95+ ( await api . FeatureFlags . show (
96+ context . projectId ,
97+ 'git_push_create_all_pipelines' ,
98+ ) . catch ( ( ) => false ) )
99+
100+ if ( pushAllTags ) {
101+ await gitUtils . pushTags ( )
102+ }
103+
98104 const releasedPackages : Package [ ] = [ ]
99105
100106 if ( tool === 'root' ) {
101- if ( packages . length === 0 ) {
107+ if ( packages . length !== 1 ) {
102108 throw new Error (
103109 `No package found.` +
104110 'This is probably a bug in the action, please open an issue' ,
@@ -112,11 +118,9 @@ export async function runPublish({
112118
113119 if ( match ) {
114120 releasedPackages . push ( pkg )
121+ const tagName = `v${ pkg . packageJson . version } `
115122 if ( createGitlabReleases ) {
116- await createRelease ( api , {
117- pkg,
118- tagName : `v${ pkg . packageJson . version } ` ,
119- } )
123+ await createRelease ( api , { pkg, tagName } )
120124 }
121125 break
122126 }
@@ -141,6 +145,15 @@ export async function runPublish({
141145 }
142146 releasedPackages . push ( pkg )
143147 }
148+ if ( ! pushAllTags ) {
149+ await Promise . all (
150+ releasedPackages . map ( pkg =>
151+ gitUtils . pushTag (
152+ `${ pkg . packageJson . name } @${ pkg . packageJson . version } ` ,
153+ ) ,
154+ ) ,
155+ )
156+ }
144157 if ( createGitlabReleases ) {
145158 await Promise . all (
146159 releasedPackages . map ( pkg =>
@@ -181,7 +194,7 @@ const requireChangesetsCliPkgJson = (cwd: string) => {
181194 }
182195}
183196
184- interface VersionOptions {
197+ export interface VersionOptions {
185198 script ?: string
186199 gitlabToken : string
187200 cwd ?: string
0 commit comments