diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 72407805..ded0f7f4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,6 +38,7 @@ jobs: echo "downloading binaries to $(pwd)/dist" gsutil cp -r gs://loki-build-artifacts/${{ needs.shouldRelease.outputs.sha }}/dist . shell: "bash" + working-directory: "release" - id: "release" name: "create release" run: | @@ -49,7 +50,7 @@ jobs: --target-branch "${{ needs.shouldRelease.outputs.branch }}" \ --token="${{ secrets.GH_TOKEN }}" shell: "bash" - working-directory: "release" + working-directory: "lib" - env: GH_TOKEN: "${{ secrets.GH_TOKEN }}" id: "upload" @@ -58,6 +59,7 @@ jobs: gh release upload ${{ needs.shouldRelease.outputs.name }} dist/* gh release edit ${{ needs.shouldRelease.outputs.name }} --draft=false shell: "bash" + working-directory: "release" publishImages: needs: - "createRelease" diff --git a/main.jsonnet b/main.jsonnet index 987beeb6..4c68cde1 100644 --- a/main.jsonnet +++ b/main.jsonnet @@ -1,8 +1,8 @@ { - common: import './workflows/lib/common.libsonnet', - build: import './workflows/lib/build.libsonnet', - release: import './workflows/lib/release.libsonnet', - validate: import './workflows/lib/validate.libsonnet', + common: import './workflows/common.libsonnet', + build: import './workflows/build.libsonnet', + release: import './workflows/release.libsonnet', + validate: import './workflows/validate.libsonnet', releasePRWorkflow: function( imageJobs={}, skipValidation=false, diff --git a/workflows/lib/build.libsonnet b/workflows/build.libsonnet similarity index 100% rename from workflows/lib/build.libsonnet rename to workflows/build.libsonnet diff --git a/workflows/lib/common.libsonnet b/workflows/common.libsonnet similarity index 100% rename from workflows/lib/common.libsonnet rename to workflows/common.libsonnet diff --git a/workflows/release-pr/main.jsonnet b/workflows/release-pr/main.jsonnet deleted file mode 100644 index b36759c1..00000000 --- a/workflows/release-pr/main.jsonnet +++ /dev/null @@ -1,89 +0,0 @@ -local common = import '../lib/common.libsonnet'; -local job = common.job; -local step = common.step; -local alwaysGreen = common.alwaysGreen; - -local build = import '../lib/build.libsonnet'; -local release = import '../lib/release.libsonnet'; -local validate = import '../lib/validate.libsonnet'; - -std.manifestYamlDoc({ - name: 'create release PR', - on: { - workflow_call: { - inputs: { - release_repo: { - description: 'repo to make release PRs against', - default: 'grafana/loki', - required: false, - type: 'string', - }, - skip_validation: { - description: 'skip validation steps', - default: false, - required: false, - type: 'boolean', - }, - versioning_strategy: { - description: 'release please versioning strategy to use', - default: 'always-bump-patch', - required: false, - type: 'string', - }, - image_prefix: { - description: 'prefix for images', - default: 'grafana', - required: false, - type: 'string', - }, - }, - secrets: { - GCS_SERVICE_ACCOUNT_KEY: { - required: true, - }, - GH_TOKEN: { - required: true, - }, - }, - }, - }, - permissions: { - contents: 'write', - 'pull-requests': 'write', - }, - concurrency: { - group: 'create-release-pr-${{ github.sha }}', - }, - jobs: validate { - local validationSteps = ['test', 'lint', 'check'], - dist: build.dist + job.withNeeds(validationSteps), - - //always build this image, as we have fake for it in the release repo - 'loki-image': build.image('loki', 'cmd/loki', condition='true') + job.withNeeds(validationSteps), - - fluentd: build.image('fluentd', 'clients/cmd/fluentd', platform=['linux/amd64']) + job.withNeeds(validationSteps), - 'fluent-bit': build.image('fluent-bit', 'clients/cmd/fluent-bit', platform=['linux/amd64']) + job.withNeeds(validationSteps), - logstash: build.image('logstash', 'clients/cmd/logstash', platform=['linux/amd64']) + job.withNeeds(validationSteps), - logcli: build.image('logcli', 'cmd/logcli') + job.withNeeds(validationSteps), - 'loki-canary': build.image('loki-canary', 'cmd/loki-canary') + job.withNeeds(validationSteps), - 'loki-canary-boringcrypto': build.image('loki-canary-boringcrypto', 'cmd/loki-canary-boringcrypto') + job.withNeeds(validationSteps), - 'loki-operator': build.image('loki-operator', 'operator', context='release/operator', platform=['linux/amd64']) + job.withNeeds(validationSteps), - promtail: build.image('promtail', 'clients/cmd/promtail') + job.withNeeds(validationSteps), - querytee: build.image('querytee', 'cmd/querytee', platform=['linux/amd64']) + job.withNeeds(validationSteps), - - local buildSteps = [ - 'dist', - 'fluentd', - 'fluent-bit', - 'logstash', - 'logcli', - 'loki-canary', - 'loki-canary-boringcrypto', - 'loki-image', - 'loki-operator', - 'promtail', - 'querytee', - ], - 'create-release-pr': release.createReleasePR + job.withNeeds(buildSteps), - }, -}, false, false) diff --git a/workflows/lib/release.libsonnet b/workflows/release.libsonnet similarity index 97% rename from workflows/lib/release.libsonnet rename to workflows/release.libsonnet index 9586ef14..84637adf 100644 --- a/workflows/lib/release.libsonnet +++ b/workflows/release.libsonnet @@ -74,13 +74,13 @@ local pullRequestFooter = 'Merging this PR will release the [artifacts](https:// // exits with code 1 if the url does not match // meaning there are no artifacts for that sha // we need to handle this if we're going to run this pipeline on every merge to main - step.new('download binaries') + releaseStep('download binaries') + step.withRun(||| echo "downloading binaries to $(pwd)/dist" gsutil cp -r gs://loki-build-artifacts/${{ needs.shouldRelease.outputs.sha }}/dist . |||), - releaseStep('create release') + releaseLibStep('create release') + step.withId('release') + step.withRun(||| npm install @@ -92,7 +92,7 @@ local pullRequestFooter = 'Merging this PR will release the [artifacts](https:// --token="${{ secrets.GH_TOKEN }}" |||), - step.new('upload artifacts') + releaseStep('upload artifacts') + step.withId('upload') + step.withEnv({ GH_TOKEN: '${{ secrets.GH_TOKEN }}', diff --git a/workflows/release/main.jsonnet b/workflows/release/main.jsonnet deleted file mode 100644 index 9c98321e..00000000 --- a/workflows/release/main.jsonnet +++ /dev/null @@ -1,56 +0,0 @@ -local common = import '../lib/common.libsonnet'; -local job = common.job; -local step = common.step; -local alwaysGreen = common.alwaysGreen; - -local release = import '../lib/release.libsonnet'; - -std.manifestYamlDoc({ - name: 'create release', - on: { - workflow_call: { - inputs: { - release_repo: { - description: 'repo to make release in', - default: 'grafana/loki', - required: false, - type: 'string', - }, - docker_username: { - description: 'username to login to docker with', - required: true, - type: 'string', - }, - image_prefix: { - description: 'prefix for images', - default: 'grafana', - required: false, - type: 'string', - }, - }, - secrets: { - GCS_SERVICE_ACCOUNT_KEY: { - required: true, - }, - GH_TOKEN: { - required: true, - }, - DOCKER_PASSWORD: { - required: true, - }, - }, - }, - }, - permissions: { - contents: 'write', - 'pull-requests': 'write', - }, - concurrency: { - group: 'create-release-${{ github.sha }}', - }, - jobs: { - shouldRelease: release.shouldRelease, - createRelease: release.createRelease, - publishImages: release.publishImages, - }, -}, false, false) diff --git a/workflows/lib/validate.libsonnet b/workflows/validate.libsonnet similarity index 100% rename from workflows/lib/validate.libsonnet rename to workflows/validate.libsonnet