Skip to content

Add tests to model/deployment_chain (#4632) #707

Add tests to model/deployment_chain (#4632)

Add tests to model/deployment_chain (#4632) #707

name: publish
on:
push:
branches:
- master
tags:
- 'v*'
env:
GHCR: ghcr.io
GCR: gcr.io
HELM_VERSION: 3.8.2
GO_VERSION: 1.20.5
NODE_VERSION: 16.13.0
jobs:
artifacts:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-go@v3
with:
go-version: ${{ env.GO_VERSION }}
cache: true
- name: Determine version
run: echo "PIPECD_VERSION=$(git describe --tags --always --abbrev=7)" >> $GITHUB_ENV
# Building go modules.
- name: Build go modules
run: make build/go
# Building web.
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
- uses: actions/cache@v2
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Update web dependencies
run: make update/web-deps
- name: Build web static
run: make build/web
# Setup QEMU and Buildx.
- name: Set up QEMU
uses: docker/setup-qemu-action@8b122486cedac8393e77aa9734c3528886e4a1a8 #v2.0.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@dc7b9719a96d48369863986a06765841d7ea23f6 #2.0.0
# Login to push container images.
- name: Log in to GHCR
uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b #v2.0.0
with:
registry: ${{ env.GHCR }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to GCR
uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b #v2.0.0
with:
registry: ${{ env.GCR }}
username: _json_key
password: ${{ secrets.GCR_SA }}
# Building and pushing container images.
- name: Build and push pipecd image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
push: true
context: .
file: cmd/pipecd/Dockerfile
platforms: linux/amd64,linux/arm64
tags: ${{ env.GHCR }}/pipe-cd/pipecd:${{ env.PIPECD_VERSION }}
- name: Build and push piped image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
push: true
context: .
file: cmd/piped/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
${{ env.GHCR }}/pipe-cd/piped:${{ env.PIPECD_VERSION }}
${{ env.GCR }}/pipecd/piped:${{ env.PIPECD_VERSION }}
- name: Build and push piped-okd image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
push: true
context: .
file: cmd/piped/Dockerfile-okd
platforms: linux/amd64,linux/arm64
tags: ${{ env.GHCR }}/pipe-cd/piped-okd:${{ env.PIPECD_VERSION }}
- name: Build and push launcher image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
push: true
context: .
file: cmd/launcher/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
${{ env.GHCR }}/pipe-cd/launcher:${{ env.PIPECD_VERSION }}
${{ env.GCR }}/pipecd/launcher:${{ env.PIPECD_VERSION }}
- name: Build and push launcher-okd image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
push: true
context: .
file: cmd/launcher/Dockerfile-okd
platforms: linux/amd64,linux/arm64
tags: ${{ env.GHCR }}/pipe-cd/launcher-okd:${{ env.PIPECD_VERSION }}
- name: Build and push pipectl image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
push: true
context: .
file: cmd/pipectl/Dockerfile
platforms: linux/amd64,linux/arm64
tags: ${{ env.GHCR }}/pipe-cd/pipectl:${{ env.PIPECD_VERSION }}
- name: Build and push helloworld image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
push: true
context: .
file: cmd/helloworld/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
${{ env.GHCR }}/pipe-cd/helloworld:${{ env.PIPECD_VERSION }}
${{ env.GCR }}/pipecd/helloworld:${{ env.PIPECD_VERSION }}
# Building and pushing Helm charts.
- name: Install helm
uses: Azure/setup-helm@v1
with:
version: ${{ env.HELM_VERSION }}
- name: Login to OCI using Helm
run: |
echo ${{ secrets.GITHUB_TOKEN }} | helm registry login ${{ env.GHCR }} --username ${{ github.repository_owner }} --password-stdin
- name: Publish helm charts
run: |
make build/chart VERSION=${{ env.PIPECD_VERSION }}
helm push .artifacts/pipecd-${{ env.PIPECD_VERSION }}.tgz oci://${{ env.GHCR }}/pipe-cd/chart
helm push .artifacts/piped-${{ env.PIPECD_VERSION }}.tgz oci://${{ env.GHCR }}/pipe-cd/chart
helm push .artifacts/helloworld-${{ env.PIPECD_VERSION }}.tgz oci://${{ env.GHCR }}/pipe-cd/chart
# Notify PipeCD to trigger deployment via EventWatcher.
- uses: pipe-cd/actions-event-register@v1
with:
api-address: ${{ secrets.PIPECD_API_ADDRESS }}
api-key: ${{ secrets.PIPECD_API_KEY }}
event-name: helm-release
labels: helmRepo=pipecd
data: ${{ env.PIPECD_VERSION }}