2 Commits

Author SHA1 Message Date
GitHub Actions
85003adc6b Foo 2021-12-10 15:39:18 +00:00
Stephan
d61705886d pii 2021-12-10 16:38:56 +01:00
2 changed files with 19 additions and 104 deletions

19
.github/workflows/manual-thingy.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Manually Do Something
on: workflow_dispatch
jobs:
job:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/heads/release/')
steps:
- name: Checkout
uses: actions/checkout@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Do Something
run: |
version="${${{ github.ref }}:19}" # trim starting 'refs/heads/release/' (19 chars)
echo "Tag ref ${{ github.ref }} as v$version"
git tag v$version
git config user.email "github-actions@zpqrtbnk.net"
git config user.name "GitHub Actions (Do Something)"
git push --tags

View File

@@ -1,104 +0,0 @@
name: Publish Release
on: workflow_dispatch
jobs:
job:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/heads/release/')
steps:
- name: Validate the release
uses: actions/github-script@v4
with:
# token needed to see draft releases when getting all releases
github-token: ${{ secrets.MY_GITHUB_TOKEN_TESTREPO }}
script: |
const ver = "${{ github.ref }}".substring(19)
const tag = "v" + ver
var rel = null
try {
// this does *not* return draft releases, so we have to list them
//rel = await github.repos.getReleaseByTag({ ... })
const rels = await github.repos.listReleases({
owner: context.repo.owner,
repo: context.repo.repo
})
for (const r of rels.data) {
if (r.tag_name === tag) {
rel = r
break
}
}
}
catch (error) {
core.setFailed(`Could not find a release for tag ${tag}.`)
return
}
if (rel === null) {
core.setFailed(`Could not find a release for tag ${tag}.`)
return
}
if (!rel.draft) {
core.setFailed(`Release for tag ${tag} is already published.`)
return
}
try {
const ref = await github.git.getRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'tags/' + tag
})
core.setFailed(`Tag ${tag} already exists.`)
return
}
catch (error) {
// this is expected
}
// everything is OK
- name: Checkout
uses: actions/checkout@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Configure repository
shell: bash
run: |
git config user.email "github-actions@hazelcast.com"
git config user.name "GitHub Actions (Build Release)"
- name: Finalize the release
run: |
ref="${{ github.ref }}"
branch="${ref:11}" # trim starting 'refs/heads/' (11 chars)
version="${ref:19}" # trim starting 'refs/heads/release/' (19 chars)
echo "Tag branch $branch as v$version"
git tag v$version
git push --tags
#git push :$branch
- name: Publish the release
uses: actions/github-script@v4
with:
script: |
const ver = "${{ github.ref }}".substring(19)
const tag = "v" + ver
var rel = null
// no, see above
//const rel = await github.repos.getReleaseByTag({ ... })
const rels = await github.repos.listReleases({
owner: context.repo.owner,
repo: context.repo.repo
})
for (const r of rels.data) {
if (r.tag_name === tag) {
rel = r
break
}
}
await github.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: rel.id,
draft: false
})