Skip to content

Commit

Permalink
Add charming actions (#59)
Browse files Browse the repository at this point in the history
* add charming actions

* update libs
  • Loading branch information
natalian98 authored Jun 2, 2022
1 parent 37e5980 commit daafd9f
Show file tree
Hide file tree
Showing 7 changed files with 352 additions and 71 deletions.
24 changes: 20 additions & 4 deletions .github/workflows/integrate.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,28 @@
# reusable workflow triggered by other actions
name: CI

on:
push:
branches:
- master
pull_request:
workflow_call:
secrets:
charmcraft-credentials:
required: true

jobs:

lib-check:
name: Check libraries
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Check libs
uses: canonical/charming-actions/[email protected]
with:
credentials: "${{ secrets.charmcraft-credentials }}"
github-token: "${{ secrets.GITHUB_TOKEN }}"

lint:
name: Lint Code
runs-on: ubuntu-latest
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/on_pull_request.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Test and publish to branch

# On pull_request, we:
# * always publish to charmhub at latest/edge/branchname
# * always run tests

on:
pull_request:

jobs:

tests:
name: Run Tests
uses: ./.github/workflows/integrate.yaml
secrets:
charmcraft-credentials: "${{ secrets.CHARMCRAFT_CREDENTIALS }}"

# publish runs in parallel with tests, as we always publish in this situation
publish-charm:
name: Publish Charm
uses: ./.github/workflows/publish.yaml
secrets:
charmcraft-credentials: "${{ secrets.CHARMCRAFT_CREDENTIALS }}"
31 changes: 31 additions & 0 deletions .github/workflows/on_push.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Publish to edge if tests passed

# On push to a "special" branch, we:
# * always publish to charmhub at latest/edge/branchname
# * always run tests
# where a "special" branch is one of main/master or track/**, as
# by convention these branches are the source for a corresponding
# charmhub edge channel.

on:
push:
branches:
- master
- main
- track/**

jobs:

tests:
name: Run Tests
uses: ./.github/workflows/integrate.yaml
secrets:
charmcraft-credentials: "${{ secrets.CHARMCRAFT_CREDENTIALS }}"

# publish runs in series with tests, and only publishes if tests passes
publish-charm:
name: Publish Charm
needs: tests
uses: ./.github/workflows/publish.yaml
secrets:
charmcraft-credentials: "${{ secrets.CHARMCRAFT_CREDENTIALS }}"
35 changes: 18 additions & 17 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
@@ -1,27 +1,28 @@
# reusable workflow triggered by other actions
name: Publish

on:
push:
branches:
- master
- main
- track/**
pull_request:
branches:
- master
- main
- track/**
workflow_call:
secrets:
charmcraft-credentials:
required: true

jobs:

publish-charm:
name: Publish Charm
runs-on: ubuntu-latest
# Only publish to charmhub if we are pushing to a special branch or running PRs from something named `branch/*`
if: (github.event_name == 'push') || (startsWith( github.head_ref, 'branch/' ))
steps:
- uses: actions/checkout@v2
- uses: canonical/[email protected]
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Select charmhub channel
uses: canonical/charming-actions/[email protected]
id: channel
- name: Upload charm to charmhub
uses: canonical/charming-actions/[email protected]
with:
credentials: ${{ secrets.CHARMCRAFT_CREDENTIALS }}
charm-path: ./
charmcraft-channel: latest/edge
credentials: "${{ secrets.charmcraft-credentials }}"
github-token: "${{ secrets.GITHUB_TOKEN }}"
channel: "${{ steps.channel.outputs.name }}"
26 changes: 26 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# reusable workflow triggered manually
name: Release charm to other tracks and channels

on:
workflow_dispatch:
inputs:
destination-channel:
description: 'Destination Channel'
required: true
origin-channel:
description: 'Origin Channel'
required: true

jobs:
promote-charm:
name: Promote charm
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Release charm to channel
uses: canonical/charming-actions/[email protected]
with:
credentials: ${{ secrets.CHARMCRAFT_CREDENTIALS }}
github-token: ${{ secrets.GITHUB_TOKEN }}
destination-channel: ${{ github.event.inputs.destination-channel }}
origin-channel: ${{ github.event.inputs.origin-channel }}
Loading

0 comments on commit daafd9f

Please sign in to comment.