mirror of
https://gitea.com/docker/metadata-action.git
synced 2024-11-22 12:09:32 +01:00
Fix pull_request_target
event
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
parent
013e892d4a
commit
85f4f732f2
3 changed files with 80 additions and 40 deletions
|
@ -648,7 +648,7 @@ describe('push', () => {
|
||||||
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
"org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
|
||||||
"org.opencontainers.image.licenses=MIT"
|
"org.opencontainers.image.licenses=MIT"
|
||||||
]
|
]
|
||||||
],
|
]
|
||||||
])('given %p with %p event', tagsLabelsTest);
|
])('given %p with %p event', tagsLabelsTest);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1840,6 +1840,43 @@ describe('pr', () => {
|
||||||
"org.opencontainers.image.revision=f24900bfcfee76d8055c8421a164c7e57ad20e68",
|
"org.opencontainers.image.revision=f24900bfcfee76d8055c8421a164c7e57ad20e68",
|
||||||
"org.opencontainers.image.licenses=MIT"
|
"org.opencontainers.image.licenses=MIT"
|
||||||
]
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'pr09',
|
||||||
|
'event_pull_request_target.env',
|
||||||
|
{
|
||||||
|
images: ['org/app'],
|
||||||
|
tags: [
|
||||||
|
`type=ref,event=tag`,
|
||||||
|
`type=ref,event=pr`,
|
||||||
|
`type=ref,event=branch`,
|
||||||
|
`type=sha`,
|
||||||
|
`type=sha,format=long`
|
||||||
|
]
|
||||||
|
} as Inputs,
|
||||||
|
{
|
||||||
|
main: 'pr-8',
|
||||||
|
partial: [
|
||||||
|
'sha-f24900b',
|
||||||
|
'sha-f24900bfcfee76d8055c8421a164c7e57ad20e68'
|
||||||
|
],
|
||||||
|
latest: false
|
||||||
|
} as Version,
|
||||||
|
[
|
||||||
|
'org/app:pr-8',
|
||||||
|
'org/app:sha-f24900b',
|
||||||
|
'org/app:sha-f24900bfcfee76d8055c8421a164c7e57ad20e68'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"org.opencontainers.image.title=Hello-World",
|
||||||
|
"org.opencontainers.image.description=This your first repo!",
|
||||||
|
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
|
||||||
|
"org.opencontainers.image.source=https://github.com/octocat/Hello-World",
|
||||||
|
"org.opencontainers.image.version=pr-8",
|
||||||
|
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
|
||||||
|
"org.opencontainers.image.revision=f24900bfcfee76d8055c8421a164c7e57ad20e68",
|
||||||
|
"org.opencontainers.image.licenses=MIT"
|
||||||
|
]
|
||||||
]
|
]
|
||||||
])('given %p with %p event', tagsLabelsTest);
|
])('given %p with %p event', tagsLabelsTest);
|
||||||
});
|
});
|
||||||
|
|
13
dist/index.js
generated
vendored
13
dist/index.js
generated
vendored
|
@ -382,6 +382,11 @@ const fcl = __importStar(__webpack_require__(3716));
|
||||||
const core = __importStar(__webpack_require__(2186));
|
const core = __importStar(__webpack_require__(2186));
|
||||||
class Meta {
|
class Meta {
|
||||||
constructor(inputs, context, repo) {
|
constructor(inputs, context, repo) {
|
||||||
|
// Needs to override Git reference with pr ref instead of upstream branch ref
|
||||||
|
// for pull_request_target event
|
||||||
|
if (/pull_request_target/.test(context.eventName)) {
|
||||||
|
context.ref = `refs/pull/${context.payload.number}/merge`;
|
||||||
|
}
|
||||||
this.inputs = inputs;
|
this.inputs = inputs;
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.repo = repo;
|
this.repo = repo;
|
||||||
|
@ -531,14 +536,10 @@ class Meta {
|
||||||
return Meta.setVersion(version, vraw, this.flavor.latest == 'auto' ? true : this.flavor.latest == 'true');
|
return Meta.setVersion(version, vraw, this.flavor.latest == 'auto' ? true : this.flavor.latest == 'true');
|
||||||
}
|
}
|
||||||
procRefPr(version, tag) {
|
procRefPr(version, tag) {
|
||||||
let ref = this.context.ref;
|
if (!/^refs\/pull\//.test(this.context.ref)) {
|
||||||
if (/pull_request_target/.test(this.context.eventName)) {
|
|
||||||
ref = `refs/pull/${this.context.payload.number}/merge`;
|
|
||||||
}
|
|
||||||
if (!/^refs\/pull\//.test(ref)) {
|
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
const vraw = this.setValue(ref.replace(/^refs\/pull\//g, '').replace(/\/merge$/g, ''), tag);
|
const vraw = this.setValue(this.context.ref.replace(/^refs\/pull\//g, '').replace(/\/merge$/g, ''), tag);
|
||||||
return Meta.setVersion(version, vraw, this.flavor.latest == 'auto' ? false : this.flavor.latest == 'true');
|
return Meta.setVersion(version, vraw, this.flavor.latest == 'auto' ? false : this.flavor.latest == 'true');
|
||||||
}
|
}
|
||||||
procEdge(version, tag) {
|
procEdge(version, tag) {
|
||||||
|
|
14
src/meta.ts
14
src/meta.ts
|
@ -27,6 +27,12 @@ export class Meta {
|
||||||
private readonly date: Date;
|
private readonly date: Date;
|
||||||
|
|
||||||
constructor(inputs: Inputs, context: Context, repo: ReposGetResponseData) {
|
constructor(inputs: Inputs, context: Context, repo: ReposGetResponseData) {
|
||||||
|
// Needs to override Git reference with pr ref instead of upstream branch ref
|
||||||
|
// for pull_request_target event
|
||||||
|
if (/pull_request_target/.test(context.eventName)) {
|
||||||
|
context.ref = `refs/pull/${context.payload.number}/merge`;
|
||||||
|
}
|
||||||
|
|
||||||
this.inputs = inputs;
|
this.inputs = inputs;
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.repo = repo;
|
this.repo = repo;
|
||||||
|
@ -191,15 +197,11 @@ export class Meta {
|
||||||
}
|
}
|
||||||
|
|
||||||
private procRefPr(version: Version, tag: tcl.Tag): Version {
|
private procRefPr(version: Version, tag: tcl.Tag): Version {
|
||||||
let ref = this.context.ref;
|
if (!/^refs\/pull\//.test(this.context.ref)) {
|
||||||
if (/pull_request_target/.test(this.context.eventName)) {
|
|
||||||
ref = `refs/pull/${this.context.payload.number}/merge`;
|
|
||||||
}
|
|
||||||
if (!/^refs\/pull\//.test(ref)) {
|
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
const vraw = this.setValue(ref.replace(/^refs\/pull\//g, '').replace(/\/merge$/g, ''), tag);
|
const vraw = this.setValue(this.context.ref.replace(/^refs\/pull\//g, '').replace(/\/merge$/g, ''), tag);
|
||||||
return Meta.setVersion(version, vraw, this.flavor.latest == 'auto' ? false : this.flavor.latest == 'true');
|
return Meta.setVersion(version, vraw, this.flavor.latest == 'auto' ? false : this.flavor.latest == 'true');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue