Skip to content

Commit

Permalink
ci: set up build tooling (#2)
Browse files Browse the repository at this point in the history
Adds:
- the spotless formatter
- a stub test
- Makefile
- and GitHub workflows to build and test
  • Loading branch information
malandis authored Aug 23, 2024
1 parent c26ff22 commit 4faf102
Show file tree
Hide file tree
Showing 9 changed files with 255 additions and 6 deletions.
69 changes: 69 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
## # 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: '38 23 * * 2'
##
## jobs:
## analyze:
## name: Analyze
## runs-on: ubuntu-latest
##
## env:
## MOMENTO_API_KEY: ${{ secrets.ALPHA_TEST_AUTH_TOKEN }}
##
## permissions:
## actions: read
## contents: read
## security-events: write
##
## strategy:
## fail-fast: false
## matrix:
## language: [ 'java' ]
##
## steps:
## - uses: actions/checkout@v3
##
## # 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.
##
## # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
## # queries: security-extended,security-and-quality
##
##
## - name: Set up JDK 17
## uses: actions/setup-java@v3
## with:
## java-version: 17
## distribution: 'corretto'
##
## - name: Build project
## run: make build
##
## - name: Perform CodeQL Analysis
## uses: github/codeql-action/analyze@v2
## with:
## category: "/language:${{matrix.language}}"
22 changes: 22 additions & 0 deletions .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## # Dependency Review Action
## #
## # This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable
## # versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required,
## # PRs introducing known-vulnerable packages will be blocked from merging.
## #
## # Source repository: https://github.com/actions/dependency-review-action
## # Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
## name: 'Dependency Review'
## on: [pull_request]
##
## permissions:
## contents: read
##
## jobs:
## dependency-review:
## runs-on: ubuntu-latest
## steps:
## - name: 'Checkout Repository'
## uses: actions/checkout@v3
## - name: 'Dependency Review'
## uses: actions/dependency-review-action@v2
59 changes: 59 additions & 0 deletions .github/workflows/on-pull-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: On pull request

on:
pull_request:
branches: [ main ]

jobs:
build:
runs-on: ubuntu-latest
env:
MOMENTO_API_KEY: ${{ secrets.ALPHA_TEST_AUTH_TOKEN }}

steps:
- name: Checkout project
uses: actions/checkout@v3

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 17
distribution: 'corretto'

# - name: Verify README generation
# uses: momentohq/standards-and-practices/github-actions/oss-readme-template@gh-actions-v2
# with:
# project_status: official
# project_stability: stable
# project_type: sdk
# sdk_language: Java
# dev_docs_slug: java
#
# - name: Verify examples README generation
# uses: momentohq/standards-and-practices/github-actions/oss-readme-template@gh-actions-v2
# with:
# project_status: official
# project_stability: beta
# project_type: other
# template_file: ./examples/README.template.md
# output_file: ./examples/README.md
#
# - name: Verify Storage examples README generation
# uses: momentohq/standards-and-practices/github-actions/oss-readme-template@gh-actions-v2
# with:
# project_status: official
# project_stability: beta
# project_type: other
# template_file: ./examples/storage/README.template.md
# output_file: ./examples/storage/README.md

- name: Commitlint and Other Shared Build Steps
uses: momentohq/standards-and-practices/github-actions/shared-build@gh-actions-v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Build project
run: make build

- name: Run tests
run: make test
41 changes: 41 additions & 0 deletions .github/workflows/on-push-to-main-branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: On push to main branch

on:
push:
branches: [main]

jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v3
with:
token: ${{ secrets.MOMENTO_MACHINE_USER_GITHUB_TOKEN }}

# - name: Generate README
# uses: momentohq/standards-and-practices/github-actions/generate-and-commit-oss-readme@gh-actions-v2
# with:
# project_status: official
# project_stability: stable
# project_type: sdk
# sdk_language: Java
# dev_docs_slug: java
#
# - name: Verify Storage examples README generation
# uses: momentohq/standards-and-practices/github-actions/generate-and-commit-oss-readme@gh-actions-v2
# with:
# project_status: official
# project_stability: beta
# project_type: other
# template_file: ./examples/storage/README.template.md
# output_file: ./examples/storage/README.md
#
# - name: Verify examples README generation
# uses: momentohq/standards-and-practices/github-actions/generate-and-commit-oss-readme@gh-actions-v2
# with:
# project_status: official
# project_stability: beta
# project_type: other
# template_file: ./examples/README.template.md
# output_file: ./examples/README.md
31 changes: 31 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
.PHONY: all clean build test format lint precommit help


all: precommit

## Clean the project
clean:
./gradlew clean

## Build the project
build:
./gradlew build

## Run all the tests
test:
./gradlew test

## Format the code
format:
./gradlew spotlessApply

## Lint the code
lint:
./gradlew spotlessCheck

## Run the precommit checks
precommit: format lint build test

# See <https://gist.github.com/klmr/575726c7e05d8780505a> for explanation.
help:
@echo "$$(tput bold)Available rules:$$(tput sgr0)";echo;sed -ne"/^## /{h;s/.*//;:d" -e"H;n;s/^## //;td" -e"s/:.*//;G;s/\\n## /---/;s/\\n/ /g;p;}" ${MAKEFILE_LIST}|LC_ALL='C' sort -f|awk -F --- -v n=$$(tput cols) -v i=19 -v a="$$(tput setaf 6)" -v z="$$(tput sgr0)" '{printf"%s%*s%s ",a,-i,$$1,z;m=split($$2,w," ");l=n-i;for(j=1;j<=m;j++){l-=length(w[j])+1;if(l<= 0){l=n-i-length(w[j])-1;printf"\n%*s ",-i," ";}printf"%s ",w[j];}printf"\n";}'|more $(shell test $(shell uname) == Darwin && echo '-Xr')
13 changes: 11 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
plugins {
id("java")
id("com.diffplug.spotless") version "5.15.1"
}

// TODO replace with etsablished group id
group = "momento.lettuce"
version = "1.0-SNAPSHOT"
version = "0.1.0"

repositories {
mavenCentral()
Expand All @@ -16,4 +18,11 @@ dependencies {

tasks.test {
useJUnitPlatform()
}
}

spotless {
java {
removeUnusedImports()
googleJavaFormat("1.11.0")
}
}
8 changes: 8 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Needed for https://github.com/diffplug/spotless/issues/834
# Google's Java Fromat has compatibility issues with JDK 16 -
# https://github.com/google/google-java-format#jdk-16
org.gradle.jvmargs=--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
8 changes: 4 additions & 4 deletions src/main/java/momento/lettuce/Main.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package momento.lettuce;

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
10 changes: 10 additions & 0 deletions src/test/java/TestStub.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.Test;

public class TestStub {
@Test
public void testStub() {
assertEquals(1, 1);
}
}

0 comments on commit 4faf102

Please sign in to comment.