Skip to content

Commit a186b52

Browse files
chore(ci): GHA - container image and apt package build & push (spinnaker#1160)
to Google Artifact Registry see: spinnaker/rosco#841 Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
1 parent 7e77082 commit a186b52

File tree

3 files changed

+120
-9
lines changed

3 files changed

+120
-9
lines changed

.github/workflows/build.yml

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ on:
44
push:
55
branches:
66
- master
7-
- version-*
7+
- release-*
88

99
env:
1010
GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx2g -Xms2g
11+
CONTAINER_REGISTRY: us-docker.pkg.dev/spinnaker-community/docker
1112

1213
jobs:
1314
branch-build:
@@ -21,5 +22,44 @@ jobs:
2122
java-version: 11
2223
distribution: 'zulu'
2324
cache: 'gradle'
25+
- name: Extract repository name
26+
id: extract_repo_name
27+
run: echo ::set-output name=REPO::${GITHUB_REPOSITORY##*/}
2428
- name: Build
25-
run: ./gradlew build --stacktrace
29+
run: ./gradlew build --stacktrace ${{ steps.extract_repo_name.outputs.REPO }}-web:installDist
30+
- name: Get date
31+
id: get_date
32+
run: echo ::set-output name=DATETIME::$(date --utc +'%Y%m%d%H%M')
33+
- name: Login to GAR
34+
# Only run this on repositories in the 'spinnaker' org, not on forks.
35+
if: startsWith(github.repository, 'spinnaker/')
36+
uses: docker/login-action@v1
37+
# use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1
38+
with:
39+
registry: us-docker.pkg.dev
40+
username: _json_key
41+
password: ${{ secrets.GAR_JSON_KEY }}
42+
- name: Build and publish slim container image
43+
# Only run this on repositories in the 'spinnaker' org, not on forks.
44+
if: startsWith(github.repository, 'spinnaker/')
45+
uses: docker/build-push-action@v2
46+
with:
47+
context: .
48+
file: Dockerfile.slim
49+
push: true
50+
tags: |
51+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.ref_name }}-latest-unvalidated"
52+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.ref_name }}-${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-unvalidated"
53+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.ref_name }}-latest-unvalidated-slim"
54+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.ref_name }}-${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-unvalidated-slim"
55+
- name: Build and publish ubuntu container image
56+
# Only run this on repositories in the 'spinnaker' org, not on forks.
57+
if: startsWith(github.repository, 'spinnaker/')
58+
uses: docker/build-push-action@v2
59+
with:
60+
context: .
61+
file: Dockerfile.ubuntu
62+
push: true
63+
tags: |
64+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.ref_name }}-latest-unvalidated-ubuntu"
65+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.ref_name }}-${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-unvalidated-ubuntu"

.github/workflows/pr.yml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ on: [ pull_request ]
44

55
env:
66
GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx2g -Xms2g
7+
CONTAINER_REGISTRY: us-docker.pkg.dev/spinnaker-community/docker
78

89
jobs:
910
build:
@@ -15,5 +16,29 @@ jobs:
1516
java-version: 11
1617
distribution: 'zulu'
1718
cache: 'gradle'
19+
- name: Extract repository name
20+
id: extract_repo_name
21+
run: echo ::set-output name=REPO::${GITHUB_REPOSITORY##*/}
1822
- name: Build
19-
run: ./gradlew build
23+
run: ./gradlew build ${{ steps.extract_repo_name.outputs.REPO }}-web:installDist
24+
- name: Get date
25+
id: get_date
26+
run: echo ::set-output name=DATETIME::$(date --utc +'%Y%m%d%H%M')
27+
- name: Build slim container image
28+
uses: docker/build-push-action@v2
29+
with:
30+
context: .
31+
file: Dockerfile.slim
32+
tags: |
33+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:latest"
34+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}"
35+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:latest-slim"
36+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-slim"
37+
- name: Build ubuntu container image
38+
uses: docker/build-push-action@v2
39+
with:
40+
context: .
41+
file: Dockerfile.ubuntu
42+
tags: |
43+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:latest-ubuntu"
44+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-ubuntu"

.github/workflows/release.yml

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ on:
88

99
env:
1010
GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx2g -Xms2g
11+
CONTAINER_REGISTRY: us-docker.pkg.dev/spinnaker-community/docker
1112

1213
jobs:
1314
release:
@@ -30,6 +31,9 @@ jobs:
3031
echo ::set-output name=SKIP_RELEASE::${SKIP_RELEASE}
3132
echo ::set-output name=IS_CANDIDATE::${IS_CANDIDATE}
3233
echo ::set-output name=RELEASE_VERSION::${RELEASE_VERSION}
34+
- name: Extract repository name
35+
id: extract_repo_name
36+
run: echo ::set-output name=REPO::${GITHUB_REPOSITORY##*/}
3337
- name: Release build
3438
env:
3539
ORG_GRADLE_PROJECT_version: ${{ steps.release_info.outputs.RELEASE_VERSION }}
@@ -39,16 +43,58 @@ jobs:
3943
ORG_GRADLE_PROJECT_nexusPgpSigningKey: ${{ secrets.NEXUS_PGP_SIGNING_KEY }}
4044
ORG_GRADLE_PROJECT_nexusPgpSigningPassword: ${{ secrets.NEXUS_PGP_SIGNING_PASSWORD }}
4145
run: |
42-
./gradlew --info publishToNexus closeAndReleaseNexusStagingRepository
46+
./gradlew --info build ${{ steps.extract_repo_name.outputs.REPO }}-web:installDist publishToNexus closeAndReleaseNexusStagingRepository
47+
- name: Publish apt packages to Google Artifact Registry
48+
env:
49+
ORG_GRADLE_PROJECT_version: ${{ steps.release_info.outputs.RELEASE_VERSION }}
50+
ORG_GRADLE_PROJECT_artifactRegistryPublishEnabled: true
51+
GAR_JSON_KEY: ${{ secrets.GAR_JSON_KEY }}
52+
run: |
53+
./gradlew --info publish
54+
- name: Get date
55+
id: get_date
56+
run: echo ::set-output name=DATETIME::$(date --utc +'%Y%m%d%H%M')
57+
- name: Login to GAR
58+
# Only run this on repositories in the 'spinnaker' org, not on forks.
59+
if: startsWith(github.repository, 'spinnaker/')
60+
uses: docker/login-action@v1
61+
# use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1
62+
with:
63+
registry: us-docker.pkg.dev
64+
username: _json_key
65+
password: ${{ secrets.GAR_JSON_KEY }}
66+
- name: Build and publish slim container image
67+
# Only run this on repositories in the 'spinnaker' org, not on forks.
68+
if: startsWith(github.repository, 'spinnaker/')
69+
uses: docker/build-push-action@v2
70+
with:
71+
context: .
72+
file: Dockerfile.slim
73+
push: true
74+
tags: |
75+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-unvalidated"
76+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-unvalidated-slim"
77+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-unvalidated-slim"
78+
- name: Build and publish ubuntu container image
79+
# Only run this on repositories in the 'spinnaker' org, not on forks.
80+
if: startsWith(github.repository, 'spinnaker/')
81+
uses: docker/build-push-action@v2
82+
with:
83+
context: .
84+
file: Dockerfile.ubuntu
85+
push: true
86+
tags: |
87+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-unvalidated-ubuntu"
88+
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-unvalidated-ubuntu"
4389
- name: Create release
4490
if: steps.release_info.outputs.SKIP_RELEASE == 'false'
4591
uses: actions/create-release@v1
4692
env:
4793
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4894
with:
49-
tag_name: ${{ github.ref }}
50-
release_name: ${{ github.event.repository.name }} ${{ github.ref }}
51-
body: |
95+
tag_name: ${{ github.ref }}
96+
release_name: ${{ github.event.repository.name }} ${{ github.ref }}
97+
body: |
5298
${{ steps.release_info.outputs.CHANGELOG }}
53-
draft: false
54-
prerelease: ${{ steps.release_info.outputs.IS_CANDIDATE }}
99+
draft: false
100+
prerelease: ${{ steps.release_info.outputs.IS_CANDIDATE }}

0 commit comments

Comments
 (0)