mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
git switch -> git checkout (#121)
* Changes * Update git.ts * rsync * Remove apt-get * Update git.ts * Update git.js * Update README.md * Update README.md * Update README.md * Integration Test Addition * README * Update integration.yml * Simplify
This commit is contained in:
parent
d3ab8ea1b9
commit
8a621223c0
28
.github/workflows/integration.yml
vendored
28
.github/workflows/integration.yml
vendored
@ -42,9 +42,35 @@ jobs:
|
||||
BASE_BRANCH: dev
|
||||
TARGET_FOLDER: montezuma2
|
||||
|
||||
|
||||
# Deploys using a container that requires you to install rsync.
|
||||
integration-container:
|
||||
needs: integration-checkout-v2
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ruby:2.6
|
||||
env:
|
||||
LANG: C.UTF-8
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Install rsync
|
||||
run: |
|
||||
apt-get update && apt-get install -y rsync
|
||||
|
||||
- name: Build and Deploy
|
||||
uses: JamesIves/github-pages-deploy-action@releases/v3-test
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
BRANCH: gh-pages
|
||||
FOLDER: integration
|
||||
BASE_BRANCH: dev
|
||||
TARGET_FOLDER: montezuma2
|
||||
|
||||
# Deploys using the CLEAN option.
|
||||
integration-clean:
|
||||
needs: [integration-checkout-v1, integration-checkout-v2]
|
||||
needs: [integration-checkout-v1, integration-checkout-v2, integration-container]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
13
README.md
13
README.md
@ -96,6 +96,19 @@ jobs:
|
||||
</p>
|
||||
</details>
|
||||
|
||||
#### Using a Container 📦
|
||||
|
||||
If you use a [container](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainer) in your workflow you may need to run an additional step to install `rsync` as this action depends on it. You can view an example of this below.
|
||||
|
||||
```yml
|
||||
- name: Install rsync
|
||||
run: |
|
||||
apt-get update && apt-get install -y rsync
|
||||
|
||||
- name: Deploy
|
||||
uses: JamesIves/github-pages-deploy-action@releases/v3
|
||||
```
|
||||
|
||||
## Configuration 📁
|
||||
|
||||
The `with` portion of the workflow **must** be configured before the action will work. You can add these in the `with` section found in the examples above. Any `secrets` must be referenced using the bracket syntax and stored in the GitHub repositories `Settings/Secrets` menu. You can learn more about setting environment variables with GitHub actions [here](https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idstepsenv).
|
||||
|
@ -7,7 +7,7 @@ jest.mock('@actions/exec', () => ({
|
||||
|
||||
describe('execute', () => {
|
||||
describe('execute', () => {
|
||||
it('should be called with the correct arguements', async() => {
|
||||
it('should be called with the correct arguments', async() => {
|
||||
await execute('echo Montezuma', './')
|
||||
|
||||
expect(exec).toBeCalledWith(
|
||||
|
@ -31,7 +31,6 @@ function init() {
|
||||
return core.setFailed("You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy.");
|
||||
}
|
||||
if (constants_1.action.build.startsWith("/") || constants_1.action.build.startsWith("./")) {
|
||||
console.log("2");
|
||||
return core.setFailed(`The deployment folder cannot be prefixed with '/' or './'. Instead reference the folder name directly.`);
|
||||
}
|
||||
yield execute_1.execute(`git init`, constants_1.workspace);
|
||||
@ -53,9 +52,7 @@ exports.init = init;
|
||||
*/
|
||||
function switchToBaseBranch() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
yield execute_1.execute(constants_1.action.baseBranch
|
||||
? `git switch ${constants_1.action.baseBranch}`
|
||||
: `git checkout --progress --force ${constants_1.action.defaultBranch}`, constants_1.workspace);
|
||||
yield execute_1.execute(`git checkout --progress --force ${constants_1.action.baseBranch ? constants_1.action.baseBranch : constants_1.action.defaultBranch}`, constants_1.workspace);
|
||||
return Promise.resolve("Switched to the base branch...");
|
||||
});
|
||||
}
|
||||
@ -68,7 +65,7 @@ function generateBranch() {
|
||||
try {
|
||||
console.log(`Creating ${constants_1.action.branch} branch... 🔧`);
|
||||
yield switchToBaseBranch();
|
||||
yield execute_1.execute(`git switch --orphan ${constants_1.action.branch}`, constants_1.workspace);
|
||||
yield execute_1.execute(`git checkout --orphan ${constants_1.action.branch}`, constants_1.workspace);
|
||||
yield execute_1.execute(`git reset --hard`, constants_1.workspace);
|
||||
yield execute_1.execute(`git commit --allow-empty -m "Initial ${constants_1.action.branch} commit."`, constants_1.workspace);
|
||||
yield execute_1.execute(`git push ${constants_1.repositoryPath} ${constants_1.action.branch}`, constants_1.workspace);
|
||||
@ -130,7 +127,7 @@ function deploy() {
|
||||
}
|
||||
// Commits to GitHub.
|
||||
yield execute_1.execute(`git add --all .`, temporaryDeploymentDirectory);
|
||||
yield execute_1.execute(`git switch -c ${temporaryDeploymentBranch}`, temporaryDeploymentDirectory);
|
||||
yield execute_1.execute(`git checkout -b ${temporaryDeploymentBranch}`, temporaryDeploymentDirectory);
|
||||
yield execute_1.execute(`git commit -m "Deploying to ${constants_1.action.branch} from ${constants_1.action.baseBranch} ${process.env.GITHUB_SHA}" --quiet`, temporaryDeploymentDirectory);
|
||||
yield execute_1.execute(`git push --force ${constants_1.repositoryPath} ${temporaryDeploymentBranch}:${constants_1.action.branch}`, temporaryDeploymentDirectory);
|
||||
// Cleans up temporary files/folders and restores the git state.
|
||||
|
13
src/git.ts
13
src/git.ts
@ -18,7 +18,6 @@ export async function init(): Promise<any> {
|
||||
}
|
||||
|
||||
if (action.build.startsWith("/") || action.build.startsWith("./")) {
|
||||
console.log("2");
|
||||
return core.setFailed(
|
||||
`The deployment folder cannot be prefixed with '/' or './'. Instead reference the folder name directly.`
|
||||
);
|
||||
@ -38,11 +37,11 @@ export async function init(): Promise<any> {
|
||||
/** Switches to the base branch.
|
||||
* @returns {Promise}
|
||||
*/
|
||||
export async function switchToBaseBranch() {
|
||||
export async function switchToBaseBranch(): Promise<any> {
|
||||
await execute(
|
||||
action.baseBranch
|
||||
? `git switch ${action.baseBranch}`
|
||||
: `git checkout --progress --force ${action.defaultBranch}`,
|
||||
`git checkout --progress --force ${
|
||||
action.baseBranch ? action.baseBranch : action.defaultBranch
|
||||
}`,
|
||||
workspace
|
||||
);
|
||||
|
||||
@ -56,7 +55,7 @@ export async function generateBranch(): Promise<any> {
|
||||
try {
|
||||
console.log(`Creating ${action.branch} branch... 🔧`);
|
||||
await switchToBaseBranch();
|
||||
await execute(`git switch --orphan ${action.branch}`, workspace);
|
||||
await execute(`git checkout --orphan ${action.branch}`, workspace);
|
||||
await execute(`git reset --hard`, workspace);
|
||||
await execute(
|
||||
`git commit --allow-empty -m "Initial ${action.branch} commit."`,
|
||||
@ -147,7 +146,7 @@ export async function deploy(): Promise<any> {
|
||||
// Commits to GitHub.
|
||||
await execute(`git add --all .`, temporaryDeploymentDirectory);
|
||||
await execute(
|
||||
`git switch -c ${temporaryDeploymentBranch}`,
|
||||
`git checkout -b ${temporaryDeploymentBranch}`,
|
||||
temporaryDeploymentDirectory
|
||||
);
|
||||
await execute(
|
||||
|
Loading…
Reference in New Issue
Block a user