Skip to content

Commit 68ef39c

Browse files
authored
Merge pull request #62 from bitrise-io/ACI-3019
Add gradle verification xml to generated release.
2 parents a1d877f + 6a77b6c commit 68ef39c

17 files changed

+1861
-22
lines changed

.goreleaser.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ release:
1010
owner: bitrise-io
1111
name: bitrise-build-cache-cli
1212
draft: true
13+
footer: |
14+
### Gradle verification
15+
For reference, the verification metadata is available as an attached assset.
16+
extra_files:
17+
- glob: ./gradle_verification_sample/gradle/verification-metadata.xml
18+
1319

1420
before:
1521
hooks:

bitrise.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,33 @@ workflows:
3838
set -ex
3939
4040
GOBIN=/usr/local/bin/ go install github.com/goreleaser/goreleaser/v2@latest
41+
- script:
42+
title: Generate verification
43+
inputs:
44+
- content: |
45+
#!/bin/bash
46+
set -ex
47+
48+
# Backup $HOME/.gradle/init.d/bitrise-build-cache.init.gradle.kts
49+
GRADLE_INIT_PATH=$HOME/.gradle/init.d/bitrise-build-cache.init.gradle.kts
50+
if [[ -f "$GRADLE_INIT_PATH" ]]; then
51+
mv $GRADLE_INIT_PATH $GRADLE_INIT_PATH.backup
52+
fi
53+
54+
go build -o /tmp/bin/bitrise-build-cache-cli
55+
56+
SAMPLE_PATH=$(realpath ./gradle_verification_sample)
57+
58+
# add plugin with CLI
59+
cd "$SAMPLE_PATH"
60+
/tmp/bin/bitrise-build-cache-cli add-gradle-deps
61+
62+
# generate xml
63+
rm -f "$SAMPLE_PATH/gradle/verification-metadata.xml"
64+
./gradlew --write-verification-metadata sha256 help
65+
66+
echo "Generated verification xml:"
67+
cat "$SAMPLE_PATH/gradle/verification-metadata.xml"
4168
- script:
4269
title: Goreleaser (create binaries + publish to GH)
4370
deps:
@@ -69,6 +96,7 @@ workflows:
6996
make lint
7097
- go-test@1: {}
7198
- deploy-to-bitrise-io@2: {}
99+
72100
e2e:
73101
steps:
74102
- activate-ssh-key@4:
@@ -86,3 +114,4 @@ workflows:
86114
- content: |-
87115
set -ex
88116
bitrise run --config e2e/bitrise.yml test_gradle_output_diagnostics
117+

cmd/addGradleDeps.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package cmd
2+
3+
import (
4+
"fmt"
5+
"os"
6+
7+
"github.com/bitrise-io/bitrise-build-cache-cli/internal/config/common"
8+
gradleconfig "github.com/bitrise-io/bitrise-build-cache-cli/internal/config/gradle"
9+
"github.com/bitrise-io/go-utils/v2/log"
10+
"github.com/bitrise-io/go-utils/v2/pathutil"
11+
"github.com/spf13/cobra"
12+
)
13+
14+
// addGradleDeps represents the gradle command
15+
var addGradleDeps = &cobra.Command{ //nolint:gochecknoglobals
16+
Use: "add-gradle-deps",
17+
Short: "Add Bitrise Build Cache plugins to the project (but do not enable it)",
18+
Long: `Add Bitrise Build Cache plugins to the project (but do not enable it)
19+
This command will:
20+
21+
- Create a ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts file with the necessary configs. This file will be overwritten.
22+
`,
23+
SilenceUsage: true,
24+
RunE: func(_ *cobra.Command, _ []string) error {
25+
//
26+
logger := log.NewLogger()
27+
logger.EnableDebugLog(isDebugLogMode)
28+
logger.TInfof("Add Bitrise Build Cache for Gradle plugins")
29+
//
30+
gradleHome, err := pathutil.NewPathModifier().AbsPath(gradleHomeNonExpanded)
31+
if err != nil {
32+
return fmt.Errorf("expand Gradle home path (%s), error: %w", gradleHome, err)
33+
}
34+
35+
//
36+
if err := addGradlePluginsFn(logger, gradleHome, os.Getenv); err != nil {
37+
return fmt.Errorf("enable Gradle Build Cache: %w", err)
38+
}
39+
40+
logger.TInfof("✅ Bitrise Build Cache plugins added")
41+
42+
return nil
43+
},
44+
}
45+
46+
func init() {
47+
rootCmd.AddCommand(addGradleDeps)
48+
}
49+
50+
func addGradlePluginsFn(logger log.Logger, gradleHomePath string, envProvider func(string) string) error {
51+
logger.Infof("(i) Checking parameters")
52+
53+
// Optional configs
54+
// EndpointURL
55+
endpointURL := common.SelectEndpointURL(paramRemoteCacheEndpoint, envProvider)
56+
logger.Infof("(i) Build Cache Endpoint URL: %s", endpointURL)
57+
logger.Infof("(i) Debug mode and verbose logs: %t", isDebugLogMode)
58+
59+
// Metadata
60+
cacheConfigMetadata := common.NewCacheConfigMetadata(os.Getenv)
61+
logger.Infof("(i) Cache Config Metadata: %+v", cacheConfigMetadata)
62+
63+
authToken := "placeholder-token"
64+
prefs := gradleconfig.Preferences{
65+
IsDependencyOnly: true,
66+
IsPushEnabled: false,
67+
CacheLevelValidation: gradleconfig.CacheValidationLevelNone,
68+
IsAnalyticsEnabled: true,
69+
IsDebugEnabled: isDebugLogMode,
70+
}
71+
if err := writeGradleInit(logger, gradleHomePath, endpointURL, authToken, cacheConfigMetadata, prefs); err != nil {
72+
return err
73+
}
74+
75+
return nil
76+
}

