mirror of
https://github.com/werf/actions.git
synced 2026-02-09 04:46:24 +03:00
Compare commits
49 Commits
v1.1
...
marketplac
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5e6d49cdd | ||
|
|
124534d1bb | ||
|
|
5b66dc4131 | ||
|
|
ed5a3d1e9b | ||
|
|
3729ed90a5 | ||
|
|
e1fbd124d8 | ||
|
|
0617fd4cf8 | ||
|
|
c05acfa9d8 | ||
|
|
5b9769fd62 | ||
|
|
6545aa68e3 | ||
|
|
bd2180a34d | ||
|
|
efd32e8190 | ||
|
|
0fed75c13c | ||
|
|
5aa19beb9e | ||
|
|
84fc1961b2 | ||
|
|
8f92bdfbf0 | ||
|
|
c8d9dcbd53 | ||
|
|
6f7411b1c0 | ||
|
|
00a90c715d | ||
|
|
cae57c1fe2 | ||
|
|
5201be8745 | ||
|
|
86a1f64ff2 | ||
|
|
d498415460 | ||
|
|
850bbb65ad | ||
|
|
a73b4d34fd | ||
|
|
3dbf8c10c0 | ||
|
|
01d8c1ceea | ||
|
|
b7ed64f2df | ||
|
|
2b23b0c4ff | ||
|
|
283070759b | ||
|
|
56a4bc82d3 | ||
|
|
7c46a8aac9 | ||
|
|
3e6d892594 | ||
|
|
b03f6749c6 | ||
|
|
2ce1908426 | ||
|
|
3869de4804 | ||
|
|
b2e09d839f | ||
|
|
23596d318c | ||
|
|
1802a119b1 | ||
|
|
8f134231c2 | ||
|
|
2bf444c364 | ||
|
|
8e55e7d93d | ||
|
|
4d1cac7064 | ||
|
|
d8c14de78e | ||
|
|
ca52a4e8ec | ||
|
|
6e29948fe2 | ||
|
|
8037e10244 | ||
|
|
432a3754b4 | ||
|
|
2df7b68580 |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"plugins": ["@typescript-eslint"],
|
"plugins": ["@typescript-eslint", "github"],
|
||||||
"extends": ["plugin:github/es6"],
|
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended","plugin:github/recommended"],
|
||||||
"parser": "@typescript-eslint/parser",
|
"parser": "@typescript-eslint/parser",
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaVersion": 9,
|
"ecmaVersion": 9,
|
||||||
@@ -13,43 +13,10 @@
|
|||||||
"eslint-comments/no-use": "off",
|
"eslint-comments/no-use": "off",
|
||||||
"import/no-namespace": "off",
|
"import/no-namespace": "off",
|
||||||
"no-unused-vars": "off",
|
"no-unused-vars": "off",
|
||||||
"@typescript-eslint/no-unused-vars": "error",
|
|
||||||
"@typescript-eslint/no-require-imports": "error",
|
|
||||||
"@typescript-eslint/array-type": "error",
|
|
||||||
"@typescript-eslint/await-thenable": "error",
|
|
||||||
"@typescript-eslint/ban-ts-ignore": "error",
|
|
||||||
"camelcase": "off",
|
"camelcase": "off",
|
||||||
"@typescript-eslint/camelcase": "error",
|
|
||||||
"@typescript-eslint/class-name-casing": "error",
|
|
||||||
"@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}],
|
|
||||||
"@typescript-eslint/func-call-spacing": ["error", "never"],
|
|
||||||
"@typescript-eslint/generic-type-naming": ["error", "^[A-Z][A-Za-z]*$"],
|
|
||||||
"@typescript-eslint/no-array-constructor": "error",
|
|
||||||
"@typescript-eslint/no-empty-interface": "error",
|
|
||||||
"@typescript-eslint/no-explicit-any": "error",
|
|
||||||
"@typescript-eslint/no-extraneous-class": "error",
|
|
||||||
"@typescript-eslint/no-for-in-array": "error",
|
|
||||||
"@typescript-eslint/no-inferrable-types": "error",
|
|
||||||
"@typescript-eslint/no-misused-new": "error",
|
|
||||||
"@typescript-eslint/no-namespace": "error",
|
|
||||||
"@typescript-eslint/no-non-null-assertion": "warn",
|
|
||||||
"@typescript-eslint/no-object-literal-type-assertion": "error",
|
|
||||||
"@typescript-eslint/no-unnecessary-qualifier": "error",
|
|
||||||
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
|
||||||
"@typescript-eslint/no-useless-constructor": "error",
|
|
||||||
"@typescript-eslint/no-var-requires": "error",
|
|
||||||
"@typescript-eslint/prefer-for-of": "warn",
|
|
||||||
"@typescript-eslint/prefer-function-type": "warn",
|
|
||||||
"@typescript-eslint/prefer-includes": "error",
|
|
||||||
"@typescript-eslint/prefer-interface": "error",
|
|
||||||
"@typescript-eslint/prefer-string-starts-ends-with": "error",
|
|
||||||
"@typescript-eslint/promise-function-async": "error",
|
|
||||||
"@typescript-eslint/require-array-sort-compare": "error",
|
|
||||||
"@typescript-eslint/restrict-plus-operands": "error",
|
|
||||||
"semi": "off",
|
"semi": "off",
|
||||||
"@typescript-eslint/semi": ["error", "never"],
|
"i18n-text/no-en": "off",
|
||||||
"@typescript-eslint/type-annotation-spacing": "error",
|
"sort-imports": "off"
|
||||||
"@typescript-eslint/unbound-method": "error"
|
|
||||||
},
|
},
|
||||||
"env": {
|
"env": {
|
||||||
"node": true,
|
"node": true,
|
||||||
|
|||||||
43
.github/workflows/test.yaml
vendored
Normal file
43
.github/workflows/test.yaml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: Test
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
channel:
|
||||||
|
name: By channel
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, macOS-latest, windows-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
uses: ./install
|
||||||
|
|
||||||
|
- run: werf version
|
||||||
|
|
||||||
|
version:
|
||||||
|
name: By version
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, macOS-latest, windows-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
uses: ./install
|
||||||
|
with:
|
||||||
|
version: v1.2.35
|
||||||
|
|
||||||
|
- run: werf version
|
||||||
164
README.md
164
README.md
@@ -1,36 +1,45 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://github.com/werf/werf/raw/master/docs/images/werf-logo.svg?sanitize=true" style="max-height:100%;" height="175">
|
<img src="https://werf.io/assets/images/werf-logo.svg?sanitize=true" style="max-height:100%;" height="175">
|
||||||
</p>
|
</p>
|
||||||
___
|
___
|
||||||
|
|
||||||
This action set allows you to organize CI/CD with GitHub Actions and [werf](https://github.com/werf/werf). The set consists of several independent and complex actions:
|
This action set allows you to organize CI/CD with GitHub Actions and [werf](https://github.com/werf/werf). The set consists of several independent and complex actions:
|
||||||
|
|
||||||
- [werf/actions/converge](https://github.com/werf/actions/tree/master/converge)
|
- [werf/actions/converge](https://github.com/werf/actions/tree/v1.2/converge)
|
||||||
- [werf/actions/build-and-publish](https://github.com/werf/actions/tree/master/build-and-publish)
|
- [werf/actions/dismiss](https://github.com/werf/actions/tree/v1.2/dismiss)
|
||||||
- [werf/actions/build](https://github.com/werf/actions/tree/master/build)
|
- [werf/actions/build](https://github.com/werf/actions/tree/v1.2/build)
|
||||||
- [werf/actions/publish](https://github.com/werf/actions/tree/master/build)
|
- [werf/actions/run](https://github.com/werf/actions/tree/v1.2/run)
|
||||||
- [werf/actions/deploy](https://github.com/werf/actions/tree/master/deploy)
|
- [werf/actions/cleanup](https://github.com/werf/actions/tree/v1.2/cleanup)
|
||||||
- [werf/actions/dismiss](https://github.com/werf/actions/tree/master/dismiss)
|
|
||||||
- [werf/actions/run](https://github.com/werf/actions/tree/master/run)
|
|
||||||
- [werf/actions/cleanup](https://github.com/werf/actions/tree/master/cleanup)
|
|
||||||
|
|
||||||
Each action combines all the necessary steps in itself and logic may be divided into environment setup and launching the corresponding command.
|
Each action combines all the necessary steps in itself, and logic may be divided into [environment setup](#environment-setup-in-details) and launching the corresponding command.
|
||||||
|
|
||||||
**Ready-to-use GitHub Actions Workflows** for different CI/CD workflows are available [here](https://werf.io/documentation/advanced/ci_cd/github_actions.html#complete-set-of-configurations-for-ready-made-workflows).
|
**Ready-to-use GitHub Actions Workflows** for different CI/CD workflows are available [here](https://werf.io/documentation/v1.2/advanced/ci_cd/github_actions.html#complete-set-of-configurations-for-ready-made-workflows).
|
||||||
|
|
||||||
> Also, there is another action — [werf/actions/install](https://github.com/werf/actions/tree/master/install). With this action a user can just install werf and use binary within job steps for own purposes
|
> Also, there is another action — [werf/actions/install](https://github.com/werf/actions/tree/v1.2/install). With this action, the user can install werf and use binary within job steps for own purposes.
|
||||||
|
|
||||||
|
## Versioning
|
||||||
|
|
||||||
|
When using actions, select the version corresponding to the required `MAJOR.MINOR` version of werf:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Run converge using actual werf version within 1.1 alpha channel.
|
||||||
|
- uses: werf/actions/converge@v1.1
|
||||||
|
|
||||||
|
# Run converge using actual werf version within 1.2 alpha channel.
|
||||||
|
- uses: werf/actions/converge@v1.2
|
||||||
|
```
|
||||||
|
|
||||||
## Environment setup in details
|
## Environment setup in details
|
||||||
|
|
||||||
### werf binary setup
|
### werf binary installation
|
||||||
|
|
||||||
By default, all actions setup actual werf version for [1.1 alpha channel](https://werf.io/releases.html) (more details about channels, werf release cycle and compatibility promise [here](https://github.com/werf/werf#backward-compatibility-promise)).
|
By default, all actions install actual werf version within 1.2 alpha channel (more details about channels, werf release cycle and compatibility promise [here](https://werf.io/installation.html#all-changes-in-werf-go-through-all-stability-channels)).
|
||||||
Using the `channel` input the user can switch the release channel.
|
Using the `channel` input the user can switch the release channel.
|
||||||
|
|
||||||
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: werf/actions/converge@v1.1
|
- uses: werf/actions/converge@v1.2
|
||||||
with:
|
with:
|
||||||
channel: alpha
|
channel: alpha
|
||||||
```
|
```
|
||||||
@@ -38,45 +47,80 @@ Using the `channel` input the user can switch the release channel.
|
|||||||
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: werf/actions/converge@v1.1
|
- uses: werf/actions/converge@v1.2
|
||||||
with:
|
with:
|
||||||
version: v1.1.23
|
version: v1.2.9
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### werf ci-env
|
||||||
|
|
||||||
|
This is the step where an action:
|
||||||
|
|
||||||
|
- sets the defaults for werf command options based on [GitHub Workflow environment variables](https://docs.github.com/en/actions/reference/environment-variables) (e.g. container repository address to the `WERF_REPO` environment variable using the following pattern: `ghcr.io/$GITHUB_REPOSITORY/<project-from-werf.yaml>`).
|
||||||
|
- performs _docker login_ to `ghcr.io` using the `github-token` input (only if `ghcr.io` used as `WERF_REPO`).
|
||||||
|
|
||||||
|
> The `github-token` input is optional, and the input is there in case you need to use a non-default token. By default, an action will use [the token provided to your workflow](https://docs.github.com/en/actions/reference/authentication-in-a-workflow#about-the-github_token-secret).
|
||||||
|
|
||||||
### kubeconfig setup (*optional*)
|
### kubeconfig setup (*optional*)
|
||||||
|
|
||||||
The _kubeconfig_ may be used for deployment, cleanup, distributed locks and caches. Thus, the configuration should be added before step with the action or passed as base64 encoded data with `kube-config-base64-data` input:
|
The _kubeconfig_ may be used for deployment, cleanup, distributed locks and caches. Thus, the configuration should be added before step with the action or passed as base64 encoded data with `kube-config-base64-data` input:
|
||||||
|
|
||||||
* Prepare _kubeconfig_ (e.g. `cat ~/.kube/config | base64`) and save in GitHub Project Secrets (e.g. with name `KUBE_CONFIG_BASE64_DATA`).
|
* Prepare _kubeconfig_ (e.g. `cat ~/.kube/config | base64`) and save in [GitHub Secrets](https://docs.github.com/en/actions/reference/encrypted-secrets) (e.g. with name `KUBE_CONFIG_BASE64_DATA`).
|
||||||
|
|
||||||
* Pass secret with `kube-config-base64-data` input:
|
* Pass secret with `kube-config-base64-data` input:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: werf/actions/build-and-publish@v1.1
|
- uses: werf/actions/converge@v1.2
|
||||||
with:
|
with:
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
||||||
```
|
```
|
||||||
|
|
||||||
### werf ci-env
|
|
||||||
|
|
||||||
This command performs _docker login_ using `github-token`, sets up predefined variables based on GitHub Workflow context.
|
|
||||||
|
|
||||||
**Note** that `github-token` is optional in this action, and the input is there in case you need to use a non-default token.
|
|
||||||
|
|
||||||
By default, action will use the token provided to your workflow.
|
|
||||||
|
|
||||||
## Working with werf options
|
## Working with werf options
|
||||||
|
|
||||||
Any werf option can be defined with environment variables:
|
All werf options can be defined with environment variables:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: werf/actions/build-and-publish@v1.1
|
- uses: werf/actions/converge@v1.2
|
||||||
env:
|
env:
|
||||||
WERF_LOG_VERBOSE: "on"
|
WERF_LOG_VERBOSE: "on" # The same as using the option --log-verbose=on.
|
||||||
WERF_TAG_CUSTOM_TAG1: tag1
|
|
||||||
WERF_TAG_CUSTOM_TAG2: tag2
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Working with container registry
|
||||||
|
|
||||||
|
### Default container repository
|
||||||
|
|
||||||
|
An action generates the default container repository address and performs _docker login_ to the registry within [werf ci-env step](#werf-ci-env).
|
||||||
|
|
||||||
|
For cleanup action, the user needs [to create personal access token](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token) with `read:packages` and `delete:packages` scope and uses it as the `WERF_REPO_GITHUB_TOKEN` environment variable or the `github-token` input. It is recommended [to store the token as a secret](https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets).
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: werf/actions/cleanup@v1.2
|
||||||
|
with:
|
||||||
|
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
||||||
|
env:
|
||||||
|
WERF_REPO_GITHUB_TOKEN: ${{ secrets.WERF_CLEANUP_PAM }}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Custom container repository
|
||||||
|
|
||||||
|
An arbitrary container repository can be specified with the `WERF_REPO` and `WERF_REPO_CONTAINER_REGISTRY` environment variables. For instance, steps for GCR:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Login to GCR
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
registry: gcr.io
|
||||||
|
username: _json_key
|
||||||
|
password: ${{ secrets.GCR_JSON_KEY }}
|
||||||
|
|
||||||
|
- uses: werf/actions/converge@v1.2
|
||||||
|
env:
|
||||||
|
WERF_REPO: "gcr.io/company/app"
|
||||||
|
WERF_REPO_CONTAINER_REGISTRY: "gcr"
|
||||||
|
```
|
||||||
|
|
||||||
|
> To learn more about how to work with the different container registries, see the appropriate [article in the werf documentation](https://werf.io/documentation/v1.2/advanced/supported_container_registries.html).
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
### converge
|
### converge
|
||||||
@@ -93,43 +137,7 @@ converge:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Converge
|
- name: Converge
|
||||||
uses: werf/actions/converge@v1.1
|
uses: werf/actions/converge@v1.2
|
||||||
with:
|
|
||||||
env: production
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
|
|
||||||
### build, publish and deploy
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
build-and-publish:
|
|
||||||
name: Build and Publish
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Build and Publish
|
|
||||||
uses: werf/actions/build-and-publish@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
name: Deploy
|
|
||||||
needs: build-and-publish
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Deploy
|
|
||||||
uses: werf/actions/deploy@v1.1
|
|
||||||
with:
|
with:
|
||||||
env: production
|
env: production
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
||||||
@@ -147,7 +155,7 @@ dismiss:
|
|||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Dismiss
|
- name: Dismiss
|
||||||
uses: werf/actions/dismiss@v1.1
|
uses: werf/actions/dismiss@v1.2
|
||||||
with:
|
with:
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
||||||
env: production
|
env: production
|
||||||
@@ -167,7 +175,7 @@ run:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Run
|
- name: Run
|
||||||
uses: werf/actions/run@v1.1
|
uses: werf/actions/run@v1.2
|
||||||
with:
|
with:
|
||||||
image: backend
|
image: backend
|
||||||
args: rails server
|
args: rails server
|
||||||
@@ -191,9 +199,11 @@ cleanup:
|
|||||||
run: git fetch --prune --unshallow
|
run: git fetch --prune --unshallow
|
||||||
|
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
uses: werf/actions/cleanup@v1.1
|
uses: werf/actions/cleanup@v1.2
|
||||||
with:
|
with:
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
||||||
|
env:
|
||||||
|
WERF_REPO_GITHUB_TOKEN: ${{ secrets.WERF_CLEANUP_PAM }}
|
||||||
```
|
```
|
||||||
|
|
||||||
### install
|
### install
|
||||||
@@ -208,9 +218,9 @@ werf:
|
|||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Install werf CLI
|
- name: Install werf CLI
|
||||||
uses: werf/actions/install@v1.1
|
uses: werf/actions/install@v1.2
|
||||||
|
|
||||||
# for deploy and distributed locks
|
# For deploy and distributed locks.
|
||||||
- name: Create kube config
|
- name: Create kube config
|
||||||
run: |
|
run: |
|
||||||
KUBECONFIG=$(mktemp -d)/config
|
KUBECONFIG=$(mktemp -d)/config
|
||||||
@@ -222,8 +232,8 @@ werf:
|
|||||||
- name: Run werf commands
|
- name: Run werf commands
|
||||||
run: |
|
run: |
|
||||||
source $(werf ci-env github --as-file)
|
source $(werf ci-env github --as-file)
|
||||||
werf build-and-publish
|
werf render
|
||||||
werf deploy
|
werf converge
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
WERF_ENV: production
|
WERF_ENV: production
|
||||||
|
|||||||
@@ -1,101 +0,0 @@
|
|||||||
<p align="center">
|
|
||||||
<img src="https://github.com/werf/werf/raw/master/docs/images/werf-logo.svg?sanitize=true" style="max-height:100%;" height="175">
|
|
||||||
</p>
|
|
||||||
___
|
|
||||||
|
|
||||||
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf build-and-publish`.
|
|
||||||
|
|
||||||
## Action in Details
|
|
||||||
|
|
||||||
### werf binary setup
|
|
||||||
|
|
||||||
By default, all actions setup actual werf version for [1.1 alpha channel](https://werf.io/releases.html) (more details about channels, werf release cycle and compatibility promise [here](https://github.com/werf/werf#backward-compatibility-promise)).
|
|
||||||
Using the `channel` input the user can switch the release channel.
|
|
||||||
|
|
||||||
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/build-and-publish@v1.1
|
|
||||||
with:
|
|
||||||
channel: alpha
|
|
||||||
```
|
|
||||||
|
|
||||||
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/build-and-publish@v1.1
|
|
||||||
with:
|
|
||||||
version: v1.1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
### kubeconfig setup (*optional*)
|
|
||||||
|
|
||||||
The _kubeconfig_ may be used for deployment, cleanup, distributed locks and caches. Thus, the configuration should be added before step with the action or passed as base64 encoded data with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
* Prepare _kubeconfig_ (e.g. `cat ~/.kube/config | base64`) and save in GitHub Project Secrets (e.g. with name `KUBE_CONFIG_BASE64_DATA`).
|
|
||||||
|
|
||||||
* Pass secret with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/build-and-publish@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
|
|
||||||
### werf ci-env
|
|
||||||
|
|
||||||
This command performs _docker login_ using `github-token`, sets up predefined variables based on GitHub Workflow context.
|
|
||||||
|
|
||||||
**Note** that `github-token` is optional in this action, and the input is there in case you need to use a non-default token.
|
|
||||||
|
|
||||||
By default, action will use the token provided to your workflow.
|
|
||||||
|
|
||||||
## Working with werf options
|
|
||||||
|
|
||||||
Any werf option can be defined with environment variables:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/build-and-publish@v1.1
|
|
||||||
env:
|
|
||||||
WERF_LOG_VERBOSE: "on"
|
|
||||||
WERF_TAG_CUSTOM_TAG1: tag1
|
|
||||||
WERF_TAG_CUSTOM_TAG2: tag2
|
|
||||||
```
|
|
||||||
|
|
||||||
## Inputs
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
channel:
|
|
||||||
description: 'The one of the following channel: alpha, beta, ea, stable, rock-solid'
|
|
||||||
default: 'alpha'
|
|
||||||
required: false
|
|
||||||
version:
|
|
||||||
description: 'The certain version'
|
|
||||||
required: false
|
|
||||||
github-token:
|
|
||||||
description: 'The GitHub token used to login and to interact with Docker Github Packages'
|
|
||||||
default: ${{ github.token }}
|
|
||||||
required: false
|
|
||||||
kube-config-base64-data:
|
|
||||||
description: 'Base64 encoded kubeconfig data used for deployment, cleanup and distributed locks'
|
|
||||||
required: false
|
|
||||||
```
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
build-and-publish:
|
|
||||||
name: Build and Publish
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Build and Publish
|
|
||||||
uses: werf/actions/build-and-publish@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
name: werf build-and-publish
|
|
||||||
author: 'Flant'
|
|
||||||
description: 'Prepare the environment and perform image building and publishing with werf'
|
|
||||||
branding:
|
|
||||||
color: blue
|
|
||||||
icon: anchor
|
|
||||||
inputs:
|
|
||||||
channel:
|
|
||||||
description: 'The one of the following channel: alpha, beta, ea, stable, rock-solid'
|
|
||||||
default: 'alpha'
|
|
||||||
required: false
|
|
||||||
version:
|
|
||||||
description: 'The certain version'
|
|
||||||
required: false
|
|
||||||
github-token:
|
|
||||||
description: 'The GitHub token used to login and to interact with Docker Github Packages'
|
|
||||||
default: ${{ github.token }}
|
|
||||||
required: false
|
|
||||||
kube-config-base64-data:
|
|
||||||
description: 'Base64 encoded kubeconfig data used for deployment, cleanup and distributed locks'
|
|
||||||
required: false
|
|
||||||
runs:
|
|
||||||
using: 'node12'
|
|
||||||
main: 'index.js'
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -5,63 +5,6 @@ ___
|
|||||||
|
|
||||||
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf build`.
|
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf build`.
|
||||||
|
|
||||||
## Action in Details
|
|
||||||
|
|
||||||
### werf binary setup
|
|
||||||
|
|
||||||
By default, all actions setup actual werf version for [1.1 alpha channel](https://werf.io/releases.html) (more details about channels, werf release cycle and compatibility promise [here](https://github.com/werf/werf#backward-compatibility-promise)).
|
|
||||||
Using the `channel` input the user can switch the release channel.
|
|
||||||
|
|
||||||
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/build@v1.1
|
|
||||||
with:
|
|
||||||
channel: alpha
|
|
||||||
```
|
|
||||||
|
|
||||||
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/build@v1.1
|
|
||||||
with:
|
|
||||||
version: v1.1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
### kubeconfig setup (*optional*)
|
|
||||||
|
|
||||||
The _kubeconfig_ may be used for deployment, cleanup, distributed locks and caches. Thus, the configuration should be added before step with the action or passed as base64 encoded data with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
* Prepare _kubeconfig_ (e.g. `cat ~/.kube/config | base64`) and save in GitHub Project Secrets (e.g. with name `KUBE_CONFIG_BASE64_DATA`).
|
|
||||||
|
|
||||||
* Pass secret with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/build@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
|
|
||||||
### werf ci-env
|
|
||||||
|
|
||||||
This command performs _docker login_ using `github-token`, sets up predefined variables based on GitHub Workflow context.
|
|
||||||
|
|
||||||
**Note** that `github-token` is optional in this action, and the input is there in case you need to use a non-default token.
|
|
||||||
|
|
||||||
By default, action will use the token provided to your workflow.
|
|
||||||
|
|
||||||
## Working with werf options
|
|
||||||
|
|
||||||
Any werf option can be defined with environment variables:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/build@v1.1
|
|
||||||
env:
|
|
||||||
WERF_LOG_VERBOSE: "on"
|
|
||||||
WERF_TAG_CUSTOM_TAG1: tag1
|
|
||||||
WERF_TAG_CUSTOM_TAG2: tag2
|
|
||||||
```
|
|
||||||
|
|
||||||
## Inputs
|
## Inputs
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -95,7 +38,7 @@ build:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
uses: werf/actions/build@v1.1
|
uses: werf/actions/build@v1.2
|
||||||
with:
|
with:
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
||||||
```
|
```
|
||||||
|
|||||||
64329
build/index.js
64329
build/index.js
File diff suppressed because one or more lines are too long
@@ -5,61 +5,6 @@ ___
|
|||||||
|
|
||||||
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf cleanup`.
|
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf cleanup`.
|
||||||
|
|
||||||
## Action in Details
|
|
||||||
|
|
||||||
### werf binary setup
|
|
||||||
|
|
||||||
By default, all actions setup actual werf version for [1.1 alpha channel](https://werf.io/releases.html) (more details about channels, werf release cycle and compatibility promise [here](https://github.com/werf/werf#backward-compatibility-promise)).
|
|
||||||
Using the `channel` input the user can switch the release channel.
|
|
||||||
|
|
||||||
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/cleanup@v1.1
|
|
||||||
with:
|
|
||||||
channel: alpha
|
|
||||||
```
|
|
||||||
|
|
||||||
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/cleanup@v1.1
|
|
||||||
with:
|
|
||||||
version: v1.1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
### kubeconfig setup (*optional*)
|
|
||||||
|
|
||||||
The _kubeconfig_ may be used for deployment, cleanup, distributed locks and caches. Thus, the configuration should be added before step with the action or passed as base64 encoded data with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
* Prepare _kubeconfig_ (e.g. `cat ~/.kube/config | base64`) and save in GitHub Project Secrets (e.g. with name `KUBE_CONFIG_BASE64_DATA`).
|
|
||||||
|
|
||||||
* Pass secret with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/cleanup@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
|
|
||||||
### werf ci-env
|
|
||||||
|
|
||||||
This command performs _docker login_ using `github-token`, sets up predefined variables based on GitHub Workflow context.
|
|
||||||
|
|
||||||
**Note** that `github-token` is optional in this action, and the input is there in case you need to use a non-default token.
|
|
||||||
|
|
||||||
By default, action will use the token provided to your workflow.
|
|
||||||
|
|
||||||
## Working with werf options
|
|
||||||
|
|
||||||
Any werf option can be defined with environment variables:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/cleanup@v1.1
|
|
||||||
env:
|
|
||||||
WERF_LOG_VERBOSE: "on"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Inputs
|
## Inputs
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -94,7 +39,9 @@ cleanup:
|
|||||||
run: git fetch --prune --unshallow
|
run: git fetch --prune --unshallow
|
||||||
|
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
uses: werf/actions/cleanup@v1.1
|
uses: werf/actions/cleanup@v1.2
|
||||||
with:
|
with:
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
||||||
|
env:
|
||||||
|
WERF_REPO_GITHUB_TOKEN: ${{ secrets.WERF_CLEANUP_PAM }}
|
||||||
```
|
```
|
||||||
|
|||||||
64329
cleanup/index.js
64329
cleanup/index.js
File diff suppressed because one or more lines are too long
@@ -5,63 +5,6 @@ ___
|
|||||||
|
|
||||||
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf converge`.
|
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf converge`.
|
||||||
|
|
||||||
## Action in Details
|
|
||||||
|
|
||||||
### werf binary setup
|
|
||||||
|
|
||||||
By default, all actions setup actual werf version for [1.1 alpha channel](https://werf.io/releases.html) (more details about channels, werf release cycle and compatibility promise [here](https://github.com/werf/werf#backward-compatibility-promise)).
|
|
||||||
Using the `channel` input the user can switch the release channel.
|
|
||||||
|
|
||||||
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/converge@v1.1
|
|
||||||
with:
|
|
||||||
channel: alpha
|
|
||||||
```
|
|
||||||
|
|
||||||
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/converge@v1.1
|
|
||||||
with:
|
|
||||||
version: v1.1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
### kubeconfig setup (*optional*)
|
|
||||||
|
|
||||||
The _kubeconfig_ may be used for deployment, cleanup, distributed locks and caches. Thus, the configuration should be added before step with the action or passed as base64 encoded data with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
* Prepare _kubeconfig_ (e.g. `cat ~/.kube/config | base64`) and save in GitHub Project Secrets (e.g. with name `KUBE_CONFIG_BASE64_DATA`).
|
|
||||||
|
|
||||||
* Pass secret with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/converge@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
|
|
||||||
### werf ci-env
|
|
||||||
|
|
||||||
This command performs _docker login_ using `github-token`, sets up predefined variables based on GitHub Workflow context.
|
|
||||||
|
|
||||||
**Note** that `github-token` is optional in this action, and the input is there in case you need to use a non-default token.
|
|
||||||
|
|
||||||
By default, action will use the token provided to your workflow.
|
|
||||||
|
|
||||||
## Working with werf options
|
|
||||||
|
|
||||||
Any werf option can be defined with environment variables:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/converge@v1.1
|
|
||||||
with:
|
|
||||||
env: production
|
|
||||||
env:
|
|
||||||
WERF_LOG_VERBOSE: "on"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Inputs
|
## Inputs
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -98,7 +41,7 @@ converge:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Converge
|
- name: Converge
|
||||||
uses: werf/actions/converge@v1.1
|
uses: werf/actions/converge@v1.2
|
||||||
with:
|
with:
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
||||||
env: production
|
env: production
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ inputs:
|
|||||||
version:
|
version:
|
||||||
description: 'The certain version'
|
description: 'The certain version'
|
||||||
required: false
|
required: false
|
||||||
env:
|
env: # TODO: Remove this deprecated werf option, which is not required anymore (use WERF_ENV variable instead)
|
||||||
description: 'Specific deployment environment'
|
description: 'Specific deployment environment'
|
||||||
required: true
|
required: false
|
||||||
github-token:
|
github-token:
|
||||||
description: 'The GitHub token used to login and to interact with Docker Github Packages'
|
description: 'The GitHub token used to login and to interact with Docker Github Packages'
|
||||||
default: ${{ github.token }}
|
default: ${{ github.token }}
|
||||||
|
|||||||
64327
converge/index.js
64327
converge/index.js
File diff suppressed because one or more lines are too long
105
deploy/README.md
105
deploy/README.md
@@ -1,105 +0,0 @@
|
|||||||
<p align="center">
|
|
||||||
<img src="https://github.com/werf/werf/raw/master/docs/images/werf-logo.svg?sanitize=true" style="max-height:100%;" height="175">
|
|
||||||
</p>
|
|
||||||
___
|
|
||||||
|
|
||||||
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf deploy`.
|
|
||||||
|
|
||||||
## Action in Details
|
|
||||||
|
|
||||||
### werf binary setup
|
|
||||||
|
|
||||||
By default, all actions setup actual werf version for [1.1 alpha channel](https://werf.io/releases.html) (more details about channels, werf release cycle and compatibility promise [here](https://github.com/werf/werf#backward-compatibility-promise)).
|
|
||||||
Using the `channel` input the user can switch the release channel.
|
|
||||||
|
|
||||||
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/deploy@v1.1
|
|
||||||
with:
|
|
||||||
channel: alpha
|
|
||||||
```
|
|
||||||
|
|
||||||
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/deploy@v1.1
|
|
||||||
with:
|
|
||||||
version: v1.1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
### kubeconfig setup (*optional*)
|
|
||||||
|
|
||||||
The _kubeconfig_ may be used for deployment, cleanup, distributed locks and caches. Thus, the configuration should be added before step with the action or passed as base64 encoded data with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
* Prepare _kubeconfig_ (e.g. `cat ~/.kube/config | base64`) and save in GitHub Project Secrets (e.g. with name `KUBE_CONFIG_BASE64_DATA`).
|
|
||||||
|
|
||||||
* Pass secret with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/deploy@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
|
|
||||||
### werf ci-env
|
|
||||||
|
|
||||||
This command performs _docker login_ using `github-token`, sets up predefined variables based on GitHub Workflow context.
|
|
||||||
|
|
||||||
**Note** that `github-token` is optional in this action, and the input is there in case you need to use a non-default token.
|
|
||||||
|
|
||||||
By default, action will use the token provided to your workflow.
|
|
||||||
|
|
||||||
## Working with werf options
|
|
||||||
|
|
||||||
Any werf option can be defined with environment variables:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/deploy@v1.1
|
|
||||||
with:
|
|
||||||
env: production
|
|
||||||
env:
|
|
||||||
WERF_LOG_VERBOSE: "on"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Inputs
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
channel:
|
|
||||||
description: 'The one of the following channel: alpha, beta, ea, stable, rock-solid'
|
|
||||||
default: 'alpha'
|
|
||||||
required: false
|
|
||||||
version:
|
|
||||||
description: 'The certain version'
|
|
||||||
required: false
|
|
||||||
env:
|
|
||||||
description: 'Specific deployment environment'
|
|
||||||
required: true
|
|
||||||
github-token:
|
|
||||||
description: 'The GitHub token used to login and to interact with Docker Github Packages'
|
|
||||||
default: ${{ github.token }}
|
|
||||||
required: false
|
|
||||||
kube-config-base64-data:
|
|
||||||
description: 'Base64 encoded kubeconfig data used for deployment, cleanup and distributed locks'
|
|
||||||
required: false
|
|
||||||
```
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
deploy:
|
|
||||||
name: Deploy
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Deploy
|
|
||||||
uses: werf/actions/deploy@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
env: production
|
|
||||||
```
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
name: werf build-and-publish
|
|
||||||
author: 'Flant'
|
|
||||||
description: 'Prepare the environment and perform deployment with werf'
|
|
||||||
branding:
|
|
||||||
color: blue
|
|
||||||
icon: anchor
|
|
||||||
inputs:
|
|
||||||
channel:
|
|
||||||
description: 'The one of the following channel: alpha, beta, ea, stable, rock-solid'
|
|
||||||
default: 'alpha'
|
|
||||||
required: false
|
|
||||||
version:
|
|
||||||
description: 'The certain version'
|
|
||||||
required: false
|
|
||||||
env:
|
|
||||||
description: 'Specific deployment environment'
|
|
||||||
required: true
|
|
||||||
github-token:
|
|
||||||
description: 'The GitHub token used to login and to interact with Docker Github Packages'
|
|
||||||
default: ${{ github.token }}
|
|
||||||
required: false
|
|
||||||
kube-config-base64-data:
|
|
||||||
description: 'Base64 encoded kubeconfig data used for deployment, cleanup and distributed locks'
|
|
||||||
required: false
|
|
||||||
runs:
|
|
||||||
using: 'node12'
|
|
||||||
main: 'index.js'
|
|
||||||
44542
deploy/index.js
44542
deploy/index.js
File diff suppressed because one or more lines are too long
@@ -5,63 +5,6 @@ ___
|
|||||||
|
|
||||||
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf dismiss`.
|
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf dismiss`.
|
||||||
|
|
||||||
## Action in Details
|
|
||||||
|
|
||||||
### werf binary setup
|
|
||||||
|
|
||||||
By default, all actions setup actual werf version for [1.1 alpha channel](https://werf.io/releases.html) (more details about channels, werf release cycle and compatibility promise [here](https://github.com/werf/werf#backward-compatibility-promise)).
|
|
||||||
Using the `channel` input the user can switch the release channel.
|
|
||||||
|
|
||||||
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/converge@v1.1
|
|
||||||
with:
|
|
||||||
channel: alpha
|
|
||||||
```
|
|
||||||
|
|
||||||
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/converge@v1.1
|
|
||||||
with:
|
|
||||||
version: v1.1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
### kubeconfig setup (*optional*)
|
|
||||||
|
|
||||||
The _kubeconfig_ may be used for deployment, cleanup, distributed locks and caches. Thus, the configuration should be added before step with the action or passed as base64 encoded data with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
* Prepare _kubeconfig_ (e.g. `cat ~/.kube/config | base64`) and save in GitHub Project Secrets (e.g. with name `KUBE_CONFIG_BASE64_DATA`).
|
|
||||||
|
|
||||||
* Pass secret with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/converge@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
|
|
||||||
### werf ci-env
|
|
||||||
|
|
||||||
This command performs _docker login_ using `github-token`, sets up predefined variables based on GitHub Workflow context.
|
|
||||||
|
|
||||||
**Note** that `github-token` is optional in this action, and the input is there in case you need to use a non-default token.
|
|
||||||
|
|
||||||
By default, action will use the token provided to your workflow.
|
|
||||||
|
|
||||||
## Working with werf options
|
|
||||||
|
|
||||||
Any werf option can be defined with environment variables:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/converge@v1.1
|
|
||||||
with:
|
|
||||||
env: production
|
|
||||||
env:
|
|
||||||
WERF_LOG_VERBOSE: "on"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Inputs
|
## Inputs
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -96,7 +39,7 @@ dismiss:
|
|||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Dismiss
|
- name: Dismiss
|
||||||
uses: werf/actions/dismiss@v1.1
|
uses: werf/actions/dismiss@v1.2
|
||||||
with:
|
with:
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
||||||
env: production
|
env: production
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ inputs:
|
|||||||
version:
|
version:
|
||||||
description: 'The certain version'
|
description: 'The certain version'
|
||||||
required: false
|
required: false
|
||||||
env:
|
env: # TODO: Remove this deprecated werf option, which is not required anymore (use WERF_ENV variable instead)
|
||||||
description: 'Specific deployment environment'
|
description: 'Specific deployment environment'
|
||||||
required: true
|
required: false
|
||||||
github-token:
|
github-token:
|
||||||
description: 'The GitHub token used to login and to interact with Docker Github Packages'
|
description: 'The GitHub token used to login and to interact with Docker Github Packages'
|
||||||
default: ${{ github.token }}
|
default: ${{ github.token }}
|
||||||
|
|||||||
64299
dismiss/index.js
64299
dismiss/index.js
File diff suppressed because one or more lines are too long
@@ -3,13 +3,13 @@
|
|||||||
</p>
|
</p>
|
||||||
___
|
___
|
||||||
|
|
||||||
By default, all actions setup actual werf version for [1.1 alpha channel](https://werf.io/releases.html) (more details about channels, werf release cycle and compatibility promise [here](https://github.com/werf/werf#backward-compatibility-promise)).
|
By default, all actions setup actual werf version for 1.2 alpha channel (more details about channels, werf release cycle and compatibility promise [here](https://werf.io/installation.html#all-changes-in-werf-go-through-all-stability-channels)).
|
||||||
Using the `channel` input the user can switch the release channel.
|
Using the `channel` input the user can switch the release channel.
|
||||||
|
|
||||||
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: werf/actions/install@v1.1
|
- uses: werf/actions/install@v1.2
|
||||||
with:
|
with:
|
||||||
channel: alpha
|
channel: alpha
|
||||||
```
|
```
|
||||||
@@ -17,9 +17,9 @@ Using the `channel` input the user can switch the release channel.
|
|||||||
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: werf/actions/install@v1.1
|
- uses: werf/actions/install@v1.2
|
||||||
with:
|
with:
|
||||||
version: v1.1.23
|
version: v1.2.9
|
||||||
```
|
```
|
||||||
|
|
||||||
## Inputs
|
## Inputs
|
||||||
@@ -46,9 +46,9 @@ werf:
|
|||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Install werf CLI
|
- name: Install werf CLI
|
||||||
uses: werf/actions/install@v1.1
|
uses: werf/actions/install@v1.2
|
||||||
|
|
||||||
# for deploy and distributed locks
|
# For deploy and distributed locks.
|
||||||
- name: Create kube config
|
- name: Create kube config
|
||||||
run: |
|
run: |
|
||||||
KUBECONFIG=$(mktemp -d)/config
|
KUBECONFIG=$(mktemp -d)/config
|
||||||
@@ -60,8 +60,8 @@ werf:
|
|||||||
- name: Run werf commands
|
- name: Run werf commands
|
||||||
run: |
|
run: |
|
||||||
source $(werf ci-env github --as-file)
|
source $(werf ci-env github --as-file)
|
||||||
werf build-and-publish
|
werf render
|
||||||
werf deploy
|
werf converge
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
WERF_ENV: production
|
WERF_ENV: production
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
name: Install werf CLI
|
name: Install werf CLI
|
||||||
author: 'Flant'
|
author: 'Flant'
|
||||||
description: 'Install actual channel werf version, like multiwerf does, or specified one'
|
description: 'Install werf CLI'
|
||||||
branding:
|
branding:
|
||||||
color: blue
|
color: blue
|
||||||
icon: anchor
|
icon: anchor
|
||||||
|
|||||||
66213
install/index.js
66213
install/index.js
File diff suppressed because one or more lines are too long
2
pack.sh
2
pack.sh
@@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
for pkg in build build-and-publish cleanup converge deploy dismiss install publish run; do ncc build src/$pkg.ts -o $pkg; done
|
for pkg in build cleanup converge dismiss install run; do ncc build src/$pkg.ts -o $pkg; done
|
||||||
|
|||||||
7530
package-lock.json
generated
7530
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
28
package.json
28
package.json
@@ -1,31 +1,31 @@
|
|||||||
{
|
{
|
||||||
"name": "werf-actions",
|
"name": "werf-actions",
|
||||||
"version": "1.1.0",
|
"version": "1.2.1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "lib",
|
"main": "lib",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.2.6",
|
"@actions/core": "^1.6.0",
|
||||||
"@actions/github": "2.x",
|
"@actions/github": "^5.0.0",
|
||||||
"@actions/tool-cache": "1.x",
|
"@actions/tool-cache": "^1.7.1",
|
||||||
"dotenv": "8.2.x",
|
"dotenv": "10.0.x",
|
||||||
"ncc": "^0.3.6",
|
"semver": "^7.3.5",
|
||||||
"semver": "^7.3.2",
|
|
||||||
"string-argv": "^0.3.1",
|
"string-argv": "^0.3.1",
|
||||||
"superagent": "^3.8.3",
|
"superagent": "^6.1.0",
|
||||||
"tmp": "^0.2.1",
|
"tmp": "^0.2.1",
|
||||||
"typescript-string-operations": "^1.4.0",
|
"typescript-string-operations": "^1.4.0",
|
||||||
"ws": ">=3.3.1"
|
"ws": ">=8.2.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^12.19.1",
|
"@types/node": "^12.19.1",
|
||||||
"@types/semver": "^7.3.4",
|
"@types/semver": "^7.3.4",
|
||||||
"@types/superagent": "^4.1.10",
|
"@types/superagent": "^4.1.10",
|
||||||
"@types/tmp": "^0.2.0",
|
"@types/tmp": "^0.2.0",
|
||||||
"@typescript-eslint/parser": "^2.8.0",
|
"@typescript-eslint/eslint-plugin": "^5.1.0",
|
||||||
"eslint": "^5.x",
|
"@typescript-eslint/parser": "^5.1.0",
|
||||||
"eslint-plugin-github": "^2.0.0",
|
"eslint": "^7.32.0",
|
||||||
|
"eslint-plugin-github": "^4.3.2",
|
||||||
"js-yaml": "^3.13.1",
|
"js-yaml": "^3.13.1",
|
||||||
"node-fetch": ">=2.6.1",
|
"node-fetch": ">=3.1.1",
|
||||||
"prettier": "^1.19.1",
|
"prettier": "^1.19.1",
|
||||||
"typescript": "^3.6.4"
|
"typescript": "^3.6.4"
|
||||||
},
|
},
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
"format": "prettier --write **/*.ts",
|
"format": "prettier --write **/*.ts",
|
||||||
"format-check": "prettier --check **/*.ts",
|
"format-check": "prettier --check **/*.ts",
|
||||||
"lint": "eslint src/**/*.ts",
|
"lint": "eslint src/**/*.ts",
|
||||||
"pack": "pack.sh",
|
"pack": "./pack.sh",
|
||||||
"all": "npm run build && npm run format && npm run lint && npm run pack"
|
"all": "npm run build && npm run format && npm run lint && npm run pack"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@@ -1,101 +0,0 @@
|
|||||||
<p align="center">
|
|
||||||
<img src="https://github.com/werf/werf/raw/master/docs/images/werf-logo.svg?sanitize=true" style="max-height:100%;" height="175">
|
|
||||||
</p>
|
|
||||||
___
|
|
||||||
|
|
||||||
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf publish`.
|
|
||||||
|
|
||||||
## Action in Details
|
|
||||||
|
|
||||||
### werf binary setup
|
|
||||||
|
|
||||||
By default, all actions setup actual werf version for [1.1 alpha channel](https://werf.io/releases.html) (more details about channels, werf release cycle and compatibility promise [here](https://github.com/werf/werf#backward-compatibility-promise)).
|
|
||||||
Using the `channel` input the user can switch the release channel.
|
|
||||||
|
|
||||||
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/publish@v1.1
|
|
||||||
with:
|
|
||||||
channel: alpha
|
|
||||||
```
|
|
||||||
|
|
||||||
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/publish@v1.1
|
|
||||||
with:
|
|
||||||
version: v1.1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
### kubeconfig setup (*optional*)
|
|
||||||
|
|
||||||
The _kubeconfig_ may be used for deployment, cleanup, distributed locks and caches. Thus, the configuration should be added before step with the action or passed as base64 encoded data with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
* Prepare _kubeconfig_ (e.g. `cat ~/.kube/config | base64`) and save in GitHub Project Secrets (e.g. with name `KUBE_CONFIG_BASE64_DATA`).
|
|
||||||
|
|
||||||
* Pass secret with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/publish@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
|
|
||||||
### werf ci-env
|
|
||||||
|
|
||||||
This command performs _docker login_ using `github-token`, sets up predefined variables based on GitHub Workflow context.
|
|
||||||
|
|
||||||
**Note** that `github-token` is optional in this action, and the input is there in case you need to use a non-default token.
|
|
||||||
|
|
||||||
By default, action will use the token provided to your workflow.
|
|
||||||
|
|
||||||
## Working with werf options
|
|
||||||
|
|
||||||
Any werf option can be defined with environment variables:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/publish@v1.1
|
|
||||||
env:
|
|
||||||
WERF_LOG_VERBOSE: "on"
|
|
||||||
WERF_TAG_CUSTOM_TAG1: tag1
|
|
||||||
WERF_TAG_CUSTOM_TAG2: tag2
|
|
||||||
```
|
|
||||||
|
|
||||||
## Inputs
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
channel:
|
|
||||||
description: 'The one of the following channel: alpha, beta, ea, stable, rock-solid'
|
|
||||||
default: 'alpha'
|
|
||||||
required: false
|
|
||||||
version:
|
|
||||||
description: 'The certain version'
|
|
||||||
required: false
|
|
||||||
github-token:
|
|
||||||
description: 'The GitHub token used to login and to interact with Docker Github Packages'
|
|
||||||
default: ${{ github.token }}
|
|
||||||
required: false
|
|
||||||
kube-config-base64-data:
|
|
||||||
description: 'Base64 encoded kubeconfig data used for deployment, cleanup and distributed locks'
|
|
||||||
required: false
|
|
||||||
```
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
publish:
|
|
||||||
name: Publish
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Publish
|
|
||||||
uses: werf/actions/publish@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
name: werf publish
|
|
||||||
author: 'Flant'
|
|
||||||
description: 'Prepare the environment and perform image publishing with werf'
|
|
||||||
branding:
|
|
||||||
color: blue
|
|
||||||
icon: anchor
|
|
||||||
inputs:
|
|
||||||
channel:
|
|
||||||
description: 'The one of the following channel: alpha, beta, ea, stable, rock-solid'
|
|
||||||
default: 'alpha'
|
|
||||||
required: false
|
|
||||||
version:
|
|
||||||
description: 'The certain version'
|
|
||||||
required: false
|
|
||||||
github-token:
|
|
||||||
description: 'The GitHub token used to login and to interact with Docker Github Packages'
|
|
||||||
default: ${{ github.token }}
|
|
||||||
required: false
|
|
||||||
kube-config-base64-data:
|
|
||||||
description: 'Base64 encoded kubeconfig data used for deployment, cleanup and distributed locks'
|
|
||||||
required: false
|
|
||||||
runs:
|
|
||||||
using: 'node12'
|
|
||||||
main: 'index.js'
|
|
||||||
44541
publish/index.js
44541
publish/index.js
File diff suppressed because one or more lines are too long
@@ -5,63 +5,6 @@ ___
|
|||||||
|
|
||||||
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf run`.
|
The action combines all the necessary steps in itself and logic may be divided into environment setup and launching `werf run`.
|
||||||
|
|
||||||
## Action in Details
|
|
||||||
|
|
||||||
### werf binary setup
|
|
||||||
|
|
||||||
By default, all actions setup actual werf version for [1.1 alpha channel](https://werf.io/releases.html) (more details about channels, werf release cycle and compatibility promise [here](https://github.com/werf/werf#backward-compatibility-promise)).
|
|
||||||
Using the `channel` input the user can switch the release channel.
|
|
||||||
|
|
||||||
> This is recommended approach to be up-to-date and to use actual werf version without changing configurations
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/run@v1.1
|
|
||||||
with:
|
|
||||||
channel: alpha
|
|
||||||
```
|
|
||||||
|
|
||||||
Withal, it is not necessary to work within release channels, and the user might specify certain werf version with `version` input.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/run@v1.1
|
|
||||||
with:
|
|
||||||
version: v1.1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
### kubeconfig setup (*optional*)
|
|
||||||
|
|
||||||
The _kubeconfig_ may be used for deployment, cleanup, distributed locks and caches. Thus, the configuration should be added before step with the action or passed as base64 encoded data with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
* Prepare _kubeconfig_ (e.g. `cat ~/.kube/config | base64`) and save in GitHub Project Secrets (e.g. with name `KUBE_CONFIG_BASE64_DATA`).
|
|
||||||
|
|
||||||
* Pass secret with `kube-config-base64-data` input:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/run@v1.1
|
|
||||||
with:
|
|
||||||
kube-config-base64-data: ${{ secrets.KUBE_CONFIG_BASE64_DATA }}
|
|
||||||
```
|
|
||||||
|
|
||||||
### werf ci-env
|
|
||||||
|
|
||||||
This command performs _docker login_ using `github-token`, sets up predefined variables based on GitHub Workflow context.
|
|
||||||
|
|
||||||
**Note** that `github-token` is optional in this action, and the input is there in case you need to use a non-default token.
|
|
||||||
|
|
||||||
By default, action will use the token provided to your workflow.
|
|
||||||
|
|
||||||
## Working with werf options
|
|
||||||
|
|
||||||
Any werf option can be defined with environment variables:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: werf/actions/run@v1.1
|
|
||||||
env:
|
|
||||||
WERF_LOG_VERBOSE: "on"
|
|
||||||
WERF_TAG_CUSTOM_TAG1: tag1
|
|
||||||
WERF_TAG_CUSTOM_TAG2: tag2
|
|
||||||
```
|
|
||||||
|
|
||||||
## Inputs
|
## Inputs
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -102,7 +45,7 @@ run:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Run
|
- name: Run
|
||||||
uses: werf/actions/run@v1.1
|
uses: werf/actions/run@v1.2
|
||||||
with:
|
with:
|
||||||
image: backend
|
image: backend
|
||||||
args: rails server
|
args: rails server
|
||||||
|
|||||||
64559
run/index.js
64559
run/index.js
File diff suppressed because one or more lines are too long
@@ -1,12 +0,0 @@
|
|||||||
import * as core from '@actions/core'
|
|
||||||
import {PrepareEnvironAndRunWerfCommand} from './common'
|
|
||||||
|
|
||||||
async function run(): Promise<void> {
|
|
||||||
try {
|
|
||||||
await PrepareEnvironAndRunWerfCommand(['build-and-publish'])
|
|
||||||
} catch (error) {
|
|
||||||
core.setFailed(error.message)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
run()
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
import * as core from '@actions/core'
|
|
||||||
import {PrepareEnvironAndRunWerfCommand} from './common'
|
|
||||||
|
|
||||||
async function run(): Promise<void> {
|
|
||||||
try {
|
|
||||||
process.env.WERF_ENV = core.getInput('env')
|
|
||||||
await PrepareEnvironAndRunWerfCommand(['deploy'])
|
|
||||||
} catch (error) {
|
|
||||||
core.setFailed(error.message)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
run()
|
|
||||||
127
src/manager.ts
127
src/manager.ts
@@ -12,9 +12,9 @@ import * as dotenv from 'dotenv'
|
|||||||
import * as werf from './werf'
|
import * as werf from './werf'
|
||||||
import {ValidateWerfVersion} from './common'
|
import {ValidateWerfVersion} from './common'
|
||||||
|
|
||||||
const WERF_API_GET_CHANNEL_VERSION_URL_METHOD =
|
const WERF_TUF_SERVER_URL = 'https://tuf.werf.io'
|
||||||
'https://werf.io/api/getChannelVersionURL'
|
const CACHE_TOOL_NAME = 'werf'
|
||||||
const WERF_API_GET_VERSION_URL_METHOD = 'https://werf.io/api/getVersionURL'
|
const CACHE_TOOL_DIR = 'werf-tools'
|
||||||
|
|
||||||
export class Manager {
|
export class Manager {
|
||||||
private readonly channel: string
|
private readonly channel: string
|
||||||
@@ -32,24 +32,44 @@ export class Manager {
|
|||||||
ValidateWerfVersion(this.version)
|
ValidateWerfVersion(this.version)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.platform.toString() === 'win32') {
|
const platform = process.platform.toString()
|
||||||
this.os = 'windows'
|
switch (platform) {
|
||||||
} else {
|
case 'linux':
|
||||||
this.os = process.platform.toString()
|
case 'darwin':
|
||||||
|
this.os = platform
|
||||||
|
break
|
||||||
|
case 'win32':
|
||||||
|
this.os = 'windows'
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
throw new Error(String.Format(`The platform ${platform} not supported`))
|
||||||
}
|
}
|
||||||
|
|
||||||
this.arch = process.arch
|
const arch = process.arch
|
||||||
|
switch (arch) {
|
||||||
|
case 'x64':
|
||||||
|
this.arch = 'amd64'
|
||||||
|
break
|
||||||
|
case 'arm64':
|
||||||
|
this.arch = 'arm64'
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
throw new Error(String.Format(`The architecture ${arch} not supported`))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Install(): Promise<void> {
|
public async Install(): Promise<void> {
|
||||||
const actualBinaryUrl = await this._getActualBinaryUrl()
|
const actualBinaryUrl = await this._getActualBinaryUrl()
|
||||||
|
|
||||||
|
const binaryName = actualBinaryUrl.substring(
|
||||||
|
actualBinaryUrl.lastIndexOf('/') + 1
|
||||||
|
)
|
||||||
const cachedPath = cache.find(
|
const cachedPath = cache.find(
|
||||||
'werf',
|
CACHE_TOOL_NAME,
|
||||||
Manager._toolVersionCacheID(actualBinaryUrl)
|
Manager._toolVersionCacheID(actualBinaryUrl)
|
||||||
)
|
)
|
||||||
if (cachedPath) {
|
if (cachedPath) {
|
||||||
this.binaryPath = path.join(cachedPath, 'werf')
|
this.binaryPath = path.join(cachedPath, binaryName)
|
||||||
} else {
|
} else {
|
||||||
this.binaryPath = await this._downloadAndCache(actualBinaryUrl)
|
this.binaryPath = await this._downloadAndCache(actualBinaryUrl)
|
||||||
}
|
}
|
||||||
@@ -62,16 +82,8 @@ export class Manager {
|
|||||||
const tmpFile = tmp.fileSync()
|
const tmpFile = tmp.fileSync()
|
||||||
const tmpFilePath = tmpFile.name
|
const tmpFilePath = tmpFile.name
|
||||||
await this.Exec(['ci-env', 'github', '--as-env-file', '-o', tmpFilePath])
|
await this.Exec(['ci-env', 'github', '--as-env-file', '-o', tmpFilePath])
|
||||||
dotenv.config({path: tmpFilePath})
|
const res = dotenv.config({path: tmpFilePath})
|
||||||
|
console.log(res.parsed)
|
||||||
fs.readFile(tmpFilePath, null, function(err, contents) {
|
|
||||||
if (err) {
|
|
||||||
console.error(err)
|
|
||||||
} else {
|
|
||||||
console.log(contents.toString())
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
tmpFile.removeCallback()
|
tmpFile.removeCallback()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,35 +115,29 @@ export class Manager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async _getActualBinaryUrl(): Promise<string> {
|
private async _getActualBinaryUrl(): Promise<string> {
|
||||||
|
if (this.version !== '') {
|
||||||
|
const version = this.version.slice('v'.length)
|
||||||
|
return this._constructReleaseUrl(version)
|
||||||
|
}
|
||||||
|
|
||||||
|
const url = `${WERF_TUF_SERVER_URL}/targets/channels/${werf.MAJOR_MINOR_GROUP}/${this.channel}`
|
||||||
try {
|
try {
|
||||||
let url: string
|
const resp = await request
|
||||||
let query: {}
|
.get(url)
|
||||||
|
.buffer(true)
|
||||||
if (this.version !== '') {
|
.parse(request.parse['application/octet-stream'])
|
||||||
url = WERF_API_GET_VERSION_URL_METHOD
|
const version = resp.body.toString().trim()
|
||||||
query = {
|
return this._constructReleaseUrl(version)
|
||||||
version: this.version,
|
|
||||||
os: this.os,
|
|
||||||
arch: this.arch
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
url = WERF_API_GET_CHANNEL_VERSION_URL_METHOD
|
|
||||||
query = {
|
|
||||||
group: werf.MAJOR_MINOR_GROUP,
|
|
||||||
channel: this.channel,
|
|
||||||
os: this.os,
|
|
||||||
arch: this.arch
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const resp = await request.get(url).query(query)
|
|
||||||
|
|
||||||
return resp.body.data.toString()
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (err.response && err.response.error) {
|
if (err.response && err.response.error) {
|
||||||
let errMessage = err.response.error.message
|
let errMessage = err.response.error.message
|
||||||
if (err.response.text) {
|
if (err.response.text) {
|
||||||
errMessage = String.Format('{0}\n{1}', errMessage, err.response.text)
|
errMessage = String.Format(
|
||||||
|
'{0}: {1}\n{2}',
|
||||||
|
url,
|
||||||
|
errMessage,
|
||||||
|
err.response.text
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
throw Error(errMessage)
|
throw Error(errMessage)
|
||||||
@@ -141,19 +147,32 @@ export class Manager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _constructReleaseUrl(version: string): string {
|
||||||
|
let ext = ''
|
||||||
|
if (this.os === 'windows') {
|
||||||
|
ext = '.exe'
|
||||||
|
}
|
||||||
|
|
||||||
|
return String.Format(
|
||||||
|
'{0}/targets/releases/{1}/{2}-{3}/bin/werf{4}',
|
||||||
|
WERF_TUF_SERVER_URL,
|
||||||
|
version,
|
||||||
|
this.os,
|
||||||
|
this.arch,
|
||||||
|
ext
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
private async _downloadAndCache(binaryUrl: string): Promise<string> {
|
private async _downloadAndCache(binaryUrl: string): Promise<string> {
|
||||||
|
const binaryName = binaryUrl.substring(binaryUrl.lastIndexOf('/') + 1)
|
||||||
const downloadedBinaryPath = await cache.downloadTool(binaryUrl)
|
const downloadedBinaryPath = await cache.downloadTool(binaryUrl)
|
||||||
const parsedDownloadedBinaryPath = path.parse(downloadedBinaryPath)
|
const cacheDownloadToolDir = path.dirname(downloadedBinaryPath)
|
||||||
const cacheDownloadToolDir = parsedDownloadedBinaryPath.dir
|
const tmpWerfVersionBinaryPath = path.join(
|
||||||
const tmpWerfVersionBinaryPath = path.join(cacheDownloadToolDir, 'werf.tmp')
|
|
||||||
const werfVersionDir = path.join(
|
|
||||||
cacheDownloadToolDir,
|
cacheDownloadToolDir,
|
||||||
parsedDownloadedBinaryPath.name
|
`${binaryName}.tmp`
|
||||||
)
|
|
||||||
const werfVersionBinaryPath = path.join(
|
|
||||||
werfVersionDir,
|
|
||||||
String.Format('werf{0}', parsedDownloadedBinaryPath.ext)
|
|
||||||
)
|
)
|
||||||
|
const werfVersionDir = path.join(cacheDownloadToolDir, CACHE_TOOL_DIR)
|
||||||
|
const werfVersionBinaryPath = path.join(werfVersionDir, binaryName)
|
||||||
|
|
||||||
// werf-x.x.x -> werf.tmp
|
// werf-x.x.x -> werf.tmp
|
||||||
// werf.tmp -> werf-x.x.x/werf
|
// werf.tmp -> werf-x.x.x/werf
|
||||||
@@ -167,7 +186,7 @@ export class Manager {
|
|||||||
|
|
||||||
await cache.cacheDir(
|
await cache.cacheDir(
|
||||||
werfVersionDir,
|
werfVersionDir,
|
||||||
'werf',
|
CACHE_TOOL_NAME,
|
||||||
Manager._toolVersionCacheID(binaryUrl)
|
Manager._toolVersionCacheID(binaryUrl)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
import * as core from '@actions/core'
|
|
||||||
import {PrepareEnvironAndRunWerfCommand} from './common'
|
|
||||||
|
|
||||||
async function run(): Promise<void> {
|
|
||||||
try {
|
|
||||||
await PrepareEnvironAndRunWerfCommand(['publish'])
|
|
||||||
} catch (error) {
|
|
||||||
core.setFailed(error.message)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
run()
|
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
export const MAJOR_MINOR_GROUP = '1.1'
|
export const MAJOR_MINOR_GROUP = '1.2'
|
||||||
export const MAJOR = 1
|
export const MAJOR = 1
|
||||||
export const MINOR = 1
|
export const MINOR = 2
|
||||||
|
|||||||
Reference in New Issue
Block a user