diff --git a/.chglog/config.yml b/.chglog/config.yml index e0e334a..e1c3d4b 100755 --- a/.chglog/config.yml +++ b/.chglog/config.yml @@ -2,7 +2,7 @@ style: github template: CHANGELOG.tpl.md info: title: CHANGELOG - repository_url: https://github.com/fullstack-devops/awesome-ci + repository_url: https://github.com/layer87-labs/relctl options: sort: "semver" diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 0d5deed..0000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: "Bug: " -labels: "bug" -assignees: "" ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**Your environment/setup** -In what tool is your pipeline running? - -- [ ] GitHub Actions -- [ ] GitLab CI -- [ ] Jenkins Pipeline - -How is this tool installed - -- [ ] Container -- [ ] Bare Metal -- [ ] Virtual machine - -Are all environment variables set? See README.md - -- [ ] yes -- [ ] no - -**To Reproduce** -Paste your executed command here: - -Paste your Pipeline log (this is optional, make shure no secrets are visable): - -```shell -# pipeline log -``` - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md deleted file mode 100644 index 48d5f81..0000000 --- a/.github/ISSUE_TEMPLATE/custom.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Custom issue template -about: Describe this issue template's purpose here. -title: '' -labels: '' -assignees: '' - ---- - - diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 30ea4ed..0000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: 'Feature: ' -labels: 'enhancement' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b9a1049..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,22 +0,0 @@ -## Additions - -- - -## Removals - -- - -## Changes - -- - -## Checklist - -- [ ] PR has an informative and human-readable title -- [ ] Placeholder code is flagged / future todos are captured in comments -- [ ] Project documentation has been updated (including the "Unreleased" section of the CHANGELOG) -- [ ] Reviewers requested with the [Reviewers tool](https://help.github.com/articles/requesting-a-pull-request-review/) :arrow_right: - -### Other - -- [ ] No linting errors or warnings diff --git a/.github/workflows/Release.yaml b/.github/workflows/Release.yaml deleted file mode 100644 index 6f1f77c..0000000 --- a/.github/workflows/Release.yaml +++ /dev/null @@ -1,138 +0,0 @@ -name: Publish Release - -concurrency: - group: ci-${{ github.repository }}-release - cancel-in-progress: false - -on: - push: - branches: - - "main" - paths-ignore: - - "docs/**" - - "CHANGELOG.md" - -jobs: - create-release: - uses: fullstack-devops/git-workflows/.github/workflows/create-release.yml@main - secrets: - token: ${{ secrets.GITHUB_TOKEN }} - - quality-gate: - runs-on: ubuntu-latest - needs: [create-release] - steps: - - name: Checkout code - uses: actions/checkout@v4 - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - cache: true - - - name: Test - run: make test/cover - - name: Audit - run: make audit - - - name: debugging git - run: | - echo "git name-rev HEAD: $(git name-rev HEAD)" - echo "git log -1 --pretty=format:"%s": $(git log -1 --pretty=format:"%s")" - echo "git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@': $(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')" - - build: - runs-on: ubuntu-latest - needs: [create-release, quality-gate] - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - cache: true - - - name: Build - run: make - env: - VERSION: "${{ needs.create-release.outputs.version }}" - - - name: Setup UPX - uses: crazy-max/ghaction-upx@v3 - with: - install-only: true - - name: Compress binaries with upx - run: make upx - env: - VERSION: "${{ needs.create-release.outputs.version }}" - - - name: Cache build outputs - uses: actions/cache@v4 - env: - cache-name: cache-outputs-modules - with: - path: build/package/ - key: awesome-ci-${{ github.sha }}-${{ hashFiles('build/package/awesome-ci*') }} - restore-keys: | - awesome-ci-${{ github.sha }} - - publish-release: - environment: production - runs-on: ubuntu-latest - needs: [create-release, build] - steps: - - name: Checkout code - uses: actions/checkout@v4 - - name: Setup awesome-ci - uses: fullstack-devops/awesome-ci-action@main - - - name: get cached build outputs - uses: actions/cache@v4 - env: - cache-name: cache-outputs-modules - with: - path: build/package/ - key: awesome-ci-${{ github.sha }} - - - name: list generated artifacts - working-directory: build/package - run: ls -la - - - name: Publish Release - run: >- - awesome-ci release publish --release-id ${{ needs.create-release.outputs.releaseid }} - -a "file=build/package/awesome-ci_${{ needs.create-release.outputs.version }}_linux-amd64" - -a "file=build/package/awesome-ci_${{ needs.create-release.outputs.version }}_linux-arm64" - -a "file=build/package/awesome-ci_${{ needs.create-release.outputs.version }}_windows-amd64.exe" - -a "file=build/package/awesome-ci_${{ needs.create-release.outputs.version }}_windows-arm64.exe" - --body "build/package/release-template.md" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - update_action: - runs-on: ubuntu-latest - needs: [create-release, publish-release] - steps: - - name: Check out awesome-ci-action - uses: actions/checkout@v4 - with: - repository: fullstack-devops/awesome-ci-action - token: ${{ secrets.ACI_REPO_TOKEN }} - persist-credentials: true - - - name: Update version and push - run: | - git config user.name "$GITHUB_ACTOR" - git config user.email "$GITHUB_ACTOR@users.noreply.github.com" - - sed -i "s/\([0-9]\+\.[0-9]\+\.[0-9]\+\)/$NEW_VERSION/g" action.yml README.md - - git status - git commit -a -m "update to version v$NEW_VERSION" - git tag v$NEW_VERSION -m "update to version v$NEW_VERSION" - git push --follow-tags - env: - NEW_VERSION: ${{ needs.create-release.outputs.version }} diff --git a/.github/workflows/branchPR.yaml b/.github/workflows/branchPR.yaml deleted file mode 100644 index fde55da..0000000 --- a/.github/workflows/branchPR.yaml +++ /dev/null @@ -1,75 +0,0 @@ -name: Build PR - -on: - pull_request: - -jobs: - generate-infos: - uses: fullstack-devops/git-workflows/.github/workflows/generate-build-infos.yml@main - secrets: - token: ${{ secrets.GITHUB_TOKEN }} - - quality-gate: - runs-on: ubuntu-latest - needs: [generate-infos] - steps: - - name: Checkout code - uses: actions/checkout@v4 - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - cache: true - - - name: Test - run: make test/cover - - name: Audit - run: make audit - - - name: debugging git - run: | - echo "git name-rev HEAD: $(git name-rev HEAD)" - echo "git log -1 --pretty=format:"%s": $(git log -1 --pretty=format:"%s")" - echo "git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@': $(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')" - - build: - runs-on: ubuntu-latest - needs: [generate-infos, quality-gate] - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - cache: true - - - name: Build - run: make - env: - VERSION: "${{ needs.generate-infos.outputs.version }}" - - - name: Setup UPX - uses: crazy-max/ghaction-upx@v3 - with: - install-only: true - - name: Compress binaries with upx - run: make upx - env: - VERSION: "${{ needs.generate-infos.outputs.version }}" - - - name: upload artifacts - uses: actions/upload-artifact@v4 - with: - name: awesome-ci-binaries - path: | - build/package/awesome-ci_* - - - name: (integration testing) test build Infos - run: build/package/awesome-ci_${{ needs.generate-infos.outputs.version }}_linux-amd64 pr info -n ${{ github.event.pull_request.number }} -v > $GITHUB_STEP_SUMMARY - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: (integration testing) test env file - run: export | grep ACI_ diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..09749f8 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,171 @@ +name: CI + +on: + push: + branches: ["main"] + paths-ignore: + - "docs/**" + - "*.md" + pull_request: + branches: ["main"] + +permissions: + contents: read + security-events: write + pull-requests: read + +jobs: + # ────────────────────────────────────────────────────────────────────────────── + # Build – multi-arch compile check + # ────────────────────────────────────────────────────────────────────────────── + build: + name: Build (${{ matrix.goos }}/${{ matrix.goarch }}) + runs-on: ubuntu-latest + needs: [generate-infos] + strategy: + fail-fast: false + matrix: + include: + - goos: linux + goarch: amd64 + - goos: linux + goarch: arm64 + - goos: darwin + goarch: amd64 + - goos: darwin + goarch: arm64 + - goos: windows + goarch: amd64 + steps: + - uses: actions/checkout@v6 + + - uses: actions/setup-go@v6 + with: + go-version-file: go.mod + cache: true + + - name: Build + env: + GOOS: ${{ matrix.goos }} + GOARCH: ${{ matrix.goarch }} + run: make ci/build + + # ────────────────────────────────────────────────────────────────────────────── + # Audit (vet, staticcheck, govulncheck, lint, tests) + # ────────────────────────────────────────────────────────────────────────────── + audit: + name: Audit + runs-on: ubuntu-latest + needs: [generate-infos] + steps: + - uses: actions/checkout@v6 + + - uses: actions/setup-go@v6 + with: + go-version-file: go.mod + cache: true + + - name: Run audit + run: make audit + + - name: Upload coverage report + uses: actions/upload-artifact@v7 + with: + name: coverage-report + path: build/coverage/coverage.html + retention-days: 7 + + # ────────────────────────────────────────────────────────────────────────────── + # Generate Build Infos – runs first, all other jobs depend on this + # TODO: switch to layer87-labs/relctl-action + relctl once stable + # ────────────────────────────────────────────────────────────────────────────── + generate-infos: + name: Generate Build Infos + runs-on: ubuntu-latest + outputs: + pr: ${{ steps.tag.outputs.ACI_PR }} + sha: ${{ steps.tag.outputs.ACI_PR_SHA }} + sha-short: ${{ steps.tag.outputs.ACI_PR_SHA_SHORT }} + owner: ${{ steps.tag.outputs.ACI_OWNER }} + repo: ${{ steps.tag.outputs.ACI_REPO }} + version: ${{ steps.tag.outputs.ACI_LATEST_VERSION }}-pr-${{ steps.tag.outputs.ACI_PR }} + latest-version: ${{ steps.tag.outputs.ACI_LATEST_VERSION }} + next-version: ${{ steps.tag.outputs.ACI_NEXT_VERSION }} + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Setup awesome-ci + if: github.event_name == 'pull_request' + uses: fullstack-devops/awesome-ci-action@main + + - name: Collect PR infos + id: tag + if: github.event_name == 'pull_request' + run: awesome-ci pr info -n ${{ github.event.pull_request.number }} > "$GITHUB_STEP_SUMMARY" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # ────────────────────────────────────────────────────────────────────────────── + # CodeQL – static security analysis + # ────────────────────────────────────────────────────────────────────────────── + codeql: + name: CodeQL Analysis + runs-on: ubuntu-latest + needs: [generate-infos] + permissions: + actions: read + contents: read + security-events: write + steps: + - uses: actions/checkout@v6 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: go + + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + + # ────────────────────────────────────────────────────────────────────────────── + # Trivy – filesystem vulnerability scan + # ────────────────────────────────────────────────────────────────────────────── + trivy: + name: Trivy Vulnerability Scan + runs-on: ubuntu-latest + needs: [generate-infos] + steps: + - uses: actions/checkout@v6 + + - name: Run Trivy filesystem scan + uses: aquasecurity/trivy-action@v0.36.0 + with: + scan-type: fs + scan-ref: . + format: sarif + output: trivy-results.sarif + + - name: Upload Trivy SARIF results + uses: github/codeql-action/upload-sarif@v3 + if: always() + with: + sarif_file: trivy-results.sarif + + # ────────────────────────────────────────────────────────────────────────────── + # Dependency Review – only on PRs + # ────────────────────────────────────────────────────────────────────────────── + dependency-review: + name: Dependency Review + runs-on: ubuntu-latest + needs: [generate-infos] + if: github.event_name == 'pull_request' + steps: + - uses: actions/checkout@v6 + + - name: Dependency Review + uses: actions/dependency-review-action@v5 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 1b630e0..0000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,71 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [main] - pull_request: - # The branches below must be a subset of the branches above - branches: [main] - schedule: - - cron: "21 13 * * 5" - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: ["go"] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] - # Learn more: - # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/gh-pages-deploy.yaml b/.github/workflows/gh-pages-deploy.yaml deleted file mode 100644 index dca5b21..0000000 --- a/.github/workflows/gh-pages-deploy.yaml +++ /dev/null @@ -1,53 +0,0 @@ -name: Deploy to GitHub Pages - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - build: - name: Build Docusaurus - runs-on: ubuntu-latest - defaults: - run: - working-directory: docs - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - uses: actions/setup-node@v4 - with: - node-version-file: docs/.nvmrc - cache: yarn - cache-dependency-path: docs/yarn.lock - - - name: Install dependencies - run: yarn install --frozen-lockfile - - name: Build website - run: yarn build - - - name: Upload Build Artifact - if: github.ref == 'refs/heads/main' - uses: actions/upload-pages-artifact@v3 - with: - path: docs/build - - deploy: - name: Deploy to GitHub Pages - if: github.ref == 'refs/heads/main' - needs: build - permissions: - pages: write - id-token: write - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..1aa58e0 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,212 @@ +name: Release + +on: + push: + tags: + - "[0-9]*.[0-9]*.[0-9]*" + +permissions: + contents: write # create GitHub releases & upload assets + id-token: write # cosign keyless OIDC signing + packages: write # future: container registry (placeholder) + +jobs: + # ────────────────────────────────────────────────────────────────────────────── + # Create Release – runs first, all other jobs depend on this + # TODO: switch to layer87-labs/relctl-action + relctl once stable + # ────────────────────────────────────────────────────────────────────────────── + create-release: + name: Create Release + runs-on: ubuntu-latest + outputs: + version: ${{ steps.tag.outputs.ACI_NEXT_VERSION }} + release-id: ${{ steps.tag.outputs.ACI_RELEASE_ID }} + sha: ${{ steps.tag.outputs.ACI_PR_SHA }} + sha-short: ${{ steps.tag.outputs.ACI_PR_SHA_SHORT }} + owner: ${{ steps.tag.outputs.ACI_OWNER }} + repo: ${{ steps.tag.outputs.ACI_REPO }} + latest-version: ${{ steps.tag.outputs.ACI_LATEST_VERSION }} + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Setup awesome-ci + uses: fullstack-devops/awesome-ci-action@main + + - name: Create Release + id: tag + run: | + awesome-ci release create \ + --version "${GITHUB_REF_NAME}" \ + --body "scripts/release-template.md" \ + > "$GITHUB_STEP_SUMMARY" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # ────────────────────────────────────────────────────────────────────────────── + # Phase A – Build, sign, SBOM + # ────────────────────────────────────────────────────────────────────────────── + build: + name: Build & Sign (${{ matrix.goos }}/${{ matrix.goarch }}) + runs-on: ubuntu-latest + needs: [create-release] + strategy: + fail-fast: false + matrix: + include: + - goos: linux + goarch: amd64 + suffix: linux-amd64 + - goos: linux + goarch: arm64 + suffix: linux-arm64 + - goos: darwin + goarch: amd64 + suffix: darwin-amd64 + - goos: darwin + goarch: arm64 + suffix: darwin-arm64 + - goos: windows + goarch: amd64 + suffix: windows-amd64 + ext: .exe + + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - uses: actions/setup-go@v6 + with: + go-version-file: go.mod + cache: true + + - name: Build binary + env: + GOOS: ${{ matrix.goos }} + GOARCH: ${{ matrix.goarch }} + VERSION: ${{ needs.create-release.outputs.version }} + COMMIT_HASH: ${{ github.sha }} + BUILD_DATE: ${{ github.event.head_commit.timestamp }} + run: make build/single SUFFIX=${{ matrix.suffix }} EXT=${{ matrix.ext }} + + - name: Install cosign + uses: sigstore/cosign-installer@v4 + + - name: Sign binary (keyless via OIDC) + run: | + VERSION=${{ needs.create-release.outputs.version }} + BINARY="build/package/relctl_${VERSION}_${{ matrix.suffix }}${{ matrix.ext }}" + cosign sign-blob \ + --yes \ + --output-signature "${BINARY}.sig" \ + --output-certificate "${BINARY}.pem" \ + "${BINARY}" + + - name: Install syft (SBOM generator) + uses: anchore/sbom-action/download-syft@v0 + + - name: Generate SBOM (SPDX) + run: | + VERSION=${{ needs.create-release.outputs.version }} + BINARY="build/package/relctl_${VERSION}_${{ matrix.suffix }}${{ matrix.ext }}" + syft "${BINARY}" \ + -o spdx-json \ + --file "build/package/relctl_${VERSION}_${{ matrix.suffix }}.sbom.spdx.json" + + - name: Upload build artifacts + uses: actions/upload-artifact@v7 + with: + name: relctl-${{ matrix.suffix }} + path: build/package/ + retention-days: 1 + + # ────────────────────────────────────────────────────────────────────────────── + # Phase A (continued) – Checksums + # ────────────────────────────────────────────────────────────────────────────── + checksums: + name: Generate Checksums + runs-on: ubuntu-latest + needs: [create-release, build] + steps: + - name: Download all artifacts + uses: actions/download-artifact@v8 + with: + pattern: relctl-* + path: dist/ + merge-multiple: true + + - name: Generate SHA256 checksums + run: | + cd dist + sha256sum relctl_* > sha256sum.txt + cat sha256sum.txt + + - name: Upload checksum artifact + uses: actions/upload-artifact@v7 + with: + name: relctl-checksums + path: dist/sha256sum.txt + retention-days: 1 + + # ────────────────────────────────────────────────────────────────────────────── + # Phase B – Publish Release + # ────────────────────────────────────────────────────────────────────────────── + publish-release: + name: Publish GitHub Release + runs-on: ubuntu-latest + needs: [create-release, build, checksums] + environment: production + steps: + - uses: actions/checkout@v6 + + - name: Download all artifacts + uses: actions/download-artifact@v8 + with: + pattern: relctl-* + path: dist/ + merge-multiple: true + + - name: List artifacts + run: ls -lh dist/ + + # TODO: switch to layer87-labs/relctl-action + relctl once stable + - name: Setup awesome-ci + uses: fullstack-devops/awesome-ci-action@main + + - name: Publish Release assets + run: | + ASSETS=() + while IFS= read -r f; do + ASSETS+=("--asset" "file=${f}") + done < <(find dist/ -type f | sort) + awesome-ci release publish \ + --release-id "${{ needs.create-release.outputs.release-id }}" \ + "${ASSETS[@]}" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # ────────────────────────────────────────────────────────────────────────────── + # Phase C – Post-Release (placeholders, not yet active) + # ────────────────────────────────────────────────────────────────────────────── + + # TODO: Homebrew Formula Update + # homebrew-update: + # name: Update Homebrew Formula + # runs-on: ubuntu-latest + # needs: release + # steps: + # - name: Bump formula + # # TODO: use peter-evans/create-pull-request or a tap-bump action + # run: echo "Homebrew formula update not yet implemented" + + # TODO: Docker Hub Push + # docker-publish: + # name: Push Docker Image + # runs-on: ubuntu-latest + # needs: release + # steps: + # - name: Build and push + # # TODO: use docker/build-push-action + # run: echo "Docker image push not yet implemented" diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 0000000..1da915f --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,48 @@ +name: Stale Issues and PRs + +on: + schedule: + - cron: "0 6 * * *" # daily at 06:00 UTC + workflow_dispatch: + +permissions: + issues: write + pull-requests: write + +jobs: + stale: + name: Mark and close stale issues/PRs + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v10 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + + # Issues + days-before-issue-stale: 60 + days-before-issue-close: 7 + stale-issue-label: "stale" + stale-issue-message: > + This issue has been automatically marked as stale because it has not had + any activity in the last 60 days. It will be closed in 7 days if no + further activity occurs. Thank you for your contributions! + close-issue-message: > + This issue has been automatically closed because it has been stale for + 7 days with no activity. Feel free to reopen it if it is still relevant. + + # Pull Requests + days-before-pr-stale: 60 + days-before-pr-close: 7 + stale-pr-label: "stale" + stale-pr-message: > + This pull request has been automatically marked as stale because it has + not had any activity in the last 60 days. It will be closed in 7 days + if no further activity occurs. Thank you for your contributions! + close-pr-message: > + This pull request has been automatically closed because it has been + stale for 7 days with no activity. Feel free to reopen it if you want + to continue working on this change. + + # Never stale these + exempt-issue-labels: "pinned,security,bug" + exempt-pr-labels: "pinned,security" diff --git a/LICENSE b/LICENSE index 450f93d..6d1b520 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ APPENDIX: How to apply the Apache License to your work. same "printed page" as the copyright notice for easier identification within third-party archives. -Copyright [2025] [Eike Haller] +Copyright [2026] [layer87-labs contributors] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/Makefile b/Makefile index c737151..059343b 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -PROJECT_PKG = github.com/fullstack-devops/awesome-ci -PKG_LIST = "github.com/fullstack-devops/awesome-ci/cmd/awesome-ci" +PROJECT_PKG = github.com/layer87-labs/relctl +PKG_LIST = "github.com/layer87-labs/relctl/cmd/relctl" BUILD_DIR = ./build LATEST_VERSION ?= "1.0.0" @@ -33,6 +33,7 @@ audit: go vet ./... go run honnef.co/go/tools/cmd/staticcheck@latest -checks=all,-ST1000,-U1000 ./... go run golang.org/x/vuln/cmd/govulncheck@latest ./... + go run github.com/golangci/golangci-lint/cmd/golangci-lint@latest run ./... go test -race -buildvcs -vet=off ./... # ==================================================================================== # @@ -55,21 +56,36 @@ test/cover: go test -v -race -buildvcs -coverprofile=${BUILD_DIR}/coverage/coverage.out ./... go tool cover -html=${BUILD_DIR}/coverage/coverage.out -o ${BUILD_DIR}/coverage/coverage.html +## ci/build: cross-compile check for CI matrix (reads GOOS, GOARCH from env) +.PHONY: ci/build +ci/build: + CGO_ENABLED=0 go build -ldflags "-s -w" -o /dev/null ./cmd/relctl + +## build/single: build a single release binary (reads GOOS, GOARCH, VERSION, COMMIT_HASH, BUILD_DATE from env; pass SUFFIX and EXT as args) +SUFFIX ?= +EXT ?= +.PHONY: build/single +build/single: + mkdir -p $(BUILD_DIR)/package + CGO_ENABLED=0 go build -ldflags "$(LDFLAGS)" \ + -o "$(BUILD_DIR)/package/relctl_$(VERSION)_$(SUFFIX)$(EXT)" \ + ./cmd/relctl + ## build: build the application .PHONY: build build: - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${GOARGS} -tags "${GOTAGS}" -ldflags "${LDFLAGS}" -o ${BUILD_DIR}/package/awesome-ci_${VERSION}_linux-amd64 ./cmd/awesome-ci - CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${GOARGS} -tags "${GOTAGS}" -ldflags "${LDFLAGS}" -o ${BUILD_DIR}/package/awesome-ci_${VERSION}_linux-arm64 ./cmd/awesome-ci - CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build ${GOARGS} -tags "${GOTAGS}" -ldflags "${LDFLAGS}" -o ${BUILD_DIR}/package/awesome-ci_${VERSION}_windows-amd64.exe ./cmd/awesome-ci - CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build ${GOARGS} -tags "${GOTAGS}" -ldflags "${LDFLAGS}" -o ${BUILD_DIR}/package/awesome-ci_${VERSION}_windows-arm64.exe ./cmd/awesome-ci + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${GOARGS} -tags "${GOTAGS}" -ldflags "${LDFLAGS}" -o ${BUILD_DIR}/package/relctl_${VERSION}_linux-amd64 ./cmd/relctl + CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${GOARGS} -tags "${GOTAGS}" -ldflags "${LDFLAGS}" -o ${BUILD_DIR}/package/relctl_${VERSION}_linux-arm64 ./cmd/relctl + CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build ${GOARGS} -tags "${GOTAGS}" -ldflags "${LDFLAGS}" -o ${BUILD_DIR}/package/relctl_${VERSION}_windows-amd64.exe ./cmd/relctl + CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build ${GOARGS} -tags "${GOTAGS}" -ldflags "${LDFLAGS}" -o ${BUILD_DIR}/package/relctl_${VERSION}_windows-arm64.exe ./cmd/relctl ## upx: compress binaries .PHONY: upx upx: - upx -5 ./build/package/awesome-ci_${VERSION}_linux-amd64 - upx -5 ./build/package/awesome-ci_${VERSION}_linux-arm64 - upx -5 ./build/package/awesome-ci_${VERSION}_windows-amd64.exe -# upx --best ./build/package/awesome-ci_${VERSION}_windows-arm64.exe + upx -5 ./build/package/relctl_${VERSION}_linux-amd64 + upx -5 ./build/package/relctl_${VERSION}_linux-arm64 + upx -5 ./build/package/relctl_${VERSION}_windows-amd64.exe +# upx --best ./build/package/relctl_${VERSION}_windows-arm64.exe chglog: go install github.com/git-chglog/git-chglog/cmd/git-chglog@latest diff --git a/README.md b/README.md index babef22..9fb1bbe 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ -[![Go Report Card](https://goreportcard.com/badge/github.com/fullstack-devops/awesome-ci)](https://goreportcard.com/report/github.com/fullstack-devops/awesome-ci) -[![GitHub release](https://img.shields.io/github/release/fullstack-devops/awesome-ci.svg)](https://github.com/fullstack-devops/awesome-ci/releases/latest) -[![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/fullstack-devops/awesome-ci.svg)](https://github.com/fullstack-devops/awesome-ci) -[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/fullstack-devops/awesome-ci/blob/main/LICENSE) +[![Go Report Card](https://goreportcard.com/badge/github.com/layer87-labs/relctl)](https://goreportcard.com/report/github.com/layer87-labs/relctl) +[![GitHub release](https://img.shields.io/github/release/layer87-labs/relctl.svg)](https://github.com/layer87-labs/relctl/releases/latest) +[![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/layer87-labs/relctl.svg)](https://github.com/layer87-labs/relctl) +[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/layer87-labs/relctl/blob/main/LICENSE) -[![Publish Release](https://github.com/fullstack-devops/awesome-ci/actions/workflows/Release.yaml/badge.svg)](https://github.com/fullstack-devops/awesome-ci/actions/workflows/Release.yaml) -[![gh-pages](https://github.com/fullstack-devops/awesome-ci/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/fullstack-devops/awesome-ci/actions/workflows/pages/pages-build-deployment) +[![Publish Release](https://github.com/layer87-labs/relctl/actions/workflows/Release.yaml/badge.svg)](https://github.com/layer87-labs/relctl/actions/workflows/Release.yaml) +[![gh-pages](https://github.com/layer87-labs/relctl/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/layer87-labs/relctl/actions/workflows/pages/pages-build-deployment) -# Awesome CI +# relctl -**Description**: Awesome CI is the smart connection between your pipeline for continuous integration and GitHub. The focus is on the release process, followed by the version management of [SemVer](https://semver.org/). The required version number is created with the correct naming of the branch prefix. +**Description**: relctl is the smart connection between your pipeline for continuous integration and GitHub. The focus is on the release process, followed by the version management of [SemVer](https://semver.org/). The required version number is created with the correct naming of the branch prefix. - **Technology stack**: This tool is written in golang - **Status**: Stable. @@ -17,41 +17,43 @@ - GitHub & GitHub Enterprise - GitHub actions - Jenkins Pipelines -- **Sweet Spot**: If you use GitHub or GitHub Enterprise and GitHub Actions, you can use awesome-ci to its full potential! +- **Sweet Spot**: If you use GitHub or GitHub Enterprise and GitHub Actions, you can use relctl to its full potential! ## Getting Started -You can use this tool in your CI pipeline or locally on your command line. Just [download](https://github.com/fullstack-devops/awesome-ci/releases/latest/download/awesome-ci) the most recently released version and get started. +You can use this tool in your CI pipeline or locally on your command line. Just [download](https://github.com/layer87-labs/relctl/releases/latest/download/relctl) the most recently released version and get started. ## Usage -To integrate Awesome CI into your pipeline, follow these steps: +To integrate relctl into your pipeline, follow these steps: -1. Utilize the github action [fullstack-devops/awesome-ci-action](https://github.com/fullstack-devops/awesome-ci-action) to install Awesome CI. -2. Configure your pipeline to use Awesome CI. -3. Use the any command to interact with Awesome CI. +1. Utilize the github action [layer87-labs/relctl-action](https://github.com/layer87-labs/relctl-action) to install relctl. +2. Configure your pipeline to use relctl. +3. Use the any command to interact with relctl. -You can find more information on how to integrate Awesome CI into your pipeline in the [manual](https://fullstack-devops.github.io/awesome-ci/). +You can find more information on how to integrate relctl into your pipeline in the [manual](https://layer87-labs.github.io/relctl/). ## Examples -You can find several examples of how to use Awesome CI in the [examples section](https://fullstack-devops.github.io/awesome-ci/docs/examples) of the documentation. +You can find several examples of how to use relctl in the [examples section](https://layer87-labs.github.io/relctl/docs/examples) of the documentation. ## Frequently Asked Questions -You can find frequently asked questions in the [Questions and Answers](https://fullstack-devops.github.io/awesome-ci/docs/questions_and_answers) section of the documentation. +You can find frequently asked questions in the [Questions and Answers](https://layer87-labs.github.io/relctl/docs/questions_and_answers) section of the documentation. ## Getting Help If you have questions, concerns, or bug reports, please file an issue in this repository's Issue Tracker. -## Contributing +## Community -If you want to contribute to Awesome CI, please read the [CONTRIBUTING](docs/CONTRIBUTING.md) guide. +- [Contributing](https://github.com/layer87-labs/.github/blob/main/CONTRIBUTING.md) +- [Code of Conduct](https://github.com/layer87-labs/.github/blob/main/CODE_OF_CONDUCT.md) +- [Security Policy](https://github.com/layer87-labs/.github/blob/main/SECURITY.md) ## License -Awesome CI is licensed under the Apache License, Version 2.0. You can find the license file [here](LICENSE). +relctl is licensed under the Apache License, Version 2.0. You can find the license file [here](LICENSE). ## Credits diff --git a/cmd/awesome-ci/main.go b/cmd/awesome-ci/main.go deleted file mode 100644 index 8c81029..0000000 --- a/cmd/awesome-ci/main.go +++ /dev/null @@ -1,9 +0,0 @@ -package main - -import ( - awesomeci "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci" -) - -func main() { - awesomeci.AwesomeCI() -} diff --git a/cmd/relctl/main.go b/cmd/relctl/main.go new file mode 100644 index 0000000..f18d55b --- /dev/null +++ b/cmd/relctl/main.go @@ -0,0 +1,7 @@ +package main + +import "github.com/layer87-labs/relctl/internal/app/relctl" + +func main() { + relctl.Execute() +} diff --git a/docs/docs/01-overview.md b/docs/docs/01-overview.md index 16176d9..967ecca 100644 --- a/docs/docs/01-overview.md +++ b/docs/docs/01-overview.md @@ -2,7 +2,7 @@ title: Overview --- -# Welcome to the Awesome CI! +# Welcome to the relctl! This project is the smart connection between your pipeline for continuous integration and your version management like GitHub. The focus is on the release process, followed by the version management of SemVer. The required version number is created with the correct naming of the branch prefix. @@ -14,7 +14,7 @@ If you have any questions, you can find a form on the issue board. First, make s :::info -Every command that you can use is in the sidebar at cli. All options are listed there or use the `awesome-ci help` command. +Every command that you can use is in the sidebar at cli. All options are listed there or use the `relctl help` command. ::: :::tip @@ -41,8 +41,8 @@ The tailing `/` behind the alias is **always** requiered! see also [override specialties](#override-specialties) ::: -![awesome-ci release process](/img/release-process.drawio.svg "awesome-ci release process") -![awesome-ci workflow](/img/aci-workflow.drawio.png "awesome-ci workflow") +![relctl release process](/img/release-process.drawio.svg "relctl release process") +![relctl workflow](/img/aci-workflow.drawio.png "relctl workflow") :::tip Awesoce CI automatically detects your environment. Supported are **Jenkins Pipelines** and **GitHub Actions** @@ -52,10 +52,10 @@ Awesoce CI automatically detects your environment. Supported are **Jenkins Pipel To set some attributes during developement you can comment a pullrequest. -| command | description | -| ----------------------------- | ------------------------------------------------------------- | -| `aci_patch_level: major` | create a major version bump | -| `aci_version_override: 2.1.0` | set the version to 2.1.0 using only semver compatible syntax! | +| command | description | +| -------------------------------- | ------------------------------------------------------------- | +| `relctl_patch_level: major` | create a major version bump | +| `relctl_version_override: 2.1.0` | set the version to 2.1.0 using only semver compatible syntax! | ## Requiered and optional environment variables diff --git a/docs/docs/02-CLI/connect/check/index.md b/docs/docs/02-CLI/connect/check/index.md index 99b00e0..b415392 100755 --- a/docs/docs/02-CLI/connect/check/index.md +++ b/docs/docs/02-CLI/connect/check/index.md @@ -3,7 +3,7 @@ verify current connection is working ``` -awesome-ci connect check [flags] +relctl connect check [flags] ``` ## Options @@ -20,6 +20,6 @@ awesome-ci connect check [flags] ## SEE ALSO -* **awesome-ci connect** - Create an encrypted .rc file to persistently connect to GitHub or GitHub Enterprise +* **relctl connect** - Create an encrypted .rc file to persistently connect to GitHub or GitHub Enterprise -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/connect/github/index.md b/docs/docs/02-CLI/connect/github/index.md index 49322f4..066bb72 100755 --- a/docs/docs/02-CLI/connect/github/index.md +++ b/docs/docs/02-CLI/connect/github/index.md @@ -3,7 +3,7 @@ connect initial to a GitHub or GitHub Enterprise ``` -awesome-ci connect github [flags] +relctl connect github [flags] ``` ## Options @@ -23,6 +23,6 @@ awesome-ci connect github [flags] ## SEE ALSO -* **awesome-ci connect** - Create an encrypted .rc file to persistently connect to GitHub or GitHub Enterprise +* **relctl connect** - Create an encrypted .rc file to persistently connect to GitHub or GitHub Enterprise -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/connect/index.md b/docs/docs/02-CLI/connect/index.md index d0ff2e5..c5576f8 100755 --- a/docs/docs/02-CLI/connect/index.md +++ b/docs/docs/02-CLI/connect/index.md @@ -10,7 +10,7 @@ soon you can also connect to GitLab (not yet implemented) useful without a runner or in an jenkins pipeline ``` -awesome-ci connect [flags] +relctl connect [flags] ``` ## Options @@ -27,9 +27,9 @@ awesome-ci connect [flags] ## SEE ALSO -* **awesome-ci** - Awesome CI make your release tagging easy -* **awesome-ci connect check** - verify current connection is working -* **awesome-ci connect github** - connect initial to a GitHub or GitHub Enterprise -* **awesome-ci connect remove** - remove all persisted connection files and secrets +* **relctl** - relctl make your release tagging easy +* **relctl connect check** - verify current connection is working +* **relctl connect github** - connect initial to a GitHub or GitHub Enterprise +* **relctl connect remove** - remove all persisted connection files and secrets -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/connect/remove/index.md b/docs/docs/02-CLI/connect/remove/index.md index 47c3965..0a0db1f 100755 --- a/docs/docs/02-CLI/connect/remove/index.md +++ b/docs/docs/02-CLI/connect/remove/index.md @@ -3,7 +3,7 @@ remove all persisted connection files and secrets ``` -awesome-ci connect remove [flags] +relctl connect remove [flags] ``` ## Options @@ -20,6 +20,6 @@ awesome-ci connect remove [flags] ## SEE ALSO -* **awesome-ci connect** - Create an encrypted .rc file to persistently connect to GitHub or GitHub Enterprise +* **relctl connect** - Create an encrypted .rc file to persistently connect to GitHub or GitHub Enterprise -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/index.md b/docs/docs/02-CLI/index.md index 271bc20..637191d 100755 --- a/docs/docs/02-CLI/index.md +++ b/docs/docs/02-CLI/index.md @@ -1,30 +1,30 @@ # CLI -Awesome CI make your release tagging easy +relctl make your release tagging easy ## Synopsis -Awesome CI make your release tagging easy +relctl make your release tagging easy Comatible with CI pipelines like Jenkins and GitHub -Find more information and examples at: https://github.com/fullstack-devops/awesome-ci +Find more information and examples at: https://github.com/layer87-labs/relctl ``` -awesome-ci [flags] +relctl [flags] ``` ## Options ``` - -h, --help help for awesome-ci + -h, --help help for relctl -v, --verbose verbose output ``` ## SEE ALSO -* **awesome-ci connect** - Create an encrypted .rc file to persistently connect to GitHub or GitHub Enterprise -* **awesome-ci parse** - inspect and parse JSON and YAML files to retrieve values, similar to jq with additional features -* **awesome-ci pr** - Manage GitHub pull requests -* **awesome-ci release** - Manage GitHub releases with ease -* **awesome-ci transform** - transform given input to json +* **relctl connect** - Create an encrypted .rc file to persistently connect to GitHub or GitHub Enterprise +* **relctl parse** - inspect and parse JSON and YAML files to retrieve values, similar to jq with additional features +* **relctl pr** - Manage GitHub pull requests +* **relctl release** - Manage GitHub releases with ease +* **relctl transform** - transform given input to json -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/parse/index.md b/docs/docs/02-CLI/parse/index.md index 42eecc2..95856e9 100755 --- a/docs/docs/02-CLI/parse/index.md +++ b/docs/docs/02-CLI/parse/index.md @@ -3,7 +3,7 @@ inspect and parse JSON and YAML files to retrieve values, similar to jq with additional features ``` -awesome-ci parse [flags] +relctl parse [flags] ``` ## Options @@ -20,9 +20,9 @@ awesome-ci parse [flags] ## SEE ALSO -* **awesome-ci** - Awesome CI make your release tagging easy -* **awesome-ci parse json** - parse a json string or file -* **awesome-ci parse version** - Validate the given version string against semver syntax -* **awesome-ci parse yaml** - parse a yaml string or file +* **relctl** - relctl make your release tagging easy +* **relctl parse json** - parse a json string or file +* **relctl parse version** - Validate the given version string against semver syntax +* **relctl parse yaml** - parse a yaml string or file -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/parse/json/index.md b/docs/docs/02-CLI/parse/json/index.md index c2f58c2..1054ac1 100755 --- a/docs/docs/02-CLI/parse/json/index.md +++ b/docs/docs/02-CLI/parse/json/index.md @@ -3,7 +3,7 @@ parse a json string or file ``` -awesome-ci parse json [flags] +relctl parse json [flags] ``` ## Options @@ -23,6 +23,6 @@ awesome-ci parse json [flags] ## SEE ALSO -* **awesome-ci parse** - inspect and parse JSON and YAML files to retrieve values, similar to jq with additional features +* **relctl parse** - inspect and parse JSON and YAML files to retrieve values, similar to jq with additional features -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/parse/version/index.md b/docs/docs/02-CLI/parse/version/index.md index fe00f5b..58a72dd 100755 --- a/docs/docs/02-CLI/parse/version/index.md +++ b/docs/docs/02-CLI/parse/version/index.md @@ -3,7 +3,7 @@ Validate the given version string against semver syntax ``` -awesome-ci parse version [flags] +relctl parse version [flags] ``` ## Options @@ -20,6 +20,6 @@ awesome-ci parse version [flags] ## SEE ALSO -* **awesome-ci parse** - inspect and parse JSON and YAML files to retrieve values, similar to jq with additional features +* **relctl parse** - inspect and parse JSON and YAML files to retrieve values, similar to jq with additional features -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/parse/yaml/index.md b/docs/docs/02-CLI/parse/yaml/index.md index 657d324..87f2f74 100755 --- a/docs/docs/02-CLI/parse/yaml/index.md +++ b/docs/docs/02-CLI/parse/yaml/index.md @@ -3,7 +3,7 @@ parse a yaml string or file ``` -awesome-ci parse yaml [flags] +relctl parse yaml [flags] ``` ## Options @@ -23,6 +23,6 @@ awesome-ci parse yaml [flags] ## SEE ALSO -* **awesome-ci parse** - inspect and parse JSON and YAML files to retrieve values, similar to jq with additional features +* **relctl parse** - inspect and parse JSON and YAML files to retrieve values, similar to jq with additional features -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/pr/index.md b/docs/docs/02-CLI/pr/index.md index 11fd6ba..45fd700 100755 --- a/docs/docs/02-CLI/pr/index.md +++ b/docs/docs/02-CLI/pr/index.md @@ -7,7 +7,7 @@ Manage GitHub pull requests The pull request command is used to manage GitHub pull requests. It provides subcommands to get pull request info, allowing you to get all infos about a pull request in GitHub. ``` -awesome-ci pr [flags] +relctl pr [flags] ``` ## Options @@ -24,7 +24,7 @@ awesome-ci pr [flags] ## SEE ALSO -* **awesome-ci** - Awesome CI make your release tagging easy -* **awesome-ci pr info** - Get pull request info +* **relctl** - relctl make your release tagging easy +* **relctl pr info** - Get pull request info -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/pr/info/index.md b/docs/docs/02-CLI/pr/info/index.md index 03c414d..e866fa6 100755 --- a/docs/docs/02-CLI/pr/info/index.md +++ b/docs/docs/02-CLI/pr/info/index.md @@ -3,7 +3,7 @@ Get pull request info ``` -awesome-ci pr info [flags] +relctl pr info [flags] ``` ## Options @@ -22,6 +22,6 @@ awesome-ci pr info [flags] ## SEE ALSO -* **awesome-ci pr** - Manage GitHub pull requests +* **relctl pr** - Manage GitHub pull requests -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/release/create/index.md b/docs/docs/02-CLI/release/create/index.md index 1ff34c9..b624e33 100755 --- a/docs/docs/02-CLI/release/create/index.md +++ b/docs/docs/02-CLI/release/create/index.md @@ -3,7 +3,7 @@ Create a new GitHub release ``` -awesome-ci release create [flags] +relctl release create [flags] ``` ## Options @@ -29,6 +29,6 @@ awesome-ci release create [flags] ## SEE ALSO -* **awesome-ci release** - Manage GitHub releases with ease +* **relctl release** - Manage GitHub releases with ease -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/release/index.md b/docs/docs/02-CLI/release/index.md index 7f455a5..6724843 100755 --- a/docs/docs/02-CLI/release/index.md +++ b/docs/docs/02-CLI/release/index.md @@ -7,7 +7,7 @@ Manage GitHub releases with ease The release command is used to manage GitHub releases. It provides subcommands to create and publish releases, allowing you to automate the release process and integrate it into CI/CD workflows. Use this command to streamline the release tagging and deployment of your software projects. ``` -awesome-ci release [flags] +relctl release [flags] ``` ## Options @@ -33,8 +33,8 @@ awesome-ci release [flags] ## SEE ALSO -* **awesome-ci** - Awesome CI make your release tagging easy -* **awesome-ci release create** - Create a new GitHub release -* **awesome-ci release publish** - Publish a recently created GitHub release +* **relctl** - relctl make your release tagging easy +* **relctl release create** - Create a new GitHub release +* **relctl release publish** - Publish a recently created GitHub release -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/release/publish/index.md b/docs/docs/02-CLI/release/publish/index.md index 8906514..a2d84f0 100755 --- a/docs/docs/02-CLI/release/publish/index.md +++ b/docs/docs/02-CLI/release/publish/index.md @@ -23,29 +23,29 @@ Example of using the release publish command To publish a release with a specific release ID and assets, use the following command: - awesome-ci release publish --release-id 12345 \ - --asset "file=out/awesome-ci_v1.0.0_amd64" \ - --asset "file=out/awesome-ci_v1.0.0_arm64" - awesome-ci release publish --release-id 12345 --asset "file=out/awesome-ci_v1.0.0_amd64" --asset "file=out/awesome-ci_v1.0.0_arm64" + relctl release publish --release-id 12345 \ + --asset "file=out/relctl_v1.0.0_amd64" \ + --asset "file=out/relctl_v1.0.0_arm64" + relctl release publish --release-id 12345 --asset "file=out/relctl_v1.0.0_amd64" --asset "file=out/relctl_v1.0.0_arm64" -If the release ID is not provided, the command will look for the 'ACI_RELEASE_ID' environment variable: +If the release ID is not provided, the command will look for the 'RELCTL_RELEASE_ID' environment variable: - export ACI_RELEASE_ID=12345 - awesome-ci release publish \ - --asset "file=out/awesome-ci_v1.0.0_amd64" \ - --asset "file=out/awesome-ci_v1.0.0_arm64" - export ACI_RELEASE_ID=12345 - awesome-ci release publish --asset "file=out/awesome-ci_v1.0.0_amd64" --asset "file=out/awesome-ci_v1.0.0_arm64" + export RELCTL_RELEASE_ID=12345 + relctl release publish \ + --asset "file=out/relctl_v1.0.0_amd64" \ + --asset "file=out/relctl_v1.0.0_arm64" + export RELCTL_RELEASE_ID=12345 + relctl release publish --asset "file=out/relctl_v1.0.0_amd64" --asset "file=out/relctl_v1.0.0_arm64" You can also publish a release with a directory as a zip asset: - awesome-ci release publish --release-id 12345 \ + relctl release publish --release-id 12345 \ --asset "zip=out/myfiles" The assets should be specified as local file paths to be uploaded to the GitHub release. ``` -awesome-ci release publish [flags] +relctl release publish [flags] ``` ## Options @@ -53,7 +53,7 @@ awesome-ci release publish [flags] ``` -a, --asset stringArray add an asset to the release, can be specified multiple times. -h, --help help for publish - --release-id int publish an early defined release (also looking for env ACI_RELEASE_ID) + --release-id int publish an early defined release (also looking for env RELCTL_RELEASE_ID) ``` ## Options inherited from parent commands @@ -73,6 +73,6 @@ awesome-ci release publish [flags] ## SEE ALSO -* **awesome-ci release** - Manage GitHub releases with ease +* **relctl release** - Manage GitHub releases with ease -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/transform/group-by/index.md b/docs/docs/02-CLI/transform/group-by/index.md index 5267e3f..2ab6c9a 100755 --- a/docs/docs/02-CLI/transform/group-by/index.md +++ b/docs/docs/02-CLI/transform/group-by/index.md @@ -3,13 +3,13 @@ group string array by prefix to json ``` -awesome-ci transform group-by [flags] +relctl transform group-by [flags] ``` ## Examples ``` -awesome-ci tf group-by -p 3 --sub-prefix 4 st1_infrastructure-base st2_ubi9-openjdk-11 st2_ubi9-openjdk-17 +relctl tf group-by -p 3 --sub-prefix 4 st1_infrastructure-base st2_ubi9-openjdk-11 st2_ubi9-openjdk-17 produces: {"st1":["infrastructure-base"],"st2":["ubi9-openjdk-11","ubi9-openjdk-17"]} ``` @@ -29,6 +29,6 @@ awesome-ci tf group-by -p 3 --sub-prefix 4 st1_infrastructure-base st2_ubi9-ope ## SEE ALSO -* **awesome-ci transform** - transform given input to json +* **relctl transform** - transform given input to json -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/02-CLI/transform/index.md b/docs/docs/02-CLI/transform/index.md index abae032..57f1d67 100755 --- a/docs/docs/02-CLI/transform/index.md +++ b/docs/docs/02-CLI/transform/index.md @@ -3,7 +3,7 @@ transform given input to json ``` -awesome-ci transform [flags] +relctl transform [flags] ``` ## Options @@ -20,7 +20,7 @@ awesome-ci transform [flags] ## SEE ALSO -* **awesome-ci** - Awesome CI make your release tagging easy -* **awesome-ci transform group-by** - group string array by prefix to json +* **relctl** - relctl make your release tagging easy +* **relctl transform group-by** - group string array by prefix to json -##### Auto generated on 18-Mar-2025 +##### Auto generated on 11-May-2026 diff --git a/docs/docs/03-examples/github-actions.md b/docs/docs/03-examples/github-actions.md index 7909d41..ed37240 100644 --- a/docs/docs/03-examples/github-actions.md +++ b/docs/docs/03-examples/github-actions.md @@ -6,7 +6,7 @@ title: GitHub Actions ### Build a Release -This is an example from th awesome-ci project you can find the original workflow [here](https://github.com/fullstack-devops/awesome-ci/blob/main/.github/workflows/Release.yaml). +This is an example from th relctl project you can find the original workflow [here](https://github.com/layer87-labs/relctl/blob/main/.github/workflows/Release.yaml). ```yaml title="release.yaml" name: Publish Release @@ -20,17 +20,17 @@ jobs: create_release: runs-on: ubuntu-latest outputs: - release-id: ${{ steps.tag.outputs.ACI_RELEASE_ID }} - version: ${{ steps.tag.outputs.ACI_NEXT_VERSION }} + release-id: ${{ steps.tag.outputs.RELCTL_RELEASE_ID }} + version: ${{ steps.tag.outputs.RELCTL_NEXT_VERSION }} steps: - name: Check out the repo uses: actions/checkout@v4 - - name: Setup awesome-ci - uses: fullstack-devops/awesome-ci-action@main + - name: Setup relctl + uses: layer87-labs/relctl-action@main - name: create release id: tag - run: awesome-ci release create --merge-sha ${{ github.sha }} + run: relctl release create --merge-sha ${{ github.sha }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -60,9 +60,9 @@ jobs: cache-name: cache-outputs-modules with: path: out/ - key: awesome-ci-${{ github.sha }}-${{ hashFiles('out/awesome-ci*') }} + key: relctl-${{ github.sha }}-${{ hashFiles('out/relctl*') }} restore-keys: | - awesome-ci-${{ github.sha }} + relctl-${{ github.sha }} publish_release: runs-on: ubuntu-latest @@ -70,8 +70,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 - - name: Setup awesome-ci - uses: fullstack-devops/awesome-ci-action@main + - name: Setup relctl + uses: layer87-labs/relctl-action@main - name: get cached build outputs uses: actions/cache@v3 @@ -79,15 +79,15 @@ jobs: cache-name: cache-outputs-modules with: path: out/ - key: awesome-ci-${{ github.sha }} + key: relctl-${{ github.sha }} - name: Publish Release - run: awesome-ci release publish --release-id "$ACI_RELEASE_ID" --asset "file=out/$ARTIFACT1" --asset "file=out/$ARTIFACT2" + run: relctl release publish --release-id "$RELCTL_RELEASE_ID" --asset "file=out/$ARTIFACT1" --asset "file=out/$ARTIFACT2" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - ACI_RELEASE_ID: ${{ needs.create_release.outputs.release-id }} - ARTIFACT1: awesome-ci_${{ needs.create_release.outputs.version }}_amd64 - ARTIFACT2: awesome-ci_${{ needs.create_release.outputs.version }}_arm64 + RELCTL_RELEASE_ID: ${{ needs.create_release.outputs.release-id }} + ARTIFACT1: relctl_${{ needs.create_release.outputs.version }}_amd64 + ARTIFACT2: relctl_${{ needs.create_release.outputs.version }}_arm64 ``` You need more examples? Please open an issue! diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 49f155e..a8b266c 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -9,10 +9,10 @@ const config: Config = { }, tagline: "Fullstack applications and DevOps solutions", favicon: "https://avatars.githubusercontent.com/u/97617148?s=200&v=4", - url: "https://fullstack-devops.github.io", - baseUrl: "/awesome-ci", - organizationName: "fullstack-devops", - projectName: "awesome-ci", + url: "https://layer87-labs.github.io", + baseUrl: "/relctl", + organizationName: "layer87-labs", + projectName: "relctl", onBrokenLinks: "throw", onBrokenMarkdownLinks: "warn", i18n: { @@ -26,7 +26,7 @@ const config: Config = { { docs: { sidebarPath: require.resolve("./sidebars.js"), - editUrl: "https://github.com/fullstack-devops/awesome-ci/tree/main/", + editUrl: "https://github.com/layer87-labs/relctl/tree/main/", }, theme: { customCss: require.resolve("./src/css/custom.css"), @@ -38,12 +38,12 @@ const config: Config = { plugins: [require.resolve("docusaurus-lunr-search")], themeConfig: { - image: "https://fullstack-devops.github.io/img/full-logo.png", + image: "https://layer87-labs.github.io/img/full-logo.png", navbar: { title: "Awesome CI", logo: { alt: "Awesome CI Logo", - src: "https://fullstack-devops.github.io/img/logo.png", + src: "https://layer87-labs.github.io/img/logo.png", }, items: [ { @@ -57,7 +57,7 @@ const config: Config = { position: "right", }, { - href: "https://github.com/fullstack-devops/awesome-ci", + href: "https://github.com/layer87-labs/relctl", label: "GitHub", position: "right", }, @@ -89,7 +89,7 @@ const config: Config = { items: [ { label: "GitHub", - href: "https://github.com/fullstack-devops/awesome-ci", + href: "https://github.com/layer87-labs/relctl", }, ], }, diff --git a/docs/src/components/HomepageFeatures/index.tsx b/docs/src/components/HomepageFeatures/index.tsx index fea8b22..6d49c8d 100644 --- a/docs/src/components/HomepageFeatures/index.tsx +++ b/docs/src/components/HomepageFeatures/index.tsx @@ -14,7 +14,7 @@ const FeatureList: FeatureItem[] = [ Svg: require('@site/static/img/pablo-arroyo-_SEbdtH4ZLM-unsplash.svg').default, description: ( <> - Awesome-CI was designed from the ground up to be easily installed and + relctl was designed from the ground up to be easily installed and used to get your versioning up and running quickly. ), diff --git a/docs/static/img/release-process.drawio.svg b/docs/static/img/release-process.drawio.svg index 55a1546..af58907 100644 --- a/docs/static/img/release-process.drawio.svg +++ b/docs/static/img/release-process.drawio.svg @@ -321,13 +321,13 @@ * - continuous integration which is extended by the tool awesome-ci + continuous integration which is extended by the tool relctl - *continuous integration which is extended by the tool awesome-ci + *continuous integration which is extended by the tool relctl diff --git a/go.mod b/go.mod index e5355a0..e579d4d 100644 --- a/go.mod +++ b/go.mod @@ -1,51 +1,53 @@ -module github.com/fullstack-devops/awesome-ci +module github.com/layer87-labs/relctl -go 1.24.1 +go 1.26.3 require ( github.com/coreos/go-semver v0.3.1 github.com/ghodss/yaml v1.0.0 - github.com/go-git/go-git/v5 v5.14.0 - github.com/google/go-github/v70 v70.0.0 - github.com/itchyny/gojq v0.12.17 - github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.10.0 - golang.org/x/oauth2 v0.28.0 + github.com/go-git/go-git/v5 v5.19.0 + github.com/google/go-github/v86 v86.0.0 + github.com/itchyny/gojq v0.12.19 + github.com/spf13/cobra v1.10.2 + github.com/stretchr/testify v1.11.1 + golang.org/x/oauth2 v0.36.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - dario.cat/mergo v1.0.1 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect - github.com/cyphar/filepath-securejoin v0.4.1 // indirect + dario.cat/mergo v1.0.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect + github.com/cyphar/filepath-securejoin v0.6.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/itchyny/timefmt-go v0.1.6 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/spf13/pflag v1.0.6 // indirect + github.com/spf13/pflag v1.0.10 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) require ( - github.com/Masterminds/semver/v3 v3.3.1 + github.com/Masterminds/semver/v3 v3.5.0 github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/ProtonMail/go-crypto v1.1.6 // indirect - github.com/cloudflare/circl v1.6.0 // indirect + github.com/ProtonMail/go-crypto v1.4.1 // indirect + github.com/cloudflare/circl v1.6.3 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.6.2 // indirect - github.com/google/go-querystring v1.1.0 // indirect + github.com/go-git/go-billy/v5 v5.9.0 // indirect + github.com/google/go-querystring v1.2.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect - github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/pjbgf/sha1cd v0.3.2 // indirect - github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/sirupsen/logrus v1.9.3 - github.com/skeema/knownhosts v1.3.1 // indirect + github.com/kevinburke/ssh_config v1.6.0 // indirect + github.com/pjbgf/sha1cd v0.6.0 // indirect + github.com/sergi/go-diff v1.4.0 // indirect + github.com/sirupsen/logrus v1.9.4 + github.com/skeema/knownhosts v1.3.2 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.36.0 // indirect - golang.org/x/net v0.37.0 // indirect - golang.org/x/sys v0.31.0 // indirect + golang.org/x/crypto v0.51.0 // indirect + golang.org/x/net v0.54.0 // indirect + golang.org/x/sys v0.44.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/go.sum b/go.sum index d1dbe87..cea7be3 100644 --- a/go.sum +++ b/go.sum @@ -1,24 +1,25 @@ -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= -github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= +github.com/Masterminds/semver/v3 v3.5.0 h1:kQceYJfbupGfZOKZQg0kou0DgAKhzDg2NZPAwZ/2OOE= +github.com/Masterminds/semver/v3 v3.5.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= -github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ProtonMail/go-crypto v1.4.1 h1:9RfcZHqEQUvP8RzecWEUafnZVtEvrBVL9BiF67IQOfM= +github.com/ProtonMail/go-crypto v1.4.1/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= -github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8= +github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= -github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= +github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= +github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= +github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -32,31 +33,33 @@ github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= -github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= +github.com/go-git/go-billy/v5 v5.9.0 h1:jItGXszUDRtR/AlferWPTMN4j38BQ88XnXKbilmmBPA= +github.com/go-git/go-billy/v5 v5.9.0/go.mod h1:jCnQMLj9eUgGU7+ludSTYoZL/GGmii14RxKFj7ROgHw= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.14.0 h1:/MD3lCrGjCen5WfEAzKg00MJJffKhC8gzS80ycmCi60= -github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj9ItW3Wk5k= +github.com/go-git/go-git/v5 v5.19.0 h1:+WkVUQZSy/F1Gb13udrMKjIM2PrzsNfDKFSfo5tkMtc= +github.com/go-git/go-git/v5 v5.19.0/go.mod h1:Pb1v0c7/g8aGQJwx9Us09W85yGoyvSwuhEGMH7zjDKQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/go-github/v70 v70.0.0 h1:/tqCp5KPrcvqCc7vIvYyFYTiCGrYvaWoYMGHSQbo55o= -github.com/google/go-github/v70 v70.0.0/go.mod h1:xBUZgo8MI3lUL/hwxl3hlceJW1U8MVnXP3zUyI+rhQY= -github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= -github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/go-github/v86 v86.0.0 h1:S/6aANJhwRm8EQmGKVML3j41yq0h2BsTP8FnDkO7kcA= +github.com/google/go-github/v86 v86.0.0/go.mod h1:zKv1l4SwDXNFMGByi2FWkq71KwSXqj/eQRZuqtmcot8= +github.com/google/go-querystring v1.2.0 h1:yhqkPbu2/OH+V9BfpCVPZkNmUXhb2gBxJArfhIxNtP0= +github.com/google/go-querystring v1.2.0/go.mod h1:8IFJqpSRITyJ8QhQ13bmbeMBDfmeEJZD5A0egEOmkqU= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/itchyny/gojq v0.12.17 h1:8av8eGduDb5+rvEdaOO+zQUjA04MS0m3Ps8HiD+fceg= -github.com/itchyny/gojq v0.12.17/go.mod h1:WBrEMkgAfAGO1LUcGOckBl5O726KPp+OlkKug0I/FEY= -github.com/itchyny/timefmt-go v0.1.6 h1:ia3s54iciXDdzWzwaVKXZPbiXzxxnv1SPGFfM/myJ5Q= -github.com/itchyny/timefmt-go v0.1.6/go.mod h1:RRDZYC5s9ErkjQvTvvU7keJjxUYzIISJGxm9/mAERQg= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= -github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/ssh_config v1.6.0 h1:J1FBfmuVosPHf5GRdltRLhPJtJpTlMdKTBjRgTaQBFY= +github.com/kevinburke/ssh_config v1.6.0/go.mod h1:q2RIzfka+BXARoNexmF9gkxEX7DmvbW9P4hIVx2Kg4M= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -66,8 +69,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= -github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= -github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= +github.com/pjbgf/sha1cd v0.6.0 h1:3WJ8Wz8gvDz29quX1OcEmkAlUg9diU4GxJHqs0/XiwU= +github.com/pjbgf/sha1cd v0.6.0/go.mod h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -76,51 +79,52 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= -github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= +github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= +github.com/skeema/knownhosts v1.3.2 h1:EDL9mgf4NzwMXCTfaxSD/o/a5fxDw/xL9nkU28JjdBg= +github.com/skeema/knownhosts v1.3.2/go.mod h1:bEg3iQAuw+jyiw+484wwFJoKSLwcfd7fqRy+N0QTiow= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= +golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM= +golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= -golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= -golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= +golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= +golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= +golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= -golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= +golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= +golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= @@ -130,6 +134,5 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/app/awesome-ci/ces/detect.go b/internal/app/relctl/ces/detect.go similarity index 76% rename from internal/app/awesome-ci/ces/detect.go rename to internal/app/relctl/ces/detect.go index 94ef026..d7aae17 100644 --- a/internal/app/awesome-ci/ces/detect.go +++ b/internal/app/relctl/ces/detect.go @@ -3,11 +3,11 @@ package ces import ( "os" - githubrunner "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/ces/github_runner" - gitlabrunner "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/ces/gitlab_runner" - jenkinspipeline "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/ces/jenkins_pipeline" - "github.com/fullstack-devops/awesome-ci/internal/pkg/models" - "github.com/fullstack-devops/awesome-ci/internal/pkg/rcpersist" + githubrunner "github.com/layer87-labs/relctl/internal/app/relctl/ces/github_runner" + gitlabrunner "github.com/layer87-labs/relctl/internal/app/relctl/ces/gitlab_runner" + jenkinspipeline "github.com/layer87-labs/relctl/internal/app/relctl/ces/jenkins_pipeline" + "github.com/layer87-labs/relctl/internal/pkg/models" + "github.com/layer87-labs/relctl/internal/pkg/rcpersist" log "github.com/sirupsen/logrus" ) @@ -76,7 +76,7 @@ func DetectCes() (cesType CES, Type: rcpersist.CESTypeLoMa, EnvFile: envFile, } - log.Warnln(`no CI detected please use "awesome-ci connect [scm-portal]" to connect!`) + log.Warnln(`no CI detected please use "relctl connect [scm-portal]" to connect!`) return } diff --git a/internal/app/awesome-ci/ces/envs.go b/internal/app/relctl/ces/envs.go similarity index 84% rename from internal/app/awesome-ci/ces/envs.go rename to internal/app/relctl/ces/envs.go index a9a2ca4..c189163 100644 --- a/internal/app/awesome-ci/ces/envs.go +++ b/internal/app/relctl/ces/envs.go @@ -1,7 +1,7 @@ package ces import ( - "github.com/fullstack-devops/awesome-ci/internal/pkg/envvars" + "github.com/layer87-labs/relctl/internal/pkg/envvars" log "github.com/sirupsen/logrus" ) @@ -39,7 +39,10 @@ func (ces CES) ExportAsEnv(envVars []KeyValue) (err error) { for _, ev := range envVars { envFile.Set(ev.Name, ev.Value) } - envFile.CloseEnvFile(ces.EnvFile) + if err := envFile.CloseEnvFile(ces.EnvFile); err != nil { + log.Warnln(err) + return err + } } return diff --git a/internal/app/awesome-ci/ces/github_runner/runner.go b/internal/app/relctl/ces/github_runner/runner.go similarity index 91% rename from internal/app/awesome-ci/ces/github_runner/runner.go rename to internal/app/relctl/ces/github_runner/runner.go index 54a3e97..7ff9ce7 100644 --- a/internal/app/awesome-ci/ces/github_runner/runner.go +++ b/internal/app/relctl/ces/github_runner/runner.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "github.com/fullstack-devops/awesome-ci/internal/pkg/models" + "github.com/layer87-labs/relctl/internal/pkg/models" ) func DetectGitHubActionsRunner() (connects *models.ConnectCredentials, err error) { diff --git a/internal/app/awesome-ci/ces/gitlab_runner/runner.go b/internal/app/relctl/ces/gitlab_runner/runner.go similarity index 90% rename from internal/app/awesome-ci/ces/gitlab_runner/runner.go rename to internal/app/relctl/ces/gitlab_runner/runner.go index d19ad25..a194cd3 100644 --- a/internal/app/awesome-ci/ces/gitlab_runner/runner.go +++ b/internal/app/relctl/ces/gitlab_runner/runner.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "github.com/fullstack-devops/awesome-ci/internal/pkg/models" + "github.com/layer87-labs/relctl/internal/pkg/models" ) func DetectGitLabActionsRunner() (connects *models.ConnectCredentials, err error) { diff --git a/internal/app/awesome-ci/ces/jenkins_pipeline/pipeline.go b/internal/app/relctl/ces/jenkins_pipeline/pipeline.go similarity index 91% rename from internal/app/awesome-ci/ces/jenkins_pipeline/pipeline.go rename to internal/app/relctl/ces/jenkins_pipeline/pipeline.go index 1e6390a..4a18a98 100644 --- a/internal/app/awesome-ci/ces/jenkins_pipeline/pipeline.go +++ b/internal/app/relctl/ces/jenkins_pipeline/pipeline.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "github.com/fullstack-devops/awesome-ci/internal/pkg/models" + "github.com/layer87-labs/relctl/internal/pkg/models" ) func DetectJenkinsPipeline() (connects *models.ConnectCredentials, err error) { diff --git a/internal/app/awesome-ci/ces/models.go b/internal/app/relctl/ces/models.go similarity index 72% rename from internal/app/awesome-ci/ces/models.go rename to internal/app/relctl/ces/models.go index a19a78f..bab643a 100644 --- a/internal/app/awesome-ci/ces/models.go +++ b/internal/app/relctl/ces/models.go @@ -1,6 +1,6 @@ package ces -import "github.com/fullstack-devops/awesome-ci/internal/pkg/rcpersist" +import "github.com/layer87-labs/relctl/internal/pkg/rcpersist" type CES struct { Type rcpersist.CESType // required diff --git a/internal/app/awesome-ci/cmd/connect/connect.go b/internal/app/relctl/cmd/connect/connect.go similarity index 87% rename from internal/app/awesome-ci/cmd/connect/connect.go rename to internal/app/relctl/cmd/connect/connect.go index f49ea7b..c6e4dcb 100644 --- a/internal/app/awesome-ci/cmd/connect/connect.go +++ b/internal/app/relctl/cmd/connect/connect.go @@ -1,8 +1,8 @@ package connect import ( - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/connect" - "github.com/fullstack-devops/awesome-ci/internal/pkg/rcpersist" + "github.com/layer87-labs/relctl/internal/app/relctl/connect" + "github.com/layer87-labs/relctl/internal/pkg/rcpersist" "github.com/spf13/cobra" ) @@ -21,7 +21,7 @@ creates an encrypted .rc file to persistently connect to GitHub soon you can also connect to GitLab (not yet implemented) useful without a runner or in an jenkins pipeline`, Run: func(cmd *cobra.Command, args []string) { - cmd.Help() + _ = cmd.Help() }, } @@ -60,8 +60,8 @@ func init() { githubCmd.Flags().StringVarP(&Repository, "repository", "r", "", "(required) repo eg.: octo-org/octo-repo") githubCmd.Flags().StringVarP(&Token, "token", "t", "", "(required) plain token eg.: ghp_*****") - githubCmd.MarkFlagRequired("repository") - githubCmd.MarkFlagRequired("token") + _ = githubCmd.MarkFlagRequired("repository") + _ = githubCmd.MarkFlagRequired("token") // exclusive Flags } diff --git a/internal/app/awesome-ci/cmd/parse/parse.go b/internal/app/relctl/cmd/parse/parse.go similarity index 75% rename from internal/app/awesome-ci/cmd/parse/parse.go rename to internal/app/relctl/cmd/parse/parse.go index 19978cf..658ac3e 100644 --- a/internal/app/awesome-ci/cmd/parse/parse.go +++ b/internal/app/relctl/cmd/parse/parse.go @@ -1,8 +1,8 @@ package parse import ( - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/parse" - "github.com/fullstack-devops/awesome-ci/internal/pkg/parsejy" + "github.com/layer87-labs/relctl/internal/app/relctl/parse" + "github.com/layer87-labs/relctl/internal/pkg/parsejy" "github.com/spf13/cobra" ) @@ -17,7 +17,7 @@ var Cmd = &cobra.Command{ Use: "parse", Short: "inspect and parse JSON and YAML files to retrieve values, similar to jq with additional features", Run: func(cmd *cobra.Command, args []string) { - cmd.Help() + _ = cmd.Help() }, } @@ -26,9 +26,9 @@ var jsonCmd = &cobra.Command{ Short: "parse a json string or file", Run: func(cmd *cobra.Command, args []string) { if File != "" { - parsejy.ParseFile(Query, File, parsejy.JSONSyntax) + _ = parsejy.ParseFile(Query, File, parsejy.JSONSyntax) } else { - parsejy.Parse(Query, []byte(String), parsejy.JSONSyntax) + _ = parsejy.Parse(Query, []byte(String), parsejy.JSONSyntax) } }, } @@ -38,9 +38,9 @@ var yamlCmd = &cobra.Command{ Short: "parse a yaml string or file", Run: func(cmd *cobra.Command, args []string) { if File != "" { - parsejy.ParseFile(Query, File, parsejy.YamlSyntax) + _ = parsejy.ParseFile(Query, File, parsejy.YamlSyntax) } else { - parsejy.Parse(Query, []byte(String), parsejy.YamlSyntax) + _ = parsejy.Parse(Query, []byte(String), parsejy.YamlSyntax) } }, } @@ -70,12 +70,12 @@ func init() { yamlCmd.Flags().StringVarP(&Query, "query", "q", "", "(required) query for output") yamlCmd.Flags().StringVarP(&String, "string", "s", "", "query for output") - jsonCmd.MarkFlagRequired("query") + _ = jsonCmd.MarkFlagRequired("query") jsonCmd.MarkFlagsMutuallyExclusive("file", "string") - jsonCmd.MarkFlagFilename("file") + _ = jsonCmd.MarkFlagFilename("file") - yamlCmd.MarkFlagRequired("query") + _ = yamlCmd.MarkFlagRequired("query") yamlCmd.MarkFlagsMutuallyExclusive("file", "string") - yamlCmd.MarkFlagFilename("file") + _ = yamlCmd.MarkFlagFilename("file") // exclusive Flags } diff --git a/internal/app/awesome-ci/cmd/pullrequest/pullrequest.go b/internal/app/relctl/cmd/pullrequest/pullrequest.go similarity index 92% rename from internal/app/awesome-ci/cmd/pullrequest/pullrequest.go rename to internal/app/relctl/cmd/pullrequest/pullrequest.go index e9d08e6..be3c032 100644 --- a/internal/app/awesome-ci/cmd/pullrequest/pullrequest.go +++ b/internal/app/relctl/cmd/pullrequest/pullrequest.go @@ -1,7 +1,7 @@ package pullrequest import ( - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/service" + "github.com/layer87-labs/relctl/internal/app/relctl/service" "github.com/spf13/cobra" ) @@ -17,7 +17,7 @@ var Cmd = &cobra.Command{ Short: "Manage GitHub pull requests", Long: `The pull request command is used to manage GitHub pull requests. It provides subcommands to get pull request info, allowing you to get all infos about a pull request in GitHub.`, Run: func(cmd *cobra.Command, args []string) { - cmd.Help() + _ = cmd.Help() }, } diff --git a/internal/app/awesome-ci/cmd/release/release.go b/internal/app/relctl/cmd/release/release.go similarity index 79% rename from internal/app/awesome-ci/cmd/release/release.go rename to internal/app/relctl/cmd/release/release.go index ab01361..7da2e4f 100644 --- a/internal/app/awesome-ci/cmd/release/release.go +++ b/internal/app/relctl/cmd/release/release.go @@ -4,7 +4,7 @@ import ( "os" "strconv" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/service" + "github.com/layer87-labs/relctl/internal/app/relctl/service" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -21,7 +21,7 @@ var Cmd = &cobra.Command{ Short: "Manage GitHub releases with ease", Long: `The release command is used to manage GitHub releases. It provides subcommands to create and publish releases, allowing you to automate the release process and integrate it into CI/CD workflows. Use this command to streamline the release tagging and deployment of your software projects.`, Run: func(cmd *cobra.Command, args []string) { - cmd.Help() + _ = cmd.Help() }, } @@ -55,31 +55,31 @@ Example of using the release publish command To publish a release with a specific release ID and assets, use the following command: - awesome-ci release publish --release-id 12345 \ - --asset "file=out/awesome-ci_v1.0.0_amd64" \ - --asset "file=out/awesome-ci_v1.0.0_arm64" - awesome-ci release publish --release-id 12345 --asset "file=out/awesome-ci_v1.0.0_amd64" --asset "file=out/awesome-ci_v1.0.0_arm64" + relctl release publish --release-id 12345 \ + --asset "file=out/relctl_v1.0.0_amd64" \ + --asset "file=out/relctl_v1.0.0_arm64" + relctl release publish --release-id 12345 --asset "file=out/relctl_v1.0.0_amd64" --asset "file=out/relctl_v1.0.0_arm64" -If the release ID is not provided, the command will look for the 'ACI_RELEASE_ID' environment variable: +If the release ID is not provided, the command will look for the 'RELCTL_RELEASE_ID' environment variable: - export ACI_RELEASE_ID=12345 - awesome-ci release publish \ - --asset "file=out/awesome-ci_v1.0.0_amd64" \ - --asset "file=out/awesome-ci_v1.0.0_arm64" - export ACI_RELEASE_ID=12345 - awesome-ci release publish --asset "file=out/awesome-ci_v1.0.0_amd64" --asset "file=out/awesome-ci_v1.0.0_arm64" + export RELCTL_RELEASE_ID=12345 + relctl release publish \ + --asset "file=out/relctl_v1.0.0_amd64" \ + --asset "file=out/relctl_v1.0.0_arm64" + export RELCTL_RELEASE_ID=12345 + relctl release publish --asset "file=out/relctl_v1.0.0_amd64" --asset "file=out/relctl_v1.0.0_arm64" You can also publish a release with a directory as a zip asset: - awesome-ci release publish --release-id 12345 \ + relctl release publish --release-id 12345 \ --asset "zip=out/myfiles" The assets should be specified as local file paths to be uploaded to the GitHub release.`, Run: func(cmd *cobra.Command, args []string) { if releaseID == 0 { - log.Traceln("looking of env variable 'ACI_RELEASE_ID' since flag is not set") - releaseIDStr, releaseIDBool := os.LookupEnv("ACI_RELEASE_ID") + log.Traceln("looking of env variable 'RELCTL_RELEASE_ID' since flag is not set") + releaseIDStr, releaseIDBool := os.LookupEnv("RELCTL_RELEASE_ID") if releaseIDBool { releaseIDTmp, err := strconv.ParseInt(releaseIDStr, 10, 64) if err != nil { @@ -113,6 +113,6 @@ func init() { Cmd.PersistentFlags().StringVarP(&releaseArgs.PatchLevel, "patch-level", "l", "", "predefine patch level of version to Update") // exclusive Flags - publishCmd.Flags().Int64VarP(&releaseID, "release-id", "", 0, "publish an early defined release (also looking for env ACI_RELEASE_ID)") + publishCmd.Flags().Int64VarP(&releaseID, "release-id", "", 0, "publish an early defined release (also looking for env RELCTL_RELEASE_ID)") publishCmd.Flags().StringArrayVarP(&assets, "asset", "a", []string{}, "add an asset to the release, can be specified multiple times.") } diff --git a/internal/app/awesome-ci/cmd/root.go b/internal/app/relctl/cmd/root.go similarity index 56% rename from internal/app/awesome-ci/cmd/root.go rename to internal/app/relctl/cmd/root.go index f70869f..2f8f788 100644 --- a/internal/app/awesome-ci/cmd/root.go +++ b/internal/app/relctl/cmd/root.go @@ -4,12 +4,12 @@ import ( "fmt" "os" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/cmd/connect" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/cmd/parse" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/cmd/pullrequest" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/cmd/release" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/cmd/transform" - "github.com/fullstack-devops/awesome-ci/internal/app/build" + "github.com/layer87-labs/relctl/internal/app/build" + "github.com/layer87-labs/relctl/internal/app/relctl/cmd/connect" + "github.com/layer87-labs/relctl/internal/app/relctl/cmd/parse" + "github.com/layer87-labs/relctl/internal/app/relctl/cmd/pullrequest" + "github.com/layer87-labs/relctl/internal/app/relctl/cmd/release" + "github.com/layer87-labs/relctl/internal/app/relctl/cmd/transform" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -18,14 +18,14 @@ import ( var Verbose bool var RootCmd = &cobra.Command{ - Use: "awesome-ci", + Use: "relctl", Version: fmt.Sprintf("%s (%s)-(%s)", build.Version, build.CommitHash, build.BuildDate), - Short: "Awesome CI make your release tagging easy", - Long: `Awesome CI make your release tagging easy + Short: "relctl make your release tagging easy", + Long: `relctl make your release tagging easy Comatible with CI pipelines like Jenkins and GitHub -Find more information and examples at: https://github.com/fullstack-devops/awesome-ci`, +Find more information and examples at: https://github.com/layer87-labs/relctl`, Run: func(cmd *cobra.Command, args []string) { - cmd.Help() + _ = cmd.Help() }, } diff --git a/internal/app/awesome-ci/cmd/root_test.go b/internal/app/relctl/cmd/root_test.go similarity index 80% rename from internal/app/awesome-ci/cmd/root_test.go rename to internal/app/relctl/cmd/root_test.go index a9130c1..3101639 100644 --- a/internal/app/awesome-ci/cmd/root_test.go +++ b/internal/app/relctl/cmd/root_test.go @@ -6,8 +6,8 @@ import ( "path/filepath" "testing" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/cmd" - cobradocs "github.com/fullstack-devops/awesome-ci/internal/pkg/cobra-docs" + "github.com/layer87-labs/relctl/internal/app/relctl/cmd" + cobradocs "github.com/layer87-labs/relctl/internal/pkg/cobra-docs" ) var docsPath = filepath.Join("docs", "docs", "02-CLI") diff --git a/internal/app/awesome-ci/cmd/transform/transform.go b/internal/app/relctl/cmd/transform/transform.go similarity index 75% rename from internal/app/awesome-ci/cmd/transform/transform.go rename to internal/app/relctl/cmd/transform/transform.go index 88e46b4..1b3e866 100644 --- a/internal/app/awesome-ci/cmd/transform/transform.go +++ b/internal/app/relctl/cmd/transform/transform.go @@ -3,7 +3,7 @@ package transform import ( "fmt" - "github.com/fullstack-devops/awesome-ci/internal/pkg/parsejy" + "github.com/layer87-labs/relctl/internal/pkg/parsejy" "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -19,14 +19,14 @@ var Cmd = &cobra.Command{ Aliases: []string{"tf"}, Short: "transform given input to json", Run: func(cmd *cobra.Command, args []string) { - cmd.Help() + _ = cmd.Help() }, } var groupByCmd = &cobra.Command{ Use: "group-by", Short: "group string array by prefix to json", - Example: "awesome-ci tf group-by -p 3 --sub-prefix 4 st1_infrastructure-base st2_ubi9-openjdk-11 st2_ubi9-openjdk-17 \n produces: {\"st1\":[\"infrastructure-base\"],\"st2\":[\"ubi9-openjdk-11\",\"ubi9-openjdk-17\"]}", + Example: "relctl tf group-by -p 3 --sub-prefix 4 st1_infrastructure-base st2_ubi9-openjdk-11 st2_ubi9-openjdk-17 \n produces: {\"st1\":[\"infrastructure-base\"],\"st2\":[\"ubi9-openjdk-11\",\"ubi9-openjdk-17\"]}", Run: func(cmd *cobra.Command, args []string) { if res, err := parsejy.GroupByPrefix(args, GroupPrefixInt, SubstractString); err != nil { logrus.Fatalln(err) @@ -44,6 +44,6 @@ func init() { groupByCmd.Flags().IntVarP(&GroupPrefixInt, "prefix", "p", 3, "group by prefix until index -- eg.: 'st1_base-image' and int 3, will be grouped by 'st1'") groupByCmd.Flags().IntVarP(&SubstractString, "sub-prefix", "", 0, "remove prefix until index number -- eg.: 'st1_base-image' and 4 will be 'base-image'") - groupByCmd.MarkFlagRequired("prefix") + _ = groupByCmd.MarkFlagRequired("prefix") // exclusive Flags } diff --git a/internal/app/awesome-ci/connect/connect.go b/internal/app/relctl/connect/connect.go similarity index 84% rename from internal/app/awesome-ci/connect/connect.go rename to internal/app/relctl/connect/connect.go index 8761e63..cbfc44f 100644 --- a/internal/app/awesome-ci/connect/connect.go +++ b/internal/app/relctl/connect/connect.go @@ -1,8 +1,8 @@ package connect import ( - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/scm-portal/github" - "github.com/fullstack-devops/awesome-ci/internal/pkg/rcpersist" + "github.com/layer87-labs/relctl/internal/app/relctl/scm-portal/github" + "github.com/layer87-labs/relctl/internal/pkg/rcpersist" log "github.com/sirupsen/logrus" ) diff --git a/internal/app/awesome-ci/connect/github.go b/internal/app/relctl/connect/github.go similarity index 73% rename from internal/app/awesome-ci/connect/github.go rename to internal/app/relctl/connect/github.go index 07e97d5..93e0756 100644 --- a/internal/app/awesome-ci/connect/github.go +++ b/internal/app/relctl/connect/github.go @@ -1,8 +1,8 @@ package connect import ( - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/scm-portal/github" - "github.com/fullstack-devops/awesome-ci/internal/pkg/rcpersist" + "github.com/layer87-labs/relctl/internal/app/relctl/scm-portal/github" + "github.com/layer87-labs/relctl/internal/pkg/rcpersist" log "github.com/sirupsen/logrus" ) @@ -16,7 +16,9 @@ func UpdateRcFileForGitHub(server string, repo string, token string) { } rcFile.UpdateSCMPortalType(rcpersist.SCMPortalTypeGitHub) - rcFile.UpdateCreds(server, repo, token) + if err := rcFile.UpdateCreds(server, repo, token); err != nil { + log.Fatalln(err) + } if err := rcFile.Save(); err != nil { log.Fatalln(err) diff --git a/internal/app/awesome-ci/connect/models.go b/internal/app/relctl/connect/models.go similarity index 100% rename from internal/app/awesome-ci/connect/models.go rename to internal/app/relctl/connect/models.go diff --git a/internal/app/awesome-ci/parse/parse.go b/internal/app/relctl/parse/parse.go similarity index 100% rename from internal/app/awesome-ci/parse/parse.go rename to internal/app/relctl/parse/parse.go diff --git a/internal/app/awesome-ci/awesome-ci.go b/internal/app/relctl/relctl.go similarity index 76% rename from internal/app/awesome-ci/awesome-ci.go rename to internal/app/relctl/relctl.go index 0ebdbe9..96f01ee 100644 --- a/internal/app/awesome-ci/awesome-ci.go +++ b/internal/app/relctl/relctl.go @@ -1,9 +1,9 @@ -package awesomeci +package relctl import ( "os" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/cmd" + "github.com/layer87-labs/relctl/internal/app/relctl/cmd" log "github.com/sirupsen/logrus" ) @@ -18,6 +18,6 @@ func init() { log.SetLevel(log.InfoLevel) } -func AwesomeCI() { +func Execute() { cmd.Execute() } diff --git a/internal/app/awesome-ci/scm-portal/comment.go b/internal/app/relctl/scm-portal/comment.go similarity index 77% rename from internal/app/awesome-ci/scm-portal/comment.go rename to internal/app/relctl/scm-portal/comment.go index 599decf..f1cb54a 100644 --- a/internal/app/awesome-ci/scm-portal/comment.go +++ b/internal/app/relctl/scm-portal/comment.go @@ -3,7 +3,7 @@ package scmportal import ( "os" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/scm-portal/github" + "github.com/layer87-labs/relctl/internal/app/relctl/scm-portal/github" ) // CommentHelpToPullRequest comments to a pull or merge request if awesome ci is running in CI mode @@ -11,7 +11,7 @@ func (lay SCMLayer) CommentHelpToPullRequest(number int) (err error) { ci, ciPresent := os.LookupEnv("CI") isCI := ci == "true" && ciPresent - _, isSilentBool := os.LookupEnv("ACI_SILENT") + _, isSilentBool := os.LookupEnv("RELCTL_SILENT") if isCI && !isSilentBool { grc := lay.Grc.(*github.GitHubRichClient) err := grc.CommentHelpToPullRequest(number) diff --git a/internal/app/awesome-ci/scm-portal/github/issues.go b/internal/app/relctl/scm-portal/github/issues.go similarity index 85% rename from internal/app/awesome-ci/scm-portal/github/issues.go rename to internal/app/relctl/scm-portal/github/issues.go index 98955cb..deecc66 100644 --- a/internal/app/awesome-ci/scm-portal/github/issues.go +++ b/internal/app/relctl/scm-portal/github/issues.go @@ -5,15 +5,15 @@ import ( "regexp" "strings" - "github.com/fullstack-devops/awesome-ci/internal/pkg/semver" + "github.com/layer87-labs/relctl/internal/pkg/semver" "github.com/sirupsen/logrus" - "github.com/google/go-github/v70/github" + "github.com/google/go-github/v86/github" ) var ( direction, sort = "asc", "created" - detailsOpening = `
Possible awesome-ci commands for this Pull Request` + detailsOpening = `
Possible relctl commands for this Pull Request` // https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string semVerRegex = `(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)(?:-(?P(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$` @@ -67,14 +67,14 @@ func (ghrc *GitHubRichClient) CommentHelpToPullRequest(number int) (err error) { | command | description | | --- | --- | -| aci_patch_level: major | create a major version bump | -| aci_version_override: 2.1.0 | set the version to 2.1.0 using only semver compatible syntax! | +| relctl_patch_level: major | create a major version bump | +| relctl_version_override: 2.1.0 | set the version to 2.1.0 using only semver compatible syntax! | Need more help? -Have a look at [my repo](https://github.com/fullstack-devops/awesome-ci) +Have a look at [my repo](https://github.com/layer87-labs/relctl) -This message was created by awesome-ci and can be disabled by the env variable ACI_SILENT=true +This message was created by relctl and can be disabled by the env variable RELCTL_SILENT=true
` var prComment *github.IssueComment @@ -105,7 +105,7 @@ This message was created by awesome-ci and can be disabled by the env variable < func (ghrc *GitHubRichClient) SearchIssuesForOverrides(prNumber int) (nextVersion *string, patchLevel *semver.PatchLevel, err error) { var pLevel semver.PatchLevel - // if an comment exists with aci_patch_level=major, make a major version! + // if an comment exists with relctl_patch_level=major, make a major version! issueComments, err := ghrc.GetIssueComments(prNumber) if err != nil { return @@ -125,8 +125,8 @@ func (ghrc *GitHubRichClient) SearchIssuesForOverrides(prNumber int) (nextVersio // if isCollaborator { if true { - aciVersionOverride := regexp.MustCompile(`^aci_version_override: (` + semVerRegex + `)`) - aciPatchLevel := regexp.MustCompile(`^aci_patch_level: ([a-zA-Z]+)`) + aciVersionOverride := regexp.MustCompile(`^relctl_version_override: (` + semVerRegex + `)`) + aciPatchLevel := regexp.MustCompile(`^relctl_patch_level: ([a-zA-Z]+)`) if aciVersionOverride.MatchString(*comment.Body) { nextVersion = &aciVersionOverride.FindStringSubmatch(*comment.Body)[1] diff --git a/internal/app/awesome-ci/scm-portal/github/models.go b/internal/app/relctl/scm-portal/github/models.go similarity index 70% rename from internal/app/awesome-ci/scm-portal/github/models.go rename to internal/app/relctl/scm-portal/github/models.go index 8745746..ad769a7 100644 --- a/internal/app/awesome-ci/scm-portal/github/models.go +++ b/internal/app/relctl/scm-portal/github/models.go @@ -1,6 +1,6 @@ package github -import "github.com/google/go-github/v70/github" +import "github.com/google/go-github/v86/github" type GitHubRichClient struct { Client *github.Client diff --git a/internal/app/awesome-ci/scm-portal/github/pullrequest.go b/internal/app/relctl/scm-portal/github/pullrequest.go similarity index 97% rename from internal/app/awesome-ci/scm-portal/github/pullrequest.go rename to internal/app/relctl/scm-portal/github/pullrequest.go index 045cefe..3ea5089 100644 --- a/internal/app/awesome-ci/scm-portal/github/pullrequest.go +++ b/internal/app/relctl/scm-portal/github/pullrequest.go @@ -3,7 +3,7 @@ package github import ( "fmt" - "github.com/google/go-github/v70/github" + "github.com/google/go-github/v86/github" "github.com/sirupsen/logrus" ) diff --git a/internal/app/awesome-ci/scm-portal/github/release.go b/internal/app/relctl/scm-portal/github/release.go similarity index 97% rename from internal/app/awesome-ci/scm-portal/github/release.go rename to internal/app/relctl/scm-portal/github/release.go index 37f860a..91d689e 100644 --- a/internal/app/awesome-ci/scm-portal/github/release.go +++ b/internal/app/relctl/scm-portal/github/release.go @@ -6,11 +6,11 @@ import ( "os" "time" - "github.com/fullstack-devops/awesome-ci/internal/pkg/tools" - "github.com/fullstack-devops/awesome-ci/internal/pkg/uploadasset" + "github.com/layer87-labs/relctl/internal/pkg/tools" + "github.com/layer87-labs/relctl/internal/pkg/uploadasset" "github.com/go-git/go-git/v5" - "github.com/google/go-github/v70/github" + "github.com/google/go-github/v86/github" "github.com/sirupsen/logrus" ) diff --git a/internal/app/awesome-ci/scm-portal/github/root.go b/internal/app/relctl/scm-portal/github/root.go similarity index 93% rename from internal/app/awesome-ci/scm-portal/github/root.go rename to internal/app/relctl/scm-portal/github/root.go index 53e8174..1108878 100644 --- a/internal/app/awesome-ci/scm-portal/github/root.go +++ b/internal/app/relctl/scm-portal/github/root.go @@ -5,9 +5,9 @@ import ( "fmt" "strings" - "github.com/fullstack-devops/awesome-ci/internal/pkg/tools" + "github.com/layer87-labs/relctl/internal/pkg/tools" - "github.com/google/go-github/v70/github" + "github.com/google/go-github/v86/github" "github.com/sirupsen/logrus" "golang.org/x/oauth2" ) diff --git a/internal/app/awesome-ci/scm-portal/issues.go b/internal/app/relctl/scm-portal/issues.go similarity index 68% rename from internal/app/awesome-ci/scm-portal/issues.go rename to internal/app/relctl/scm-portal/issues.go index c9fd3ac..82a36b1 100644 --- a/internal/app/awesome-ci/scm-portal/issues.go +++ b/internal/app/relctl/scm-portal/issues.go @@ -1,8 +1,8 @@ package scmportal import ( - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/scm-portal/github" - "github.com/fullstack-devops/awesome-ci/internal/pkg/semver" + "github.com/layer87-labs/relctl/internal/app/relctl/scm-portal/github" + "github.com/layer87-labs/relctl/internal/pkg/semver" ) func (lay SCMLayer) SearchIssuesForOverrides(number int) (nextVersion *string, patchLevel *semver.PatchLevel, err error) { diff --git a/internal/app/awesome-ci/scm-portal/layer.go b/internal/app/relctl/scm-portal/layer.go similarity index 68% rename from internal/app/awesome-ci/scm-portal/layer.go rename to internal/app/relctl/scm-portal/layer.go index a43ae0a..95282c8 100644 --- a/internal/app/awesome-ci/scm-portal/layer.go +++ b/internal/app/relctl/scm-portal/layer.go @@ -1,9 +1,9 @@ package scmportal import ( - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/ces" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/scm-portal/github" - "github.com/fullstack-devops/awesome-ci/internal/pkg/rcpersist" + "github.com/layer87-labs/relctl/internal/app/relctl/ces" + "github.com/layer87-labs/relctl/internal/app/relctl/scm-portal/github" + "github.com/layer87-labs/relctl/internal/pkg/rcpersist" ) func LoadSCMPortalLayer() (scmLayer *SCMLayer, err error) { diff --git a/internal/app/awesome-ci/scm-portal/models.go b/internal/app/relctl/scm-portal/models.go similarity index 86% rename from internal/app/awesome-ci/scm-portal/models.go rename to internal/app/relctl/scm-portal/models.go index 75840c5..6c6af6b 100644 --- a/internal/app/awesome-ci/scm-portal/models.go +++ b/internal/app/relctl/scm-portal/models.go @@ -3,8 +3,8 @@ package scmportal import ( "time" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/ces" - "github.com/fullstack-devops/awesome-ci/internal/pkg/semver" + "github.com/layer87-labs/relctl/internal/app/relctl/ces" + "github.com/layer87-labs/relctl/internal/pkg/semver" ) type SCMLayer struct { diff --git a/internal/app/awesome-ci/scm-portal/prmr_request.go b/internal/app/relctl/scm-portal/prmr_request.go similarity index 95% rename from internal/app/awesome-ci/scm-portal/prmr_request.go rename to internal/app/relctl/scm-portal/prmr_request.go index e3e596d..c1b620e 100644 --- a/internal/app/awesome-ci/scm-portal/prmr_request.go +++ b/internal/app/relctl/scm-portal/prmr_request.go @@ -1,8 +1,8 @@ package scmportal import ( - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/scm-portal/github" - "github.com/fullstack-devops/awesome-ci/internal/pkg/semver" + "github.com/layer87-labs/relctl/internal/app/relctl/scm-portal/github" + "github.com/layer87-labs/relctl/internal/pkg/semver" log "github.com/sirupsen/logrus" ) diff --git a/internal/app/awesome-ci/scm-portal/release.go b/internal/app/relctl/scm-portal/release.go similarity index 90% rename from internal/app/awesome-ci/scm-portal/release.go rename to internal/app/relctl/scm-portal/release.go index ab50e66..352dc5b 100644 --- a/internal/app/awesome-ci/scm-portal/release.go +++ b/internal/app/relctl/scm-portal/release.go @@ -1,8 +1,8 @@ package scmportal import ( - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/scm-portal/github" - "github.com/fullstack-devops/awesome-ci/internal/pkg/uploadasset" + "github.com/layer87-labs/relctl/internal/app/relctl/scm-portal/github" + "github.com/layer87-labs/relctl/internal/pkg/uploadasset" ) func (lay SCMLayer) GetLatestReleaseVersion() (release *Release, err error) { diff --git a/internal/app/awesome-ci/service/pullrequest.go b/internal/app/relctl/service/pullrequest.go similarity index 60% rename from internal/app/awesome-ci/service/pullrequest.go rename to internal/app/relctl/service/pullrequest.go index 5104d75..e02bf1f 100644 --- a/internal/app/awesome-ci/service/pullrequest.go +++ b/internal/app/relctl/service/pullrequest.go @@ -4,8 +4,8 @@ import ( "fmt" "strconv" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/ces" - scmportal "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/scm-portal" + "github.com/layer87-labs/relctl/internal/app/relctl/ces" + scmportal "github.com/layer87-labs/relctl/internal/app/relctl/scm-portal" log "github.com/sirupsen/logrus" ) @@ -43,17 +43,17 @@ func PrintPRInfos(number int, mergeCommitSha string, formatOut string) { func prInfosToEnv(scmLayer *scmportal.SCMLayer, prInfos *scmportal.PrMrRequestInfos) error { var envVars = []ces.KeyValue{ - {Name: "ACI_PR", Value: strconv.Itoa(prInfos.Number)}, - {Name: "ACI_PR_SHA", Value: prInfos.Sha}, - {Name: "ACI_PR_SHA_SHORT", Value: prInfos.ShaShort}, - {Name: "ACI_PR_BRANCH", Value: prInfos.BranchName}, - {Name: "ACI_MERGE_COMMIT_SHA", Value: prInfos.MergeCommitSha}, - {Name: "ACI_OWNER", Value: prInfos.Owner}, - {Name: "ACI_REPO", Value: prInfos.Repo}, - {Name: "ACI_PATCH_LEVEL", Value: string(prInfos.PatchLevel)}, - {Name: "ACI_VERSION", Value: prInfos.NextVersion}, - {Name: "ACI_NEXT_VERSION", Value: prInfos.NextVersion}, - {Name: "ACI_LATEST_VERSION", Value: prInfos.LatestVersion}, + {Name: "RELCTL_PR", Value: strconv.Itoa(prInfos.Number)}, + {Name: "RELCTL_PR_SHA", Value: prInfos.Sha}, + {Name: "RELCTL_PR_SHA_SHORT", Value: prInfos.ShaShort}, + {Name: "RELCTL_PR_BRANCH", Value: prInfos.BranchName}, + {Name: "RELCTL_MERGE_COMMIT_SHA", Value: prInfos.MergeCommitSha}, + {Name: "RELCTL_OWNER", Value: prInfos.Owner}, + {Name: "RELCTL_REPO", Value: prInfos.Repo}, + {Name: "RELCTL_PATCH_LEVEL", Value: string(prInfos.PatchLevel)}, + {Name: "RELCTL_VERSION", Value: prInfos.NextVersion}, + {Name: "RELCTL_NEXT_VERSION", Value: prInfos.NextVersion}, + {Name: "RELCTL_LATEST_VERSION", Value: prInfos.LatestVersion}, } if err := scmLayer.CES.ExportAsEnv(envVars); err != nil { diff --git a/internal/app/awesome-ci/service/release.go b/internal/app/relctl/service/release.go similarity index 90% rename from internal/app/awesome-ci/service/release.go rename to internal/app/relctl/service/release.go index 2370fd0..8661d96 100644 --- a/internal/app/awesome-ci/service/release.go +++ b/internal/app/relctl/service/release.go @@ -6,11 +6,11 @@ import ( "regexp" "strconv" - "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/ces" - scmportal "github.com/fullstack-devops/awesome-ci/internal/app/awesome-ci/scm-portal" - "github.com/fullstack-devops/awesome-ci/internal/pkg/semver" - "github.com/fullstack-devops/awesome-ci/internal/pkg/tools" - "github.com/fullstack-devops/awesome-ci/internal/pkg/uploadasset" + "github.com/layer87-labs/relctl/internal/app/relctl/ces" + scmportal "github.com/layer87-labs/relctl/internal/app/relctl/scm-portal" + "github.com/layer87-labs/relctl/internal/pkg/semver" + "github.com/layer87-labs/relctl/internal/pkg/tools" + "github.com/layer87-labs/relctl/internal/pkg/uploadasset" log "github.com/sirupsen/logrus" ) @@ -56,7 +56,7 @@ func ReleaseCreate(args *ReleaseArgs) { fmt.Printf("Create release successful. ID: %d", createdRelease.ID) var envVars = []ces.KeyValue{ - {Name: "ACI_RELEASE_ID", Value: fmt.Sprintf("%d", createdRelease.ID)}, + {Name: "RELCTL_RELEASE_ID", Value: fmt.Sprintf("%d", createdRelease.ID)}, } if err := scmLayer.CES.ExportAsEnv(envVars); err != nil { @@ -109,7 +109,7 @@ func ReleasePublish(args *ReleaseArgs, releaseID int64, assetsStr []string) { /* var envVars []ces.KeyValue for i, ra := range relAssets { // export Download URL to env. See: #53 - envVars = append(envVars, ces.KeyValue{Name: fmt.Sprintf("ACI_ARTIFACT_%d_URL", i+1), Value: *ra.BrowserDownloadURL}) + envVars = append(envVars, ces.KeyValue{Name: fmt.Sprintf("RELCTL_ARTIFACT_%d_URL", i+1), Value: *ra.BrowserDownloadURL}) } if len(envVars) > 0 { diff --git a/internal/pkg/envvars/handler.go b/internal/pkg/envvars/handler.go index 4ae4b5b..da03ba5 100644 --- a/internal/pkg/envvars/handler.go +++ b/internal/pkg/envvars/handler.go @@ -36,7 +36,7 @@ func (envVars *EnvVariables) CloseEnvFile(file string) (err error) { defer envFile.Close() - envFile.Truncate(0) + _ = envFile.Truncate(0) wirteEnvs := "" for _, env := range envVars.Envs { wirteEnvs = wirteEnvs + fmt.Sprintf("%s\n", env.ToString()) @@ -50,17 +50,13 @@ func (envVars *EnvVariables) CloseEnvFile(file string) (err error) { } func (envVars *EnvVariables) Set(name string, value string) { - var envFound = false for _, env := range envVars.Envs { if *env.Name == name { *env.Value = value - envFound = true return } } - if !envFound { - envVars.Envs = append(envVars.Envs, EnvVariable{Name: &name, Value: &value}) - } + envVars.Envs = append(envVars.Envs, EnvVariable{Name: &name, Value: &value}) } func (envVars *EnvVariables) Get(name string) (envVariable *EnvVariable) { diff --git a/internal/pkg/parsejy/parse_test.go b/internal/pkg/parsejy/parse_test.go index 3c2f0b5..b53ee25 100644 --- a/internal/pkg/parsejy/parse_test.go +++ b/internal/pkg/parsejy/parse_test.go @@ -4,7 +4,7 @@ import ( "bytes" "testing" - "github.com/fullstack-devops/awesome-ci/internal/pkg/parsejy" + "github.com/layer87-labs/relctl/internal/pkg/parsejy" ) func TestParse(t *testing.T) { diff --git a/internal/pkg/rcpersist/rc_file.go b/internal/pkg/rcpersist/rc_file.go index 7afc4b4..2ccd470 100644 --- a/internal/pkg/rcpersist/rc_file.go +++ b/internal/pkg/rcpersist/rc_file.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "github.com/fullstack-devops/awesome-ci/internal/pkg/tools" + "github.com/layer87-labs/relctl/internal/pkg/tools" log "github.com/sirupsen/logrus" "gopkg.in/yaml.v2" @@ -91,7 +91,7 @@ func (rc *RcFile) UpdateCreds(server string, repo string, token string) error { func (rc *RcFile) Save() (err error) { rc.ConnectCreds.TokenPlain = nil - os.Truncate(rcFileName, 0) + _ = os.Truncate(rcFileName, 0) yamlData, err := yaml.Marshal(rc) if err != nil { diff --git a/internal/pkg/rcpersist/util.go b/internal/pkg/rcpersist/util.go index 8a3bf19..5ebdd51 100644 --- a/internal/pkg/rcpersist/util.go +++ b/internal/pkg/rcpersist/util.go @@ -4,7 +4,7 @@ import ( "bufio" "os" - "github.com/fullstack-devops/awesome-ci/internal/pkg/tools" + "github.com/layer87-labs/relctl/internal/pkg/tools" ) func checkGitIgnore() (err error) { diff --git a/internal/pkg/semver/semver.go b/internal/pkg/semver/semver.go index c3cdb00..3e4acf1 100644 --- a/internal/pkg/semver/semver.go +++ b/internal/pkg/semver/semver.go @@ -30,8 +30,6 @@ var ( // - incresedVersion: the increased version string. // - err: an error if the patch level is invalid or if there is an error increasing the version. func IncreaseVersion(patchLevel PatchLevel, version string) (incresedVersion string, err error) { - incresedVersion = version - semVer, err := semver.NewVersion(version) if err != nil { return "", err @@ -51,8 +49,6 @@ func IncreaseVersion(patchLevel PatchLevel, version string) (incresedVersion str } func ParsePatchLevelFormBranch(branchName string) (patchLevel PatchLevel, err error) { - patchLevel = "bugfix" // default patch level - if strings.Index(branchName, "/") > 0 { return ParsePatchLevel(branchName[:strings.Index(branchName, "/")]) } else { diff --git a/internal/pkg/semver/semver_test.go b/internal/pkg/semver/semver_test.go index 683e97f..9bc2e7b 100644 --- a/internal/pkg/semver/semver_test.go +++ b/internal/pkg/semver/semver_test.go @@ -3,7 +3,7 @@ package semver_test import ( "testing" - "github.com/fullstack-devops/awesome-ci/internal/pkg/semver" + "github.com/layer87-labs/relctl/internal/pkg/semver" "github.com/stretchr/testify/require" ) diff --git a/internal/pkg/tools/tools.go b/internal/pkg/tools/tools.go index b820550..9641ab0 100644 --- a/internal/pkg/tools/tools.go +++ b/internal/pkg/tools/tools.go @@ -54,7 +54,7 @@ func GetGitTagsUpToHead(gitRepo *git.Repository) (tags []*semver.Version, err er Order: git.LogOrderCommitterTime, }) - tagIter.ForEach(func(r *object.Commit) error { + _ = tagIter.ForEach(func(r *object.Commit) error { if tagNames, exists := commitToTag[r.Hash.String()]; exists { @@ -83,7 +83,7 @@ func GetGitTagMaps(gitRepo *git.Repository) (commitToTagMap map[string][]string, return nil, nil, err } - tags.ForEach(func(r *plumbing.Reference) error { + _ = tags.ForEach(func(r *plumbing.Reference) error { tagList, exists := commitToTagMap[r.Hash().String()] diff --git a/internal/pkg/uploadasset/asset.go b/internal/pkg/uploadasset/asset.go index 3fa575c..6818788 100644 --- a/internal/pkg/uploadasset/asset.go +++ b/internal/pkg/uploadasset/asset.go @@ -57,7 +57,7 @@ func GetAsset(assetLocation string) (asset UploadAsset, err error) { } func createZipFile(name string) (asset UploadAsset, err error) { - tmpFile, err := os.CreateTemp("awesome-ci", "upload-asset-*") + tmpFile, err := os.CreateTemp("relctl", "upload-asset-*") if err != nil { return UploadAsset{}, err } @@ -102,7 +102,7 @@ func createZipFile(name string) (asset UploadAsset, err error) { } func createTgzFile(name string) (asset UploadAsset, err error) { - tmpFile, err := os.CreateTemp("awesome-ci", "upload-asset-*") + tmpFile, err := os.CreateTemp("relctl", "upload-asset-*") if err != nil { return UploadAsset{}, err } diff --git a/scripts/release-template.md b/scripts/release-template.md index bea74c5..82bd899 100644 --- a/scripts/release-template.md +++ b/scripts/release-template.md @@ -1,5 +1,5 @@ -## Awesome-CI +## relctl This project is still in the **beta** phase. -But don't be shy and use this tool in advance. If you find bugs or have improvements, please feel free to open an [issue](https://github.com/fullstack-devops/awesome-ci/issues/new/choose) :rocket: +But don't be shy and use this tool in advance. If you find bugs or have improvements, please feel free to open an [issue](https://github.com/layer87-labs/relctl/issues/new/choose) :rocket: diff --git a/tests/testdata/release.md b/tests/testdata/release.md index 91e5f20..1c96a02 100644 --- a/tests/testdata/release.md +++ b/tests/testdata/release.md @@ -1,5 +1,5 @@ -## Awesome-CI +## relctl This is a great readme to appear as the body of the release. -The great thing about it is that the asset section is self-generated by awesome-ci. However, only if an asset is also uploaded :rocket: \ No newline at end of file +The great thing about it is that the asset section is self-generated by relctl. However, only if an asset is also uploaded :rocket: \ No newline at end of file