mirror of
https://github.com/apricote/releaser-pleaser.git
synced 2026-02-10 11:47:03 +00:00
Compare commits
8 commits
ee83cec049
...
dc1903c4b4
| Author | SHA1 | Date | |
|---|---|---|---|
| dc1903c4b4 | |||
| 2567293368 | |||
| 7a3d46eac7 | |||
| 8d7b1c9580 | |||
| 61cf12a052 | |||
| 7b49e8ea0c | |||
| da0c07497b | |||
| 84d4dd9d26 |
9 changed files with 175 additions and 4 deletions
28
.github/workflows/mirror.yaml
vendored
Normal file
28
.github/workflows/mirror.yaml
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
name: mirror
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
tags: ["*"]
|
||||
|
||||
jobs:
|
||||
gitlab-com:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
REMOTE: mirror
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# Need all to fetch all tags so we can push them
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Add Remote
|
||||
env:
|
||||
CLONE_URL: "https://releaser-pleaser:${{ secrets.GITLAB_COM_PUSH_TOKEN }}@gitlab.com/apricote/releaser-pleaser.git"
|
||||
run: git remote add $REMOTE $CLONE_URL
|
||||
|
||||
- name: Push Branches
|
||||
run: git push --force --all --verbose $REMOTE
|
||||
|
||||
- name: Push Tags
|
||||
run: git push --force --tags --verbose $REMOTE
|
||||
1
.github/workflows/releaser-pleaser.yaml
vendored
1
.github/workflows/releaser-pleaser.yaml
vendored
|
|
@ -43,3 +43,4 @@ jobs:
|
|||
token: ${{ secrets.RELEASER_PLEASER_TOKEN }}
|
||||
extra-files: |
|
||||
action.yml
|
||||
templates/run.yml
|
||||
|
|
|
|||
15
.gitlab-ci.yml
Normal file
15
.gitlab-ci.yml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
stages: [release]
|
||||
|
||||
# For the GitLab CI/CD component to be usable, it needs to be published in
|
||||
# the CI/CD catalog. This happens on new releases.
|
||||
# As the primary tagging happens on GitHub, we only react to pushed tags
|
||||
# and create a corresponding GitLab Release.
|
||||
create-release:
|
||||
stage: release
|
||||
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
||||
script: echo "Creating release $CI_COMMIT_TAG"
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
release:
|
||||
tag_name: "$CI_COMMIT_TAG"
|
||||
description: "$CI_COMMIT_TAG_MESSAGE"
|
||||
3
.ko.yaml
3
.ko.yaml
|
|
@ -1,3 +1,6 @@
|
|||
defaultPlatforms:
|
||||
- linux/arm64
|
||||
- linux/amd64
|
||||
|
||||
# Need a shell for gitlab-ci
|
||||
defaultBaseImage: cgr.dev/chainguard/busybox
|
||||
|
|
|
|||
23
CHANGELOG.md
23
CHANGELOG.md
|
|
@ -1,5 +1,28 @@
|
|||
# Changelog
|
||||
|
||||
## [v0.4.0-beta.1](https://github.com/apricote/releaser-pleaser/releases/tag/v0.4.0-beta.1)
|
||||
|
||||
### Features
|
||||
|
||||
- add shell to container image (#59)
|
||||
- **gitlab**: add CI/CD component (#55)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- multiple extra-files are not evaluated properly (#61)
|
||||
|
||||
## [v0.4.0-beta.0](https://github.com/apricote/releaser-pleaser/releases/tag/v0.4.0-beta.0)
|
||||
|
||||
### Features
|
||||
|
||||
- add support for GitLab repositories (#49)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **parser**: continue on unparsable commit message (#48)
|
||||
- **cli**: command name in help output (#52)
|
||||
- **parser**: invalid handling of empty lines (#53)
|
||||
|
||||
## [v0.3.0](https://github.com/apricote/releaser-pleaser/releases/tag/v0.3.0)
|
||||
|
||||
### :sparkles: Highlights
|
||||
|
|
|
|||
|
|
@ -21,12 +21,12 @@ inputs:
|
|||
outputs: {}
|
||||
runs:
|
||||
using: 'docker'
|
||||
image: ghcr.io/apricote/releaser-pleaser:v0.3.0 # x-releaser-pleaser-version
|
||||
image: ghcr.io/apricote/releaser-pleaser:v0.4.0-beta.1 # x-releaser-pleaser-version
|
||||
args:
|
||||
- run
|
||||
- --forge=github
|
||||
- --branch=${{ inputs.branch }}
|
||||
- --extra-files=${{ inputs.extra-files }}
|
||||
- --extra-files="${{ inputs.extra-files }}"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ inputs.token }}
|
||||
GITHUB_TOKEN: "${{ inputs.token }}"
|
||||
GITHUB_USER: "oauth2"
|
||||
|
|
|
|||
|
|
@ -95,6 +95,12 @@ func run(cmd *cobra.Command, _ []string) error {
|
|||
}
|
||||
|
||||
func parseExtraFiles(input string) []string {
|
||||
// We quote the arg to avoid issues with the expected newlines in the value.
|
||||
// Need to remove those quotes before parsing the data
|
||||
input = strings.Trim(input, `"`)
|
||||
// In some situations we get a "\n" sequence, where we actually expect new lines,
|
||||
// replace the two characters with an actual new line
|
||||
input = strings.ReplaceAll(input, `\n`, "\n")
|
||||
lines := strings.Split(input, "\n")
|
||||
|
||||
extraFiles := make([]string, 0, len(lines))
|
||||
|
|
|
|||
59
cmd/rp/cmd/run_test.go
Normal file
59
cmd/rp/cmd/run_test.go
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func Test_parseExtraFiles(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
want []string
|
||||
}{
|
||||
{
|
||||
name: "empty",
|
||||
input: ``,
|
||||
want: []string{},
|
||||
},
|
||||
{
|
||||
name: "empty quoted",
|
||||
input: `""`,
|
||||
want: []string{},
|
||||
},
|
||||
{
|
||||
name: "single",
|
||||
input: `foo.txt`,
|
||||
want: []string{"foo.txt"},
|
||||
},
|
||||
{
|
||||
name: "single quoted",
|
||||
input: `"foo.txt"`,
|
||||
want: []string{"foo.txt"},
|
||||
},
|
||||
{
|
||||
name: "multiple",
|
||||
input: `foo.txt
|
||||
dir/Chart.yaml`,
|
||||
want: []string{"foo.txt", "dir/Chart.yaml"},
|
||||
},
|
||||
{
|
||||
name: "multiple quoted",
|
||||
input: `"foo.txt
|
||||
dir/Chart.yaml"`,
|
||||
want: []string{"foo.txt", "dir/Chart.yaml"},
|
||||
},
|
||||
{
|
||||
name: "multiple with broken new lines",
|
||||
input: `"action.yml\ntemplates/run.yml\n"`,
|
||||
want: []string{"action.yml", "templates/run.yml"},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := parseExtraFiles(tt.input)
|
||||
assert.Equal(t, tt.want, got)
|
||||
})
|
||||
}
|
||||
}
|
||||
36
templates/run.yml
Normal file
36
templates/run.yml
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
spec:
|
||||
inputs:
|
||||
# Remember to update docs/reference/gitlab-ci-component.md
|
||||
branch:
|
||||
default: main
|
||||
description: "This branch is used as the target for releases."
|
||||
|
||||
token:
|
||||
description: "GitLab token for creating and updating release MRs."
|
||||
|
||||
extra-files:
|
||||
description: 'List of files that are scanned for version references.'
|
||||
default: ""
|
||||
|
||||
stage:
|
||||
default: build
|
||||
description: 'Defines the build stage'
|
||||
# Remember to update docs/reference/gitlab-ci-component.md
|
||||
---
|
||||
|
||||
releaser-pleaser:
|
||||
stage: $[[ inputs.stage ]]
|
||||
rules:
|
||||
# There is no way to run a pipeline when the MR description is updated :(
|
||||
- if: $CI_COMMIT_BRANCH == "$[[ inputs.branch ]]"
|
||||
image:
|
||||
name: ghcr.io/apricote/releaser-pleaser:v0.4.0-beta.1 # x-releaser-pleaser-version
|
||||
entrypoint: [""]
|
||||
variables:
|
||||
GITLAB_TOKEN: $[[ inputs.token ]]
|
||||
script:
|
||||
- |
|
||||
rp run \
|
||||
--forge=gitlab \
|
||||
--branch=$[[ inputs.branch ]] \
|
||||
--extra-files="$[[ inputs.extra-files ]]"
|
||||
Loading…
Add table
Add a link
Reference in a new issue