cmd/enableForGradle.go

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,32 @@ func init() {
7171
enableForGradleCmd.Flags().StringVar(&paramRemoteCacheEndpoint, "remote-cache-endpoint", "", "Remote cache endpoint URL")
7272
}
7373

74+
func writeGradleInit(logger log.Logger, gradleHomePath string, endpointURL string, authToken string, cacheConfigMetadata common.CacheConfigMetadata, prefs gradleconfig.Preferences) error {
75+
logger.Infof("(i) Ensure ~/.gradle and ~/.gradle/init.d directories exist")
76+
gradleInitDPath := filepath.Join(gradleHomePath, "init.d")
77+
err := os.MkdirAll(gradleInitDPath, 0755) //nolint:gomnd,mnd
78+
if err != nil {
79+
return fmt.Errorf("ensure ~/.gradle/init.d exists: %w", err)
80+
}
81+
82+
logger.Infof("(i) Generate ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts")
83+
initGradleContent, err := gradleconfig.GenerateInitGradle(endpointURL, authToken, prefs, cacheConfigMetadata)
84+
if err != nil {
85+
return fmt.Errorf("generate bitrise-build-cache.init.gradle.kts: %w", err)
86+
}
87+
88+
logger.Infof("(i) Write ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts")
89+
{
90+
initGradlePath := filepath.Join(gradleInitDPath, "bitrise-build-cache.init.gradle.kts")
91+
err = os.WriteFile(initGradlePath, []byte(initGradleContent), 0755) //nolint:gosec,gomnd,mnd
92+
if err != nil {
93+
return fmt.Errorf("write bitrise-build-cache.init.gradle.kts to %s, error: %w", initGradlePath, err)
94+
}
95+
}
96+
97+
return nil
98+
}
99+
74100
func enableForGradleCmdFn(logger log.Logger, gradleHomePath string, envProvider func(string) string) error {
75101
logger.Infof("(i) Checking parameters")
76102

@@ -102,32 +128,15 @@ func enableForGradleCmdFn(logger log.Logger, gradleHomePath string, envProvider
102128
cacheConfigMetadata := common.NewCacheConfigMetadata(os.Getenv)
103129
logger.Infof("(i) Cache Config Metadata: %+v", cacheConfigMetadata)
104130

105-
logger.Infof("(i) Ensure ~/.gradle and ~/.gradle/init.d directories exist")
106-
gradleInitDPath := filepath.Join(gradleHomePath, "init.d")
107-
err = os.MkdirAll(gradleInitDPath, 0755) //nolint:gomnd,mnd
108-
if err != nil {
109-
return fmt.Errorf("ensure ~/.gradle/init.d exists: %w", err)
110-
}
111-
112-
logger.Infof("(i) Generate ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts")
113131
prefs := gradleconfig.Preferences{
132+
IsDependencyOnly: false,
114133
IsPushEnabled: paramIsPushEnabled,
115134
CacheLevelValidation: gradleconfig.CacheValidationLevel(paramValidationLevel),
116135
IsAnalyticsEnabled: paramIsGradleMetricsEnabled,
117136
IsDebugEnabled: isDebugLogMode,
118137
}
119-
initGradleContent, err := gradleconfig.GenerateInitGradle(endpointURL, authToken, prefs, cacheConfigMetadata)
120-
if err != nil {
121-
return fmt.Errorf("generate bitrise-build-cache.init.gradle.kts: %w", err)
122-
}
123-
124-
logger.Infof("(i) Write ~/.gradle/init.d/bitrise-build-cache.init.gradle.kts")
125-
{
126-
initGradlePath := filepath.Join(gradleInitDPath, "bitrise-build-cache.init.gradle.kts")
127-
err = os.WriteFile(initGradlePath, []byte(initGradleContent), 0755) //nolint:gosec,gomnd,mnd
128-
if err != nil {
129-
return fmt.Errorf("write bitrise-build-cache.init.gradle.kts to %s, error: %w", initGradlePath, err)
130-
}
138+
if err := writeGradleInit(logger, gradleHomePath, endpointURL, authToken, cacheConfigMetadata, prefs); err != nil {
139+
return err
131140
}
132141

133142
logger.Infof("(i) Write ~/.gradle/gradle.properties")
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#
2+
# https://help.github.com/articles/dealing-with-line-endings/
3+
#
4+
# Linux start script should use lf
5+
/gradlew text eol=lf
6+
7+
# These are Windows script files and should use crlf
8+
*.bat text eol=crlf
9+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Ignore Gradle project-specific cache directory
2+
.gradle
3+
4+
# Ignore Gradle build output directory
5+
build
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/*
2+
* This file was generated by the Gradle 'init' task.
3+
*
4+
* This is a general purpose Gradle build.
5+
* To learn more about Gradle by exploring our Samples at https://docs.gradle.org/8.7/samples
6+
*/
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# This file was generated by the Gradle 'init' task.
2+
# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format

0 commit comments

Comments
 (0)